Giriş yapınÜcretsiz denemeyi başlatın
Meta Tech Provider

LangChain agent'ına bir WhatsApp numarası verin

Bir LangChain agent'ı WhatsApp'ı iki parçada kullanır. Gelen mesajlar numaranın webhook'u üzerinden web rotanıza ulaşır ve rota agent'ı çalıştırır. Agent işlem yapmak için EasyCoexistence MCP araçlarını LangChain'in MCPAdapter'ı ile OAuth üzerinden yükler ya da Cloud API'yi numaranın token'ı ve phone number id değeriyle doğrudan çağırır.

1.4.0

langchain.mcp ad alanı için gereken en düşük langchain[mcp] sürümü. Bu ad alanı beta aşamasındadır.

auth="oauth"

OAuth 2.1 akışının tamamını çalıştırır: keşif, dinamik istemci kaydı, tarayıcı yönlendirmesi ve token değişimi.

131047

Alıcının son yanıtından bu yana 24 saatten fazla geçtiğinde Meta'nın verdiği hata.

LangChain agent'ı WhatsApp araçlarını nasıl yükler?

LangChain'in MCP istemcisi olan MCPAdapter ile. Bu istemci bir MCP sunucusunun araçlarını create_agent'a sıradan LangChain araçları olarak verir. langchain[mcp] paketinin 1.4.0 veya üzeri bir sürümünü gerektirir ve beta olarak işaretlidir.

Kimlik doğrulama FastMCP'ye devredilir. İstemcide auth="oauth" vermek OAuth 2.1 akışının tamamını çalıştırır: keşif, dinamik istemci kaydı, tarayıcı yönlendirmesi ve token değişimi. EasyCoexistence MCP sunucusunun beklediği de budur, bu yüzden oluşturup yapıştıracağınız bir anahtar yoktur. Varsayılan olarak token'lar bellekte durur ve her çalıştırmada tarayıcı adımı yinelenir. Token deposu olan bir FastMCP OAuth sağlayıcısı bunları çalıştırmalar arasında saklar.

Yüklendikten sonra agent araçları açıklamalarıyla görür: önce list_numbers, çünkü diğer tüm araçlar bu araçtan bir connection_id alır. Ardından send_message, send_template, list_templates, get_number_health ve diğerleri gelir.

Load the tools into an agent, from LangChain's documented pattern
from fastmcp.client import Client
from langchain.agents import create_agent
from langchain.mcp import MCPAdapter

URL = "https://easycoexistence.com/api/mcp"

async def build_agent(model: str):
    async with MCPAdapter(Client(URL, auth="oauth")) as adapter:
        tools = await adapter.list_tools()
        return create_agent(model, tools)

Gelen bir WhatsApp mesajı agent'a nasıl ulaşır?

Webhook ile, çünkü MCP bunu yapamaz. Protokol istek ve yanıt temellidir, bu yüzden bir müşteri yazdığında sunucunun istemciyi uyandırmasına izin veren hiçbir şey yoktur.

Numaranın webhook hedefini kendi uygulamanızdaki bir rotaya ayarlayın ve URL yoluna uzun, rastgele bir gizli anahtar koyun. Rota, Meta'nın doğrulama GET isteğine ham challenge değeriyle yanıt verir, her POST isteğini kabul eder, hemen 200 döndürür ve işi kuyruğa alır. Ardından bir worker payload'dan gönderen numarasını ve metni alır, agent'ı bunlarla çalıştırır. Thread id olarak gönderenin numarası kullanılır, böylece bellek müşteri başına ayrı kalır.

Gizli anahtarı X-Hub-Signature-256 başlığı yerine URL'de doğrulayın. Meta, Tech Provider'ın hiç paylaşılmayan uygulama gizli anahtarıyla imzalar, bu yüzden müşteri o başlığı doğrulayamaz.

Agent mesajı MCP üzerinden mi, Cloud API üzerinden mi göndermeli?

İkisi de çalışır, fark kuralları kimin tuttuğundadır. MCP araçları WhatsApp kurallarını açıklamalarında taşır: send_message yalnızca 24 saatlik pencere içinde çalışır, send_template ise yazmamış birine ulaşmanın yoludur. Bu açıklamaları okuyan model çoğu zaman doğru aracı seçer ve agent'ın serbestçe karar verdiği durumlarda bu işe yarar.

Agent'ın işi dardır, örneğin hep az önce yazan kişiye yanıt vermektir, böyle durumlarda numaranın token'ı ile Cloud API mesaj uç noktasına istek gönderen kendi basit aracınız daha kolaydır. O zaman pencere kontrolü kendi kodunuzda olur ve asla bozulmaması gereken bir kuralın yeri de burasıdır. Pencere dışındaki serbest metin 131047 kodlu hatayla geri döner ve müşteri hiçbir şey görmez.

Yaygın hatalar

  • MCP'nin gelen mesajları ileteceğini sanmak. Webhook rotası olmadan agent bir müşteriden hiç haber alamaz.
  • OAuth token'larını bir sunucuda bellekte bırakmak. Her yeniden başlatma tarayıcıyla yeniden giriş ister, bunları bir token deposunda saklayın.
  • Tüm müşteriler için tek bir thread kullanmak. Agent'ın belleğini gönderenin numarasına göre ayırın.
Bunu EasyCoexistence'la yapmak

Numarayı easycoexistence.com üzerinden bağlayın, webhook hedefini rotanıza ayarlayın ve MCP araçlarını tek bir OAuth girişiyle agent'a yükleyin. Numara başına aylık US$ 9'dan başlar, numara sayısı arttıkça US$ 1'e kadar düşer. İlk 3 gün ücretsizdir.

Sık sorulan sorular

Bu yalnızca Python için mi?

MCPAdapter örneği Python'dur. Webhook ve Cloud API düz HTTP olduğundan, LangChain'in çalıştığı her dil alma ve gönderme işini yapabilir.

Agent her seferinde list_numbers çağırmak zorunda mı?

Bir connection_id gerekir ve bunun tek kaynağı list_numbers aracıdır. Tek numarada agent bunu başlangıçta bir kez çağırır.

Ekip yine de telefondan yanıt verebilir mi?

Evet. Coexistence, WhatsApp Business uygulamasının çalışmasını sürdürür ve telefondan verilen yanıtlar rotanıza echo olayları olarak ulaşır. Agent bunları dikkate alabilir.

EasyCoexistence konuşmayı okuyor mu?

Hayır. Meta doğrudan rotanıza iletir ve mesaj içeriği bizim tarafımızda hiç saklanmaz. MCP araçları hesap ve numara durumunu okur.

Okumaya devam edin

Başlamaya hazır mısınız?

WhatsApp Coexistence'ı aylar değil, dakikalar içinde kurun. Uygulama telefonda çalışmaya devam eder.

Ücretsiz denemeyi başlatın

Doğrulama tarihi

LangChain agent'ı WhatsApp'ta, Cloud API ile