OpenAI Agents SDK एजंट WhatsApp वर चालवा
नंबरचे वेबहुक डेस्टिनेशन तुमच्या Python ॲपमधील एका रूटवर सेट करा. येणाऱ्या प्रत्येक मेसेजसाठी Runner.run आणि पाठवणाऱ्याच्या नंबरवर आधारित सेशन वापरून एजंट चालवा, नंतर result.final_output नंबरचे टोकन आणि phone number id वापरून Cloud API द्वारे परत पाठवा. WhatsApp Business ॲप त्याच नंबरवर चालू राहते.
SDK चे अंगभूत सेशन, फाइलवर आधारित किंवा इन-मेमरी, जे सेशन id खाली मागील संवाद लक्षात ठेवते.
सर्व्हर प्रमाणीकरणासाठी MCPServerStreamableHttp येथे httpx.Auth किंवा Authorization header स्वीकारते.
Meta च्या सध्याच्या मेसेज पाठवण्याच्या उदाहरणांत वापरलेली Graph API आवृत्ती.
WhatsApp मेसेजमधून एजंट रन कसा सुरू होतो?
तुमच्याच ॲप्लिकेशनमधील एका रूटद्वारे, ज्याला Meta कॉल करते. नंबरचे वेबहुक डेस्टिनेशन त्यावर सेट करा आणि पाथमध्ये एक लांब यादृच्छिक सीक्रेट ठेवा. हा रूट Meta च्या पडताळणी GET ला hub.challenge साधा मजकूर म्हणून परत करून उत्तर देतो, प्रत्येक POST स्वीकारतो, लगेच 200 देतो आणि काम रांगेत ठेवतो. कारण Meta हळू प्रतिसाद पुन्हा पाठवते आणि तुमचा एजंट दोनदा चालेल.
नंतर एक वर्कर पेलोडमधून पाठवणारा आणि मजकूर वाचतो आणि Runner.run कॉल करतो. पाठवणाऱ्याचा नंबर हा id असलेले सेशन द्या: SDK संभाषण त्या id खाली साठवते, त्यामुळे त्याच ग्राहकाचा पुढचा मेसेज मागच्या ठिकाणापासून पुढे जातो आणि दोन ग्राहकांचा इतिहास कधीही मिसळत नाही. सुरुवातीला SQLiteSession पुरेसे आहे; अनेक वर्कर्ससाठी SDK मध्ये Redis आणि SQLAlchemy सेशन्सही मिळतात.
येथे URL मधील सीक्रेट हेच प्रमाणीकरण आहे. Meta डिलिव्हरी Tech Provider च्या ॲप सीक्रेटने सही करते, त्यामुळे सिग्नेचर header ची पडताळणी ग्राहकाला करता येत नाही.
import os, httpx
from agents import Agent, Runner, SQLiteSession
agent = Agent(name="Front desk", instructions="Answer briefly and politely.")
URL = f"https://graph.facebook.com/v25.0/{os.environ['PHONE_NUMBER_ID']}/messages"
async def handle(sender: str, text: str) -> None:
session = SQLiteSession(sender, "whatsapp.db")
result = await Runner.run(agent, text, session=session)
async with httpx.AsyncClient() as http:
await http.post(
URL,
headers={"Authorization": f"Bearer {os.environ['WA_TOKEN']}"},
json={"messaging_product": "whatsapp", "to": sender,
"type": "text", "text": {"body": result.final_output}},
)उत्तर एजंटने नव्हे, तुमच्या कोडने का पाठवावे?
कारण कधीही मोडू नये असा एकच नियम वेळेचा आहे आणि तो प्रॉम्प्टपेक्षा कोड अधिक चांगला पाळतो. ग्राहकाने मेसेज केला की Meta 24 तासांची ग्राहक सेवा विंडो उघडते. तिच्या आत मुक्त मजकूर जातो. तिच्या बाहेर फक्त मंजूर टेम्प्लेट जाते आणि मुक्त मजकूर त्रुटी 131047 सह परत येतो.
आताच आलेल्या मेसेजला उत्तर देणारा वर्कर नेहमी विंडोच्या आत असतो, त्यामुळे result.final_output मजकूर म्हणून पाठवणे रचनेनेच सुरक्षित आहे. नंतर होणारे काम, म्हणजे दुसऱ्या सकाळचा फॉलो अप किंवा रिमाइंडर, वेगळ्या मार्गाने जावे जो टेम्प्लेट पाठवतो आणि कधीही मुक्त मजकूर नाही.
एजंटकडे तरीही टूल्स असू शकतात. ऑर्डर किंवा बुकिंग शोधण्यासाठी त्याला function tools द्या आणि WhatsApp पाठवणे वर्कर मध्ये ठेवा. त्यामुळे ॲक्सेस टोकन मॉडेल मनमानी आर्ग्युमेंट्ससह कॉल करू शकेल अशा कोणत्याही गोष्टीपासून दूर राहते.
एजंट EasyCoexistence MCP सर्व्हर वापरू शकतो का?
हो, MCPServerStreamableHttp द्वारे, पण header पेक्षा अधिक सेटअपसह. SDK params["auth"] मध्ये Authorization header किंवा httpx.Auth स्वीकारते. EasyCoexistence MCP सर्व्हर ब्राउझर साइन इन नंतर स्वतःचे OAuth टोकन देतो, dynamic client registration आणि PKCE सह, म्हणून स्थिर की अस्तित्वात नाही. MCP Python SDK मध्ये OAuthClientProvider मिळतो, जो PKCE आणि टोकन रिफ्रेशसह तो फ्लो चालवणारा HTTP auth हँडलर आहे, आणि तोच params["auth"] मध्ये जातो.
एजंटने स्वतः ठरवावे तेव्हा हे फायदेशीर आहे: नंबरची हेल्थ तपासणे, टेम्प्लेट स्टेटस वाचणे, किंवा टूल वर्णनातील नियमांनुसार send_message आणि send_template यांतून निवडणे. फक्त उत्तर देणाऱ्या फ्रंट डेस्कसाठी वरील वर्कर लहान आहे आणि त्यात बिघडण्यासारखे कमी आहे.
दोन्ही प्रकारे वेबहुक राहतो. MCP हे विनंती आणि प्रतिसाद पद्धतीचे आहे आणि ग्राहकाचा मेसेज एजंटपर्यंत फक्त Meta कॉल करते त्या रूटमार्फतच पोहोचू शकतो.
सामान्य चुका
- Meta ला 200 परत देण्यापूर्वी एजंट चालवणे. हळू प्रतिसाद पुन्हा पाठवला जातो आणि ग्राहकाला दोन उत्तरे मिळतात.
- सर्व ग्राहकांसाठी एकच सेशन वापरणे. ते पाठवणाऱ्याच्या नंबरवर आधारित ठेवा, नाहीतर इतिहास मिसळतो.
- उशिरा होणाऱ्या फॉलो अपमधून मुक्त मजकूर पाठवणे. 24 तासांनंतर तो त्रुटी 131047 सह अयशस्वी होतो; त्याऐवजी टेम्प्लेट पाठवा.
easycoexistence.com वर नंबर कनेक्ट करा, वेबहुक डेस्टिनेशन तुमच्या रूटवर सेट करा आणि टोकन व phone number id डॅशबोर्डवरून वाचा. प्रति नंबर दरमहा US$ 9 पासून, नंबर वाढल्यावर US$ 1 पर्यंत कमी होते, पहिले 3 दिवस मोफत.
वारंवार विचारले जाणारे प्रश्न
यासाठी OpenAI च्या होस्टेड MCP टूलची गरज आहे का?
नाही. वर्कर Runner.run वापरून एजंट स्थानिकरीत्या चालवतो आणि WhatsApp बाजू म्हणजे तुमचा कोड करणारी साधी HTTPS कॉल आहे.
मी कोणती Graph API आवृत्ती वापरावी?
Meta ची सध्याची उदाहरणे v25.0 वापरतात. तुमच्या कोडमध्ये एकाच ठिकाणी आवृत्ती निश्चित करा, म्हणजे अपग्रेड हा एका ओळीचा बदल ठरतो.
एखादी व्यक्ती फोनवरून ताबा घेऊ शकते का?
हो. Coexistence मुळे WhatsApp Business ॲप चालू राहते आणि फोनवरून दिलेले उत्तर तुमच्या रूटवर echo इव्हेंट म्हणून येते, ज्याचा वापर वर्कर एजंट थांबवण्यासाठी करू शकतो.
EasyCoexistence संभाषण साठवते का?
नाही. Meta थेट तुमच्या रूटवर डिलिव्हर करते. सेशन जे काही साठवते ते तुमच्याच डेटाबेसमध्ये राहते.
पुढे वाचा
सुरुवात करण्यासाठी तयार आहात?
WhatsApp Coexistence काही मिनिटांत सेट करा, काही महिन्यांत नाही. ॲप फोनवर काम करत राहते.
मोफत ट्रायल सुरू करापडताळले: