Vercel AI SDK सह WhatsApp एजंट तयार करा
येणारे मेसेज नंबरच्या वेबहुक गंतव्य म्हणून सेट केलेल्या रूट हँडलरकडे पोहोचतात. हँडलर generateText कॉल करतो आणि उत्तर Cloud API मार्फत पाठवतो. नंबरवर कृती करणाऱ्या टूल्ससाठी, @ai-sdk/mcp मधील createMCPClient हा EasyCoexistence MCP सर्व्हरशी HTTP वर जोडला जातो आणि authProvider द्वारे OAuth ने साइन इन करतो.
createMCPClient पुरवणारे पॅकेज, म्हणजे AI SDK चा MCP क्लायंट.
AI SDK च्या MCP HTTP ट्रान्सपोर्टवर authProvider देऊन OAuth वापरता येते.
WhatsApp Business ॲप आणि Cloud API दोन्हीसह वापरल्या जाणाऱ्या नंबरसाठी निश्चित थ्रुपुट.
रूट हँडलरला WhatsApp मेसेज कसे मिळतात?
एकाच रूटवर दोन मेथड ठेवून, आणि पाथमध्ये लांब यादृच्छिक सीक्रेट ठेवून ते नंबरचे वेबहुक गंतव्य म्हणून सेट केले जाते.
GET हा Meta च्या पडताळणीला उत्तर देतो. क्वेरीमधून hub.mode, hub.verify_token आणि hub.challenge वाचा, टोकन जुळवा आणि challenge साध्या मजकुराच्या स्वरूपात परत करा. ते JSON हेल्परमधून परत करणे ही नेहमीची चूक आहे: मजकुराभोवती अवतरणचिन्हे येतात आणि Meta डिलिव्हरी सुरूच करत नाही.
POST इव्हेंट स्वीकारतो. 200 लगेच परत करा आणि मॉडेल कॉल नंतर करा, कारण Meta हळू प्रतिसादांवर पुन्हा प्रयत्न करते आणि कोल्ड स्टार्टमध्ये मॉडेल जागेवरच चालवल्यास एकाच मेसेजला दोनदा उत्तर जाऊ शकते. प्रतिसाद पाठवल्यावर फंक्शन संपवणाऱ्या प्लॅटफॉर्मवर काम क्यूकडे द्या किंवा प्रतिसादानंतरच्या कामासाठी प्लॅटफॉर्मची सुविधा वापरा.
पाथमधील सीक्रेट हेच ऑथेंटिकेशन आहे. Meta प्रत्येक डिलिव्हरीवर Tech Provider च्या ॲप सीक्रेटने सही करते, त्यामुळे X-Hub-Signature-256 हेडर तुमच्या बाजूने तपासता येत नाही.
AI SDK WhatsApp टूल्स कसे लोड करते?
@ai-sdk/mcp मधील createMCPClient आणि HTTP ट्रान्सपोर्टद्वारे, ज्याची शिफारस AI SDK चे दस्तऐवज प्रोडक्शनसाठी करतात. ट्रान्सपोर्टला सर्व्हर यूआरएल आणि authProvider द्यावा लागतो. EasyCoexistence MCP सर्व्हरला authProvider द्वारे OAuth मार्फतच अधिकृत केले जाते: तो OAuth मेटाडेटा प्रकाशित करतो, डायनॅमिक क्लायंट नोंदणी आणि PKCE समर्थित करतो आणि साइन इननंतर स्वतःचे टोकन देतो. हेडरमध्ये ठेवायची कोणतीही API की नाही.
क्लायंटची टूल्स थेट generateText किंवा streamText मध्ये जातात. मग मॉडेलला list_numbers, send_message, send_template, get_number_health आणि इतर टूल्स दिसतात, ज्यांच्या वर्णनात 24 तासांची विंडो नमूद केलेली असते. AI SDK च्या दस्तऐवजांनुसार काम संपल्यावर क्लायंट बंद करा: स्ट्रीममध्ये onEnd कॉलबॅकमध्ये, अन्यथा finally ब्लॉकमध्ये.
जिथे निर्णय मॉडेलने घ्यायचा आहे तिथे हे वापरा. नुकत्याच आलेल्या मेसेजला उत्तर देण्यासाठी हँडलरमधून थेट Cloud API कॉल करणे सोपे आहे.
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();
}नंबर Coexistence वर असल्यामुळे काय बदलते?
कोडला दोन गोष्टी माहीत असायला हव्यात. पहिली, संभाषणात आधीच एखादी व्यक्ती असू शकते. नंबरवर WhatsApp Business ॲप चालूच राहते आणि फोनवर टाइप केलेले प्रत्येक उत्तर रूटवर इको इव्हेंट म्हणून येते. इको आल्यानंतर त्या संपर्कासाठी मॉडेल थांबवणारा हँडलर माणसाच्या उत्तरावर मॉडेलला बोलू देत नाही.
दुसरी, नंबरसाठी पाठवण्याची मर्यादा निश्चित 20 मेसेज प्रति सेकंद आहे. संवादी एजंट त्याच्या जवळपासही जात नाही, पण संपर्कांच्या यादीवर Promise.all वापरून लिहिलेला ब्रॉडकास्ट लूप तिथे पोहोचतो, म्हणून तो बॅचमध्ये पाठवा.
बाकी सर्व काही नेहमीचे Cloud API आहे. ग्राहकाच्या शेवटच्या मेसेजनंतर 24 तासांत मुक्त मजकूर चालतो. त्यानंतर फक्त मंजूर टेम्प्लेट जाते, आणि मुक्त मजकूर त्रुटी 131047 देतो, ग्राहकाला काहीही दिसत नाही.
सामान्य चुका
- challenge JSON रिस्पॉन्स हेल्परने परत करणे. भोवतीच्या अवतरणचिन्हांमुळे Meta ची तपासणी अपयशी ठरते.
- Meta ला प्रतिसाद देण्यापूर्वी generateText चालवणे. कोल्ड स्टार्टवर पुन्हा प्रयत्नामुळे दुसरे उत्तर तयार होते.
- MCP क्लायंट बंद करायला विसरणे. प्लॅटफॉर्म तो बंद करेपर्यंत प्रत्येक विनंतीमागे एक कनेक्शन उघडे राहते.
easycoexistence.com वर नंबर कनेक्ट करा, वेबहुक गंतव्य म्हणून तुमचा रूट हँडलर सेट करा आणि एका OAuth साइन इनने MCP क्लायंट जोडा. US$ 9 प्रति नंबर प्रति महिन्यापासून, नंबर वाढतील तसे US$ 1 पर्यंत, पहिले 3 दिवस मोफत.
वारंवार विचारले जाणारे प्रश्न
हे फक्त Vercel वरच चालते का?
नाही. AI SDK ही TypeScript लायब्ररी आहे, आणि HTTPS देणाऱ्या तसेच GET व POST ला उत्तर देणाऱ्या कोणत्याही होस्टवर रूट चालू शकतो.
मला MCP क्लायंटची गरज आहे का?
उत्तर देण्यासाठी नाही. नंबरच्या टोकनसह Cloud API च्या मेसेज एंडपॉइंटवर केलेला fetch ते काम करतो. काय करायचे ते मॉडेल ठरवते तेव्हा MCP चा उपयोग होतो.
मॉडेल कोणत्या प्रोव्हायडरचे असू शकते?
AI SDK समर्थित करत असलेल्या कोणत्याही. WhatsApp ची बाजू मॉडेलपासून स्वतंत्र आहे, त्यामुळे प्रोव्हायडर बदलल्यास रूट किंवा Cloud API कॉलला हात लावावा लागत नाही.
EasyCoexistence ला मेसेज दिसतात का?
नाही. Meta थेट तुमच्या रूटवर डिलिव्हर करते आणि मेसेजचा मजकूर आमच्या बाजूला कधीही साठवला जात नाही.
पुढे वाचा
सुरुवात करण्यासाठी तयार आहात?
WhatsApp Coexistence काही मिनिटांत सेट करा, काही महिन्यांत नाही. ॲप फोनवर काम करत राहते.
मोफत ट्रायल सुरू करापडताळले: