Dajte LangChain agentu WhatsApp broj
LangChain agent dobija WhatsApp u dve polovine. Dolazne poruke stižu na vašu web rutu preko webhooka broja, a ruta poziva agenta. Da bi delovao, agent učitava EasyCoexistence MCP alate preko LangChain-ovog MCPAdapter-a uz OAuth, ili direktno poziva Cloud API sa tokenom broja i phone number id-jem.
Minimalna verzija langchain[mcp] za langchain.mcp namespace, koji je u beta fazi.
Pokreće ceo OAuth 2.1 tok: otkrivanje, dinamičku registraciju klijenta, preusmeravanje u pregledač i razmenu tokena.
Metina greška kada je prošlo više od 24 sata od poslednjeg odgovora primaoca.
Kako LangChain agent učitava WhatsApp alate?
Preko MCPAdapter-a, LangChain-ovog MCP klijenta, koji alate MCP servera prosleđuje funkciji create_agent kao obične LangChain alate. Potreban je langchain[mcp] verzije 1.4.0 ili novije, a označen je kao beta.
Autentikaciju preuzima FastMCP. Kada na klijentu prosledite auth="oauth", pokreće se ceo OAuth 2.1 tok: otkrivanje, dinamička registracija klijenta, preusmeravanje u pregledač i razmena tokena. To je upravo ono što očekuje EasyCoexistence MCP server, pa nema ključa koji treba kreirati ili nalepiti. Podrazumevano tokeni žive u memoriji i svako pokretanje ponavlja korak u pregledaču; FastMCP OAuth provajder sa skladištem tokena čuva ih između pokretanja.
Kada su učitani, agent vidi alate zajedno sa njihovim opisima: prvo list_numbers, jer svaki drugi alat uzima connection_id iz njega, zatim send_message, send_template, list_templates, get_number_health i ostale.
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)Kako dolazna WhatsApp poruka stiže do agenta?
Preko webhooka, jer MCP to ne može. Protokol funkcioniše po principu zahteva i odgovora, pa ništa u njemu ne dozvoljava serveru da probudi klijenta kada klijent napiše poruku.
Postavite odredište webhooka broja na rutu u vašoj aplikaciji, sa dugačkom nasumičnom tajnom u putanji URL-a. Ruta odgovara na Metin verifikacioni GET sirovim challenge-om, prihvata svaki POST, odmah vraća 200 i stavlja posao u red. Worker zatim iz payloada uzima pošiljaoca i tekst i poziva agenta sa njima, uz broj pošiljaoca kao id niti, tako da memorija ostaje odvojena po klijentu.
Proveravajte tajnu u URL-u, a ne zaglavlje X-Hub-Signature-256. Meta potpisuje app secret-om Tech Providera, koji se nikada ne deli, pa klijent ne može da validira to zaglavlje.
Da li agent treba da šalje preko MCP-a ili preko Cloud API-ja?
Oba rade, a razlika je u tome ko drži pravila. MCP alati nose WhatsApp pravila u svojim opisima, na primer da send_message radi samo unutar prozora od 24 sata, a da je send_template način da se dopre do nekoga ko nije pisao. Model koji čita te opise većinu vremena bira pravi alat, a to pomaže kada agent slobodno odlučuje.
Običan sopstveni alat koji šalje na messages endpoint Cloud API-ja sa tokenom broja je jednostavniji kada je posao agenta uzak, na primer da uvek odgovori osobi koja je upravo napisala. Tada provera prozora stoji u vašem kodu, a tamo pripada pravilo koje se nikada ne sme prekršiti. Slobodan tekst izvan prozora vraća se kao greška 131047, a klijent nikada ništa ne vidi.
Česte greške
- Očekivati da MCP isporučuje dolazne poruke. Bez webhook rute agent nikada ne čuje klijenta.
- Ostaviti OAuth tokene u memoriji na serveru. Svako ponovno pokretanje traži prijavu u pregledaču; sačuvajte ih u skladištu tokena.
- Koristiti jednu nit za sve klijente. Memoriju agenta vežite za broj pošiljaoca.
Povežite broj na easycoexistence.com, podesite odredište webhooka na vašu rutu i učitajte MCP alate u agenta jednom OAuth prijavom. Od US$ 9 po broju mesečno, uz pad do US$ 1 kako dodajete brojeve, a prva 3 dana su besplatna.
Često postavljana pitanja
Da li je ovo samo za Python?
Primer sa MCPAdapter-om je u Pythonu. Webhook i Cloud API su običan HTTP, pa svaki jezik u kojem LangChain radi može da prima i šalje poruke.
Da li agent treba list_numbers svaki put?
Potreban mu je connection_id, a list_numbers je jedino mesto odakle on dolazi. Kod jednog broja agent ga poziva jednom na početku.
Može li tim i dalje da odgovara sa telefona?
Da. Coexistence održava WhatsApp Business aplikaciju u radu, a odgovori sa telefona stižu na vašu rutu kao echo događaji koje agent može da uzme u obzir.
Da li EasyCoexistence čita razgovor?
Ne. Meta isporučuje direktno na vašu rutu, a sadržaj poruka se nikada ne čuva kod nas. MCP alati čitaju stanje naloga i broja.
Nastavite sa čitanjem
Spremni da počnete?
Podesite WhatsApp Coexistence za nekoliko minuta, a ne meseci. Aplikacija nastavlja da radi na telefonu.
Započnite besplatni probni periodProvereno na