Bina ejen WhatsApp dengan Vercel AI SDK
Mesej masuk sampai ke route handler yang ditetapkan sebagai destinasi webhook bagi nombor itu. Handler memanggil generateText dan menghantar jawapan melalui Cloud API. Untuk alat yang bertindak ke atas nombor, createMCPClient daripada @ai-sdk/mcp menyambung ke pelayan MCP EasyCoexistence melalui HTTP, dan log masuk dengan OAuth menggunakan authProvider.
Pakej yang menyediakan createMCPClient, klien MCP milik AI SDK.
OAuth disokong pada pengangkutan HTTP MCP AI SDK dengan menyediakan authProvider.
Throughput tetap bagi nombor yang digunakan dengan aplikasi WhatsApp Business dan Cloud API sekali gus.
Bagaimanakah route handler menerima mesej WhatsApp?
Dengan dua kaedah pada satu route, ditetapkan sebagai destinasi webhook bagi nombor itu dengan rahsia rawak yang panjang dalam path.
GET menjawab pengesahan Meta. Baca hub.mode, hub.verify_token dan hub.challenge daripada query, banding token itu, dan pulangkan challenge sebagai teks biasa. Memulangkannya melalui pembantu JSON ialah kesilapan klasik: badan respons tiba dengan tanda petik di sekelilingnya dan Meta tidak pernah mula menghantar.
POST menerima peristiwa. Pulangkan 200 dengan cepat dan buat panggilan model selepas itu, kerana Meta mencuba semula respons yang perlahan dan cold start yang menjalankan model secara terus boleh menjawab mesej yang sama dua kali. Pada platform yang menamatkan fungsi sebaik sahaja respons dihantar, serahkan kerja itu kepada baris gilir atau mekanisme platform untuk kerja selepas respons.
Rahsia dalam path ialah pengesahan identiti. Meta menandatangani setiap penghantaran dengan rahsia aplikasi Tech Provider, jadi pengepala X-Hub-Signature-256 tidak dapat disemak di pihak anda.
Bagaimanakah AI SDK memuatkan alat WhatsApp?
Dengan createMCPClient daripada @ai-sdk/mcp dan pengangkutan HTTP, yang disyorkan oleh dokumentasi AI SDK untuk pengeluaran. Pengangkutan itu menerima URL pelayan dan authProvider, dan OAuth melalui authProvider ialah cara pelayan MCP EasyCoexistence diberi kebenaran: ia menerbitkan metadata OAuth, menyokong pendaftaran klien dinamik dan PKCE, serta mengeluarkan token sendiri selepas log masuk. Tiada kunci API untuk diletakkan dalam pengepala.
Alat klien itu terus masuk ke generateText atau streamText. Model kemudian melihat list_numbers, send_message, send_template, get_number_health dan yang lain, dengan penerangan yang menyatakan tetingkap 24 jam. Tutup klien apabila panggilan selesai, dalam callback onEnd untuk stream atau dalam blok finally untuk kes lain, seperti yang diminta oleh dokumentasi AI SDK.
Gunakannya apabila model patut membuat keputusan. Untuk membalas mesej yang baru tiba, panggilan terus ke Cloud API daripada handler lebih ringkas.
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();
}Apakah yang berubah kerana nombor itu menggunakan Coexistence?
Dua perkara yang patut diketahui oleh kod anda. Pertama, seorang manusia mungkin sudah berada dalam perbualan. Aplikasi WhatsApp Business terus berfungsi pada nombor itu, dan setiap balasan yang ditaip pada telefon sampai ke route sebagai peristiwa echo. Handler yang menjeda model bagi seseorang kenalan selepas echo menghalangnya daripada menjawab di atas suara seorang manusia.
Kedua, penghantaran dihadkan pada 20 mesej sesaat yang tetap bagi nombor itu. Ejen perbualan tidak pernah menghampirinya, tetapi gelung siaran yang ditulis dengan Promise.all pada senarai kenalan akan menghampirinya, jadi proseskan secara kelompok.
Selebihnya ialah Cloud API biasa. Dalam tempoh 24 jam selepas mesej terakhir pelanggan, teks bebas dibenarkan. Selepas itu, hanya template yang diluluskan boleh dihantar, dan teks bebas memulangkan ralat 131047 tanpa pelanggan melihat apa-apa.
Kesilapan biasa
- Memulangkan challenge dengan pembantu respons JSON. Tanda petik di sekelilingnya menggagalkan semakan Meta.
- Menjalankan generateText sebelum membalas Meta. Pada cold start, percubaan semula menghasilkan jawapan kedua.
- Terlupa menutup klien MCP. Setiap permintaan meninggalkan satu sambungan terbuka sehingga platform menamatkannya.
Sambungkan nombor anda di easycoexistence.com, tetapkan destinasi webhook ke route handler anda, dan tambah klien MCP dengan satu log masuk OAuth. Daripada US$ 9 sebulan bagi setiap nombor, jatuh kepada US$ 1 apabila anda menambah nombor, dengan 3 hari pertama percuma.
Soalan lazim
Adakah ini hanya berfungsi pada Vercel?
Tidak. AI SDK ialah pustaka TypeScript, dan route itu boleh dijalankan pada mana-mana hos yang menyediakan HTTPS dan menjawab GET serta POST.
Adakah saya memerlukan klien MCP langsung?
Tidak untuk membalas mesej. Panggilan fetch ke endpoint mesej Cloud API dengan token nombor itu sudah mencukupi. MCP berguna apabila model memilih apa yang hendak dilakukan.
Penyedia manakah yang boleh digunakan oleh model?
Mana-mana yang disokong oleh AI SDK. Bahagian WhatsApp tidak bergantung pada model, jadi menukar penyedia tidak menjejaskan route atau panggilan Cloud API.
Adakah EasyCoexistence melihat mesej itu?
Tidak. Meta menghantar terus ke route anda dan kandungan mesej tidak pernah disimpan di pihak kami.
Teruskan membaca
Sedia untuk bermula?
Sediakan WhatsApp Coexistence dalam beberapa minit, bukan berbulan-bulan. Aplikasi terus berfungsi pada telefon.
Mulakan Percubaan PercumaDisahkan pada