OpenAI Agents SDK ఏజెంట్ను WhatsAppలో ఉపయోగించండి
నంబర్ వెబ్హుక్ గమ్యాన్ని మీ Python యాప్లోని ఒక రూట్కు సెట్ చేయండి. ప్రతి ఇన్కమింగ్ మెసేజ్కు Runner.run తో ఏజెంట్ను నడపండి, పంపినవారి నంబర్ ఆధారంగా సెషన్ ఇవ్వండి. ఆపై నంబర్ టోకెన్, phone number id తో result.final_output ను Cloud API ద్వారా తిరిగి పంపండి. అదే నంబర్పై WhatsApp Business యాప్ యథావిధిగా పనిచేస్తుంది.
SDK లోని అంతర్నిర్మిత సెషన్ (ఫైల్ ఆధారితం లేదా మెమరీలో) సెషన్ id కింద గత సంభాషణ భాగాలను గుర్తుంచుకుంటుంది.
సర్వర్ ప్రమాణీకరణ కోసం MCPServerStreamableHttp ఇక్కడ httpx.Auth ను లేదా Authorization హెడర్ను అంగీకరిస్తుంది.
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 యాప్ సీక్రెట్తో సంతకం చేస్తుంది, కాబట్టి సిగ్నేచర్ హెడర్ను కస్టమర్ ధృవీకరించలేరు.
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 ద్వారా, కానీ హెడర్ కంటే ఎక్కువ సెటప్తో. SDK params["auth"] లో Authorization హెడర్ను లేదా httpx.Auth ను అంగీకరిస్తుంది. EasyCoexistence MCP సర్వర్ బ్రౌజర్ సైన్-ఇన్ తర్వాత డైనమిక్ క్లయింట్ రిజిస్ట్రేషన్, PKCE తో తన సొంత OAuth టోకెన్లను జారీ చేస్తుంది, కాబట్టి స్థిరమైన కీ ఉండదు. MCP Python SDK లో OAuthClientProvider ఉంది, అది PKCE, టోకెన్ రిఫ్రెష్తో ఆ ప్రక్రియను నడిపే HTTP auth హ్యాండ్లర్, అదే params["auth"] లో పెట్టాలి.
ఏజెంట్ స్వయంగా నిర్ణయించాల్సినప్పుడు ఇది విలువైనది: నంబర్ హెల్త్ చూడటం, టెంప్లేట్ స్టేటస్ చదవడం, లేదా టూల్ వివరణల్లోని నియమాల ప్రకారం send_message, send_template మధ్య ఎంచుకోవడం. కేవలం సమాధానాలు ఇచ్చే ఫ్రంట్ డెస్క్కు పైన చెప్పిన వర్కర్ చిన్నది, తప్పులకు అవకాశం తక్కువ.
ఏ మార్గంలోనైనా వెబ్హుక్ ఉండాల్సిందే. MCP అభ్యర్థన మరియు ప్రతిస్పందన విధానం, కస్టమర్ మెసేజ్ ఏజెంట్కు చేరగలిగేది Meta పిలిచే రూట్ ద్వారా మాత్రమే.
సాధారణ పొరపాట్లు
- Meta కు 200 ఇవ్వకముందే ఏజెంట్ను నడపడం. నెమ్మదైన ప్రతిస్పందనను Meta మళ్లీ ప్రయత్నిస్తుంది, కస్టమర్కు రెండు సమాధానాలు వెళ్తాయి.
- ప్రతి కస్టమర్కు ఒకే సెషన్ వాడటం. పంపినవారి నంబర్ ఆధారంగా సెషన్ ఇవ్వండి, లేకపోతే చరిత్రలు కలిసిపోతాయి.
- ఆలస్యమైన ఫాలో అప్ స్వేచ్ఛా రూప టెక్స్ట్ పంపేలా వదిలేయడం. 24 గంటల తర్వాత అది 131047 తో విఫలమవుతుంది; బదులుగా టెంప్లేట్ పంపండి.
easycoexistence.com లో నంబర్ను కనెక్ట్ చేయండి, వెబ్హుక్ గమ్యాన్ని మీ రూట్కు సెట్ చేయండి, డాష్బోర్డ్ నుంచి టోకెన్, phone number id చదవండి. నంబర్కు నెలకు US$ 9 నుంచి, నంబర్లు పెరిగే కొద్దీ US$ 1 వరకు తగ్గుతుంది, మొదటి 3 రోజులు ఉచితం.
తరచుగా అడిగే ప్రశ్నలు
దీనికి OpenAI Responses API హోస్టెడ్ MCP టూల్ అవసరమా?
లేదు. వర్కర్ ఏజెంట్ను Runner.run తో స్థానికంగా నడుపుతుంది, WhatsApp వైపు మీ కోడ్ చేసే సాధారణ HTTPS కాల్ మాత్రమే.
నేను ఏ Graph API వెర్షన్ వాడాలి?
Meta ప్రస్తుత ఉదాహరణలు v25.0 వాడుతున్నాయి. వెర్షన్ను మీ కోడ్లో ఒకే చోట సెట్ చేయండి, అప్పుడు అప్గ్రేడ్ ఒక లైన్ మార్పు అవుతుంది.
ఫోన్ నుంచి ఒక వ్యక్తి బాధ్యత తీసుకోగలరా?
అవును. Coexistence వల్ల WhatsApp Business యాప్ పనిచేస్తూనే ఉంటుంది, ఫోన్ నుంచి ఇచ్చిన సమాధానం మీ రూట్కు ఎకో ఈవెంట్గా చేరుతుంది, దాంతో వర్కర్ ఏజెంట్ను పాజ్ చేయవచ్చు.
EasyCoexistence సంభాషణను నిల్వ చేస్తుందా?
లేదు. Meta నేరుగా మీ రూట్కు డెలివరీ చేస్తుంది. సెషన్ నిల్వ చేసేదంతా మీ సొంత డేటాబేస్లోనే ఉంటుంది.
చదవడం కొనసాగించండి
ప్రారంభించడానికి సిద్ధంగా ఉన్నారా?
నెలల్లో కాదు, నిమిషాల్లో WhatsApp Coexistence సెటప్ చేయండి. యాప్ ఫోన్లో పనిచేస్తూనే ఉంటుంది.
ఉచిత ట్రయల్ ప్రారంభించండిధృవీకరించిన తేదీ