OpenAI Agents SDK agent එකක් WhatsApp මත ධාවනය කරන්න
අංකයේ webhook destination එක ඔබේ Python යෙදුමේ route එකකට සකසන්න. ලැබෙන සෑම පණිවිඩයකටම Runner.run සමඟ agent ධාවනය කරන්න, යවන්නාගේ අංකය key කරගත් session එකක් භාවිතා කරන්න. ඉන්පසු result.final_output එක අංකයේ token එක සහ phone_number_id භාවිතයෙන් Cloud API හරහා ආපසු යවන්න. එම අංකයේම WhatsApp Business යෙදුම දිගටම ක්රියා කරයි.
SDK හි ඇති session එක, file-backed හෝ in-memory, session id එකක් යටතේ පෙර හුවමාරු මතක තබාගනී.
MCPServerStreamableHttp හට server සත්යාපනය සඳහා httpx.Auth එකක් හෝ Authorization header එකක් භාර ගත හැක.
Meta හි වත්මන් send message උදාහරණවල භාවිතා වන Graph API අනුවාදය.
WhatsApp පණිවිඩයක් agent run එකක් බවට පත්වන්නේ කෙසේද?
Meta ඇමතීමට ඔබේම යෙදුමේ ඇති route එකක් හරහා ය. අංකයේ webhook destination එක එයට සකසන්න, path එකේ දිගු අහඹු secret එකක් සහිතව. Route එක Meta ගේ සත්යාපන GET එකට hub.challenge plain text ලෙස ආපසු දී පිළිතුරු දෙයි, සෑම POST එකක්ම භාර ගනී, වහාම 200 ප්රතිචාරය දී වැඩය queue කරයි. මන්ද Meta මන්දගාමී ප්රතිචාර නැවත යවන අතර agent දෙවරක් ධාවනය වීමට ඉඩ ඇත.
ඉන්පසු worker එක payload එකෙන් යවන්නා සහ පෙළ කියවා Runner.run ඇමතේ. යවන්නාගේ අංකය id ලෙස ඇති session එකක් ලබා දෙන්න: SDK එක සංවාදය එම id යටතේ ගබඩා කරන නිසා, එම පාරිභෝගිකයාගෙන් ලැබෙන ඊළඟ පණිවිඩය අවසන් වූ තැනින් ඉදිරියට යයි, පාරිභෝගිකයන් දෙදෙනෙකු කිසිදා ඉතිහාසයක් බෙදා නොගනී. ආරම්භයට SQLiteSession ප්රමාණවත් ය; worker කිහිපයක් සඳහා SDK එක Redis සහ SQLAlchemy session ද සපයයි.
URL එකේ ඇති secret එක මෙහි සත්යාපනය වේ. Meta බෙදාහැරීම් සිහි කරන්නේ Tech Provider ගේ යෙදුම් secret එකෙන් ය, එබැවින් signature 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}},
)පිළිතුර යැවිය යුත්තේ agent නොව ඔබේ කේතය වන්නේ ඇයි?
කිසිදා කඩ නොකළ යුතු එකම නීතිය කාලය පිළිබඳ නීතියක් වන අතර, එය prompt එකකට වඩා කේතයෙන් හොඳින් බලාත්මක කළ හැකි නිසා ය. පාරිභෝගිකයෙකු ලියූ විට Meta පැය 24 ක පාරිභෝගික සේවා කවුළුවක් විවෘත කරයි. එය තුළ නිදහස් පෙළ යවා හැක. එයින් පිටත අනුමත template එකක් පමණක් යවා හැකි අතර, නිදහස් පෙළ 131047 දෝෂයෙන් ආපසු එයි.
දැන් ලැබුණු පණිවිඩයට පිළිතුරු දෙන worker එක සැමවිටම කවුළුව තුළ සිටින බැවින්, result.final_output පෙළක් ලෙස යැවීම ස්වභාවයෙන්ම ආරක්ෂිත ය. පසුව සිදුවන වැඩ, එනම් පසුදින උදේ follow up එකක් හෝ සිහිකැඳවීමක්, template එකක් යවන වෙනම මාර්ගයකින් යා යුතු අතර කිසිවිට නිදහස් පෙළ නොයැවිය යුතු ය.
Agent හට තවමත් tools තිබිය හැක. ඇණවුමක් හෝ වෙන්කිරීමක් වැනි දේ සෙවීමට function tools ලබා දී, WhatsApp යැවීම worker එකේ තබන්න. එවිට access token එක, model එකට අත්තනෝමතික arguments සමඟ ඇමතිය හැකි කිසිවකින් ඉවත්ව පවතී.
Agent එකට EasyCoexistence MCP server එක භාවිතා කළ හැකිද?
හැක, MCPServerStreamableHttp හරහා, header එකකට වඩා වැඩි සැකසුමක් සමඟ. SDK එක params["auth"] තුළ Authorization header එකක් හෝ httpx.Auth එකක් භාර ගනී. EasyCoexistence MCP server එක browser පුරනය වීමකින් පසු dynamic client registration සහ PKCE සමඟ තමන්ගේම OAuth token නිකුත් කරයි, එබැවින් static key එකක් නොපවතී. MCP Python SDK එක OAuthClientProvider සපයයි. එය PKCE සහ token refresh සහිතව එම ක්රියාවලිය ධාවනය කරන HTTP auth handler එකකි, එය params["auth"] තුළ තබන්නේ ය.
Agent එක තනිවම තීරණය කළ යුතු විට එය වටී: අංකයක health පරීක්ෂා කිරීම, template එකේ status එක කියවීම, හෝ tool විස්තරවල නීති අනුව send_message සහ send_template අතර තේරීම. පිළිතුරු දීම පමණක් කරන ඉදිරිපත් මේසයකට, ඉහත worker එක කෙටි වන අතර වැරදීමට ඇති ඉඩ අඩු ය.
කෙසේ වුවත් webhook එක පවතී. MCP යනු request සහ ප්රතිචාරය ය, පාරිභෝගිකයෙකුගේ පණිවිඩයකට agent වෙත ළඟා විය හැක්කේ Meta ඇමතෙන route එක හරහා පමණි.
සාමාන්ය වැරදි
- Meta වෙත 200 ආපසු දීමට පෙර agent ධාවනය කිරීම. මන්දගාමී ප්රතිචාරයක් නැවත යවනු ලබන අතර පාරිභෝගිකයාට පිළිතුරු දෙකක් ලැබේ.
- සියලු පාරිභෝගිකයන්ට එකම session එකක් භාවිතා කිරීම. එය යවන්නාගේ අංකය key කරන්න, නැතහොත් ඉතිහාස මිශ්ර වේ.
- ප්රමාද වූ follow up එකකින් නිදහස් පෙළ යැවීමට ඉඩ දීම. පැය 24 න් පසු එය 131047 සමඟ අසාර්ථක වේ; ඒ වෙනුවට template එකක් යවන්න.
easycoexistence.com හිදී අංකය සම්බන්ධ කර, webhook destination එක ඔබේ route එකට සකසා, dashboard එකෙන් token එක සහ phone_number_id කියවන්න. එක් අංකයකට මසකට US$ 9 සිට, අංක එකතු වන විට US$ 1 දක්වා අඩු වේ, පළමු දින 3 නොමිලේ trial කාලයකි.
නිතර අසන ප්රශ්න
මේ සඳහා OpenAI Responses API හි hosted MCP tool එක අවශ්යද?
නැත. Worker එක agent එක Runner.run සමඟ දේශීයව ධාවනය කරයි, WhatsApp පැත්ත ඔබේ කේතය කරන සරල HTTPS call එකකි.
මම භාවිතා කළ යුත්තේ කුමන Graph API අනුවාදයද?
Meta ගේ වත්මන් උදාහරණවල v25.0 භාවිතා වේ. උත්ශ්රේණි කිරීම එක පේළියක වෙනසක් වන පරිදි, අනුවාදය ඔබේ කේතයේ එක තැනක සවි කරන්න.
දුරකථනයෙන් පුද්ගලයෙකුට භාර ගත හැකිද?
හැක. Coexistence මගින් WhatsApp Business යෙදුම දිගටම ක්රියා කරයි, දුරකථනයෙන් දෙන පිළිතුරක් ඔබේ route එකට echo event එකක් ලෙස පැමිණේ, එය භාවිතයෙන් worker එකට agent එක නවත්වා ගත හැක.
EasyCoexistence සංවාදය ගබඩා කරයිද?
නැත. Meta ඔබේ route එකට කෙලින්ම බෙදාහරියි. Session එක ගබඩා කරන ඕනෑම දෙයක් ඇත්තේ ඔබේම database එකේ ය.
තවදුරටත් කියවන්න
ආරම්භ කිරීමට සූදානම්ද?
WhatsApp Coexistence මිනිත්තු කිහිපයකින් සකසන්න, මාස ගණනකින් නොව. යෙදුම දුරකථනයේ දිගටම ක්රියා කරයි.
නොමිලේ trial කාලය ආරම්භ කරන්නසත්යාපනය කළේ