OpenAI Agents SDK ஏஜென்ட்டை WhatsApp-இல் இயக்குங்கள்
எண்ணின் வெப்ஹூக் இலக்கை உங்கள் Python ஆப்பில் உள்ள ஒரு ரூட்டுக்கு அமைக்கவும். வரும் ஒவ்வொரு மெசேஜுக்கும், அனுப்புநரின் எண்ணை அடிப்படையாகக் கொண்ட செஷனுடன் Runner.run மூலம் ஏஜென்ட்டை இயக்குங்கள். பிறகு result.final_output-ஐ அந்த எண்ணின் டோக்கன் மற்றும் phone number id உடன் Cloud API வழியாக அனுப்புங்கள். அதே எண்ணில் WhatsApp Business ஆப் தொடர்ந்து செயல்படும்.
SDK-இன் உள்ளமைந்த செஷன், கோப்பு அடிப்படையிலோ நினைவகத்திலோ, செஷன் ஐடியின் கீழ் முந்தைய உரையாடல்களை நினைவில் வைத்திருக்கும்.
MCPServerStreamableHttp இங்கு சர்வர் அங்கீகாரத்துக்கு httpx.Auth அல்லது Authorization header-ஐ ஏற்கும்.
Meta-வின் தற்போதைய send message எடுத்துக்காட்டுகளில் பயன்படுத்தப்படும் Graph API பதிப்பு.
WhatsApp மெசேஜ் எப்படி ஏஜென்ட் இயக்கமாக மாறுகிறது?
Meta அழைக்கும், உங்கள் சொந்த ஆப்பில் உள்ள ஒரு ரூட் வழியாக. எண்ணின் வெப்ஹூக் இலக்கை அதற்கு அமைக்கவும், பாதையில் நீண்ட சீரற்ற ரகசியத்தைச் சேர்க்கவும். Meta-வின் சரிபார்ப்பு GET கோரிக்கைக்கு hub.challenge-ஐ சாதாரண உரையாகத் திருப்பி அனுப்புவது, ஒவ்வொரு POST-ஐயும் ஏற்றுக்கொள்வது, உடனே 200 பதில் தந்து வேலையை வரிசையில் வைப்பது ஆகியவை இந்த ரூட்டின் பணி. மெதுவான பதில்களை Meta மீண்டும் அனுப்பும், அப்போது ஏஜென்ட் இருமுறை இயங்கிவிடும்.
பிறகு ஒரு வொர்க்கர் பேலோடிலிருந்து அனுப்புநரையும் உரையையும் படித்து Runner.run-ஐ அழைக்கும். அனுப்புநரின் எண்ணையே ஐடியாகக் கொண்ட செஷனை வழங்குங்கள்: SDK அந்த ஐடியின் கீழ் உரையாடலைச் சேமிக்கும். அதனால் அதே வாடிக்கையாளரின் அடுத்த மெசேஜ், முந்தையது நின்ற இடத்திலிருந்து தொடரும், இரு வாடிக்கையாளர்களின் வரலாறும் ஒருபோதும் கலக்காது. தொடங்க SQLiteSession போதும்; பல வொர்க்கர்களுக்கு SDK-இல் Redis மற்றும் SQLAlchemy செஷன்களும் உள்ளன.
URL-இல் உள்ள ரகசியமே இங்கு அங்கீகாரம். Meta டெலிவரிகளை Tech Provider-இன் app secret கொண்டு கையொப்பமிடுவதால், வாடிக்கையாளரால் கையொப்ப 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 சர்வர் உலாவியில் உள்நுழைந்த பிறகு, dynamic client registration மற்றும் PKCE உடன் தனது சொந்த OAuth டோக்கன்களை வழங்குகிறது, எனவே நிலையான key என்பது இல்லை. MCP Python SDK-இல் OAuthClientProvider உள்ளது. இது PKCE மற்றும் டோக்கன் புதுப்பித்தலுடன் அந்த ஓட்டத்தை இயக்கும் HTTP auth handler; அதையே params["auth"]-இல் வைக்க வேண்டும்.
ஏஜென்ட் தானே முடிவெடுக்க வேண்டிய நேரங்களில் இது பயனுள்ளது: எண்ணின் ஹெல்த்தைச் சரிபார்ப்பது, டெம்ப்ளேட் ஸ்டேட்டஸைப் படிப்பது, அல்லது கருவி விளக்கங்களில் உள்ள விதிகளின்படி send_message மற்றும் send_template இடையே தேர்வு செய்வது. பதில் மட்டும் சொல்லும் வரவேற்பு மேசைக்கு, மேலே உள்ள வொர்க்கர் குறுகியது, தவறும் குறைவு.
எப்படியிருந்தாலும் வெப்ஹூக் தேவை. MCP என்பது கோரிக்கை மற்றும் பதில் மட்டுமே; வாடிக்கையாளரின் மெசேஜ் Meta அழைக்கும் ரூட் வழியாக மட்டுமே ஏஜென்ட்டை அடைய முடியும்.
பொதுவான தவறுகள்
- Meta-க்கு 200 திருப்பும் முன் ஏஜென்ட்டை இயக்குவது. மெதுவான பதில் மீண்டும் அனுப்பப்படும், வாடிக்கையாளருக்கு இரு பதில்கள் கிடைக்கும்.
- எல்லா வாடிக்கையாளர்களுக்கும் ஒரே செஷனைப் பயன்படுத்துவது. அனுப்புநரின் எண்ணை ஐடியாக வையுங்கள், இல்லையெனில் வரலாறுகள் கலந்துவிடும்.
- தாமதமான பின்தொடர்வு ஃப்ரீ டெக்ஸ்ட் அனுப்ப விடுவது. 24 மணி நேரத்துக்குப் பிறகு அது 131047 பிழையுடன் தோல்வியடையும்; டெம்ப்ளேட்டை அனுப்புங்கள்.
easycoexistence.com-இல் எண்ணை இணையுங்கள், வெப்ஹூக் இலக்கை உங்கள் ரூட்டுக்கு அமையுங்கள், டாஷ்போர்டிலிருந்து டோக்கனையும் phone number id-ஐயும் எடுத்துக்கொள்ளுங்கள். ஒரு எண்ணுக்கு மாதம் US$ 9 முதல், எண்கள் சேர்க்கப்படும்போது US$ 1 வரை குறையும், முதல் 3 நாட்கள் இலவசம்.
அடிக்கடி கேட்கப்படும் கேள்விகள்
இதற்கு OpenAI Responses API-இன் hosted MCP கருவி தேவையா?
இல்லை. வொர்க்கர் ஏஜென்ட்டை Runner.run மூலம் உள்ளூரிலேயே இயக்கும்; WhatsApp பக்கம் உங்கள் குறியீடு செய்யும் சாதாரண HTTPS அழைப்பு மட்டுமே.
எந்த Graph API பதிப்பைப் பயன்படுத்த வேண்டும்?
Meta-வின் தற்போதைய எடுத்துக்காட்டுகள் v25.0-ஐப் பயன்படுத்துகின்றன. உங்கள் குறியீட்டில் ஒரே இடத்தில் பதிப்பை நிர்ணயியுங்கள், அப்போது மேம்படுத்துவது ஒரே வரி மாற்றமாக இருக்கும்.
போனிலிருந்து ஒருவர் பொறுப்பேற்க முடியுமா?
முடியும். Coexistence WhatsApp Business ஆப்பைத் தொடர்ந்து செயல்பட வைக்கிறது. போனில் அனுப்பிய பதில் உங்கள் ரூட்டுக்கு echo நிகழ்வாக வரும்; ஏஜென்ட்டை இடைநிறுத்த வொர்க்கர் அதைப் பயன்படுத்தலாம்.
EasyCoexistence உரையாடலைச் சேமிக்கிறதா?
இல்லை. Meta உங்கள் ரூட்டுக்கு நேரடியாக அனுப்புகிறது. செஷன் சேமிப்பவை அனைத்தும் உங்கள் சொந்த தரவுத்தளத்தில் இருக்கும்.
தொடர்ந்து படிக்கவும்
தொடங்கத் தயாரா?
மாதங்கள் ஆகாமல், சில நிமிடங்களில் WhatsApp Coexistence-ஐ அமைக்குங்கள். ஆப்ஸ் போனில் தொடர்ந்து இயங்கும்.
இலவச ட்ரையலைத் தொடங்குங்கள்இதில் சரிபார்க்கப்பட்டது: