Conectați-văÎncepeți perioada de probă gratuită
Meta Tech Provider

Construiți un agent WhatsApp cu Vercel AI SDK

Mesajele primite ajung la un route handler setat ca destinație de webhook a numărului. Handler-ul apelează generateText și trimite răspunsul prin Cloud API. Pentru uneltele care acționează asupra numărului, createMCPClient din @ai-sdk/mcp se conectează la serverul MCP EasyCoexistence prin HTTP, autentificându-se cu OAuth printr-un authProvider.

@ai-sdk/mcp

Pachetul care oferă createMCPClient, clientul MCP al AI SDK.

authProvider

OAuth este acceptat de transportul HTTP MCP al AI SDK prin furnizarea unui authProvider.

20 msg/s

Debit fix pentru un număr folosit atât cu aplicația WhatsApp Business, cât și cu Cloud API.

Cum primește route handler-ul mesajele WhatsApp?

Cu două metode pe aceeași rută, setată ca destinație de webhook a numărului, cu un secret lung și aleatoriu în cale.

GET răspunde verificării Meta. Citiți hub.mode, hub.verify_token și hub.challenge din query, comparați token-ul și returnați challenge-ul ca text simplu. Returnarea lui printr-un helper JSON este greșeala clasică: corpul ajunge cu ghilimele în jur, iar Meta nu începe niciodată livrarea.

POST primește evenimentele. Returnați 200 rapid și apelați modelul după aceea, deoarece Meta reîncearcă răspunsurile lente, iar un cold start care rulează modelul pe loc poate răspunde de două ori la același mesaj. Pe platformele care opresc funcția în momentul trimiterii răspunsului, pasați lucrul unei cozi sau mecanismului platformei pentru lucrul de după răspuns.

Secretul din cale este autentificarea. Meta semnează fiecare livrare cu app secret-ul aplicației Tech Provider, așa că antetul X-Hub-Signature-256 nu poate fi verificat de partea dumneavoastră.

Cum încarcă AI SDK uneltele WhatsApp?

Cu createMCPClient din @ai-sdk/mcp și transportul HTTP, pe care documentația AI SDK îl recomandă pentru producție. Transportul primește URL-ul serverului și un authProvider, iar OAuth printr-un authProvider este modul în care se autorizează serverul MCP EasyCoexistence: acesta publică metadatele OAuth, acceptă înregistrarea dinamică a clienților și PKCE și emite propriile token-uri după autentificare. Nu există nicio cheie API de pus într-un antet.

Uneltele clientului merg direct în generateText sau streamText. Modelul vede apoi list_numbers, send_message, send_template, get_number_health și celelalte, cu descrieri care indică fereastra de 24 de ore. Închideți clientul la finalul apelului, în callback-ul onEnd pentru un stream sau într-un bloc finally în rest, așa cum cere documentația AI SDK.

Folosiți-l acolo unde modelul trebuie să decidă. Pentru a răspunde mesajului tocmai sosit, un apel direct la Cloud API din handler este mai scurt.

MCP client over HTTP with OAuth, as the AI SDK documents it
import { createMCPClient } from "@ai-sdk/mcp";

const mcp = await createMCPClient({
  transport: {
    type: "http",
    url: "https://easycoexistence.com/api/mcp",
    authProvider, // your OAuthClientProvider implementation
  },
});

try {
  const tools = await mcp.tools();
  // pass tools to generateText({ model, tools, prompt })
} finally {
  await mcp.close();
}

Ce se schimbă pentru că numărul este pe Coexistence?

Două lucruri pe care codul trebuie să le știe. Primul: un om poate fi deja în conversație. Aplicația WhatsApp Business continuă să funcționeze pe număr, iar fiecare răspuns scris pe telefon ajunge la rută ca eveniment echo. Un handler care pune modelul în pauză pentru un contact după un echo evită să răspundă peste un om.

Al doilea: trimiterea este plafonată la 20 de mesaje pe secundă pentru număr, valoare fixă. Un agent conversațional nu se apropie niciodată de ea, dar o buclă de difuzare scrisă cu Promise.all peste o listă de contacte o atinge, așa că grupați trimiterile în loturi.

Tot restul este Cloud API obișnuit. În 24 de ore de la ultimul mesaj al clientului, textul liber este permis. După aceea trece doar un template aprobat, iar textul liber returnează eroarea 131047, fără ca clientul să vadă ceva.

Greșeli frecvente

  • Returnarea challenge-ului cu un helper de răspuns JSON. Ghilimelele din jurul lui eșuează verificarea Meta.
  • Rularea generateText înainte de a răspunde către Meta. La un cold start, reîncercarea produce un al doilea răspuns.
  • Uitarea închiderii clientului MCP. Fiecare cerere lasă o conexiune deschisă până când platforma o oprește.
Faceți acest lucru cu EasyCoexistence

Conectați numărul la easycoexistence.com, setați destinația webhook-ului la route handler-ul dumneavoastră și adăugați clientul MCP cu o singură autentificare OAuth. De la US$ 9 pe număr pe lună, scăzând la US$ 1 pe măsură ce adăugați numere, cu primele 3 zile gratuite.

Întrebări frecvente

Funcționează doar pe Vercel?

Nu. AI SDK este o bibliotecă TypeScript, iar ruta poate rula pe orice gazdă care servește HTTPS și răspunde la un GET și la un POST.

Am nevoie deloc de clientul MCP?

Nu pentru a răspunde. Un fetch către endpoint-ul de mesaje din Cloud API, cu token-ul numărului, face asta. MCP se justifică atunci când modelul alege ce să facă.

Ce furnizor poate fi modelul?

Oricare este acceptat de AI SDK. Partea WhatsApp este independentă de model, așa că schimbarea furnizorului nu afectează ruta și nici apelul către Cloud API.

Vede EasyCoexistence mesajele?

Nu. Meta livrează direct către ruta dumneavoastră, iar conținutul mesajelor nu este stocat niciodată la noi.

Continuați să citiți

Gata să începeți?

Configurați WhatsApp Coexistence în câteva minute, nu luni. Aplicația continuă să funcționeze pe telefon.

Începeți perioada de probă gratuită

Verificat la

Vercel AI SDK pe WhatsApp, Cloud API