लग इननिःशुल्क ट्रायल सुरु गर्नुहोस्
Meta Tech Provider

OpenAI Agents SDK एजेन्टलाई WhatsApp मा राख्नुहोस्

नम्बरको वेबहुक गन्तव्य तपाईंको Python एपको एउटा रुटमा सेट गर्नुहोस्। आउने प्रत्येक म्यासेजका लागि Runner.run बाट एजेन्ट चलाउनुहोस्, प्रेषकको नम्बरमा आधारित सेसनसहित। त्यसपछि result.final_output लाई नम्बरको टोकन र phone number id प्रयोग गरी Cloud API मार्फत पठाउनुहोस्। त्यही नम्बरमा WhatsApp Business एप चलिरहन्छ।

SQLiteSession

SDK को आफ्नै सेसन, फाइलमा वा मेमोरीमा आधारित, जसले सेसन id अन्तर्गत अघिल्ला चरणहरू सम्झन्छ।

params["auth"]

MCPServerStreamableHttp ले सर्भर प्रमाणीकरणका लागि यहाँ httpx.Auth वा Authorization header स्वीकार गर्छ।

v25.0

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 प्रमाणित गर्न सक्दैन।

Worker: run the agent for one message and send the answer
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 लाई टेक्स्टको रूपमा पठाउनु बनावटैले सुरक्षित छ। पछि हुने काम, जस्तै भोलिपल्टको फलोअप वा रिमाइन्डर, छुट्टै बाटो हुँदै टेम्प्लेट पठाउनुपर्छ, स्वतन्त्र टेक्स्ट कहिल्यै होइन।

एजेन्टसँग टुल्स भने हुन सक्छन्। अर्डर वा बुकिङ जस्ता कुरा खोज्न फङ्सन टुल्स दिनुहोस्, तर WhatsApp पठाउने काम वर्करमै राख्नुहोस्। यसले एक्सेस टोकनलाई मोडेलले जुनसुकै आर्गुमेन्टसहित कल गर्न सक्ने कुराभन्दा बाहिर राख्छ।

एजेन्टले EasyCoexistence MCP सर्भर प्रयोग गर्न सक्छ?

सक्छ, MCPServerStreamableHttp मार्फत, तर header भन्दा बढी सेटअपसहित। SDK ले params["auth"] मा Authorization header वा httpx.Auth दुवै स्वीकार गर्छ। EasyCoexistence MCP सर्भरले ब्राउजरबाट साइन इन गरेपछि आफ्नै OAuth टोकन जारी गर्छ, डाइनामिक क्लाइन्ट रजिस्ट्रेसन र PKCE सहित, त्यसैले स्थिर कुञ्जी हुँदैन। MCP Python SDK मा OAuthClientProvider आउँछ, जुन PKCE र टोकन रिफ्रेससहित त्यो प्रक्रिया चलाउने HTTP auth ह्यान्डलर हो, र params["auth"] मा त्यही राखिन्छ।

एजेन्टले आफैं निर्णय गर्नुपर्दा यो उपयोगी हुन्छ: नम्बरको हेल्थ जाँच्न, टेम्प्लेटको स्ट्याटस पढ्न, वा टुल विवरणका नियम अनुसार send_message र send_template मध्ये छान्न। केवल उत्तर दिने फ्रन्ट डेस्कका लागि माथिको वर्कर छोटो छ र बिग्रने ठाउँ कम छ।

जुन बाटो रोजे पनि वेबहुक रहन्छ। MCP अनुरोध र प्रतिक्रियाको प्रणाली हो, र ग्राहकको म्यासेज Meta ले कल गर्ने रुट मार्फत मात्र एजेन्टसम्म पुग्न सक्छ।

सामान्य गल्तीहरू

  • Meta लाई 200 फर्काउनुअघि नै एजेन्ट चलाउनु। ढिलो प्रतिक्रिया फेरि पठाइन्छ, र ग्राहकले दुईवटा उत्तर पाउँछ।
  • सबै ग्राहकका लागि एउटै सेसन प्रयोग गर्नु। यसलाई प्रेषकको नम्बरमा आधारित बनाउनुहोस्, नत्र इतिहास मिसिन्छ।
  • ढिलो भएको फलोअपलाई स्वतन्त्र टेक्स्ट पठाउन दिनु। 24 घण्टापछि त्यो 131047 त्रुटिसहित असफल हुन्छ, त्यसैले टेम्प्लेट पठाउनुहोस्।
EasyCoexistence मार्फत यो काम

easycoexistence.com मा नम्बर जडान गर्नुहोस्, वेबहुक गन्तव्य आफ्नो रुटमा सेट गर्नुहोस्, र ड्यासबोर्डबाट टोकन र phone number id पढ्नुहोस्। प्रति नम्बर प्रति महिना US$ 9 देखि सुरु, नम्बर थप्दै जाँदा US$ 1 सम्म घट्छ, र पहिलो 3 दिन निःशुल्क छ।

बारम्बार सोधिने प्रश्नहरू

के यसलाई OpenAI Responses API को hosted MCP tool चाहिन्छ?

चाहिँदैन। वर्करले एजेन्टलाई Runner.run बाट स्थानीय रूपमा चलाउँछ, र WhatsApp तर्फ तपाईंको कोडले गर्ने साधारण HTTPS कल मात्र हो।

मैले कुन Graph API संस्करण प्रयोग गर्नुपर्छ?

Meta का हालका उदाहरणले v25.0 प्रयोग गर्छन्। संस्करणलाई कोडको एकै ठाउँमा तोक्नुहोस्, ताकि अपग्रेड एक लाइनको परिवर्तन बनोस्।

के फोनबाट कुनै व्यक्तिले जिम्मा लिन सक्छ?

सक्छ। Coexistence ले WhatsApp Business एपलाई चलिरहन राख्छ, र फोनबाट गरिएको प्रतिक्रिया तपाईंको रुटमा echo इभेन्टको रूपमा आउँछ, जसलाई वर्करले एजेन्ट रोक्न प्रयोग गर्न सक्छ।

के EasyCoexistence ले कुराकानी भण्डारण गर्छ?

गर्दैन। Meta ले सिधै तपाईंको रुटमा डेलिभर गर्छ। सेसनले जे भण्डारण गर्छ, त्यो तपाईंकै डाटाबेसमा रहन्छ।

पढ्दै जानुहोस्

सुरु गर्न तयार हुनुहुन्छ?

महिनौं होइन, केही मिनेटमै WhatsApp Coexistence सेट अप गर्नुहोस्। एप फोनमा चलिरहन्छ।

निःशुल्क ट्रायल सुरु गर्नुहोस्

प्रमाणीकरण गरिएको

WhatsApp मा OpenAI Agents SDK, Cloud API