Mag-log inMagsimula ng Libreng Trial
Meta Tech Provider

Ilagay ang isang OpenAI Agents SDK agent sa WhatsApp

Itakda ang webhook destination ng numero sa isang route sa inyong Python app. Sa bawat papasok na mensahe, patakbuhin ang agent gamit ang Runner.run at isang session na naka-key sa numero ng nagpadala, pagkatapos ay ipadala ang result.final_output pabalik sa pamamagitan ng Cloud API gamit ang token ng numero at phone number id. Patuloy na gumagana ang WhatsApp Business app sa parehong numero.

SQLiteSession

Ang built-in na session ng SDK, file-backed o in-memory, na nakakaalala ng mga naunang turn sa ilalim ng isang session id.

params["auth"]

Tumatanggap ang MCPServerStreamableHttp dito ng httpx.Auth, o ng Authorization header, para sa server authentication.

v25.0

Ang bersyon ng Graph API na ginagamit sa kasalukuyang mga halimbawa ng Meta sa pagpapadala ng mensahe.

Paano nagiging agent run ang isang mensahe sa WhatsApp?

Sa pamamagitan ng isang route sa sarili ninyong application na tinatawag ng Meta. Itakda ang webhook destination ng numero sa route na iyon, na may mahaba at random na secret sa path. Sinasagot ng route ang verification GET ng Meta sa pagbabalik ng hub.challenge bilang plain text, tinatanggap ang bawat POST, sumasagot agad ng 200 at ipinapasok sa queue ang trabaho, dahil nire-retry ng Meta ang mabagal na sagot at dalawang beses ninyong mapapatakbo ang agent.

Pagkatapos, babasahin ng isang worker ang nagpadala at ang teksto mula sa payload at tatawagin ang Runner.run. Magpasa ng session na ang id ay ang numero ng nagpadala: iniimbak ng SDK ang usapan sa ilalim ng id na iyon, kaya ang susunod na mensahe ng parehong customer ay magpapatuloy kung saan huminto ang huli, at hindi kailanman magbabahagi ng history ang dalawang customer. Sapat na ang SQLiteSession para magsimula; may kasama ring Redis at SQLAlchemy sessions ang SDK para sa maraming worker.

Ang secret sa URL ang nagsisilbing authentication dito. Nilalagdaan ng Meta ang mga delivery gamit ang app secret ng Tech Provider, kaya hindi ma-validate ng customer ang signature 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}},
        )

Bakit dapat ang inyong code ang magpadala ng sagot, hindi ang agent?

Dahil ang nag-iisang patakarang hindi dapat labagin ay patakaran sa oras, at mas mahusay itong ipatupad ng code kaysa ng isang prompt. Nagbubukas ang Meta ng 24 oras na customer service window kapag sumulat ang isang customer. Sa loob nito, pumapasok ang free-form text. Sa labas nito, approved template lamang ang pumapasok, at bumabalik ang free-form text na may error 131047.

Ang worker na sumasagot sa mensaheng kararating pa lang ay laging nasa loob ng window, kaya ligtas sa disenyo ang pagpapadala ng result.final_output bilang teksto. Ang trabahong nangyayari nang mas huli, tulad ng follow up kinabukasan ng umaga o isang paalala, ay dapat dumaan sa hiwalay na landas na nagpapadala ng template at hindi kailanman ng free-form text.

Maaari pa ring magkaroon ng mga tool ang agent. Bigyan po ninyo ito ng function tools para sa paghahanap ng impormasyon, tulad ng order o booking, at panatilihin ang pagpapadala sa WhatsApp sa worker. Pinipigilan din nito na mapunta ang access token sa anumang maaaring tawagin ng model gamit ang kahit anong argumento.

Magagamit ba ng agent ang EasyCoexistence MCP server?

Oo, sa pamamagitan ng MCPServerStreamableHttp, pero mas maraming setup kaysa sa isang header. Tumatanggap ang SDK ng Authorization header o ng httpx.Auth sa params["auth"]. Naglalabas ang EasyCoexistence MCP server ng sarili nitong OAuth token pagkatapos ng sign-in sa browser, na may dynamic client registration at PKCE, kaya walang static key. May kasamang OAuthClientProvider ang MCP Python SDK, isang HTTP auth handler na nagpapatakbo ng daloy na iyon na may PKCE at token refresh, at iyon ang ilalagay sa params["auth"].

Sulit ito kapag ang agent mismo ang dapat magpasya: tingnan ang kalusugan ng isang numero, basahin ang status ng template, o pumili sa pagitan ng send_message at send_template ayon sa mga patakaran sa mga paglalarawan ng tool. Para sa front desk na sumasagot lang, mas maikli ang worker sa itaas at mas kaunti ang posibleng pumalya.

Sa alinmang paraan, nananatili ang webhook. Ang MCP ay request at sagot, at ang mensahe ng isang customer ay makararating lamang sa agent sa pamamagitan ng route na tinatawag ng Meta.

Mga karaniwang pagkakamali

  • Pagpapatakbo ng agent bago magbalik ng 200 sa Meta. Nire-retry ang mabagal na sagot, at dalawang sagot ang natatanggap ng customer.
  • Paggamit ng iisang session para sa lahat ng customer. I-key ito sa numero ng nagpadala, kung hindi ay maghahalo ang mga history.
  • Pagpapahintulot sa naantalang follow up na magpadala ng free-form text. Pagkalipas ng 24 oras, papalya ito na may 131047; magpadala na lang ng template.
Ginagawa ito gamit ang EasyCoexistence

I-connect ang numero sa easycoexistence.com, itakda ang webhook destination sa inyong route, at basahin ang token at phone number id mula sa dashboard. Mula US$ 9 kada numero kada buwan, bumababa hanggang US$ 1 habang nadaragdagan ang mga numero, at libre ang unang 3 araw.

Mga madalas itanong

Kailangan ba nito ang hosted MCP tool ng OpenAI Responses API?

Hindi. Lokal na pinapatakbo ng worker ang agent gamit ang Runner.run, at ang bahagi ng WhatsApp ay simpleng HTTPS call na ginagawa ng inyong code.

Aling bersyon ng Graph API ang dapat naming gamitin?

v25.0 ang ginagamit sa kasalukuyang mga halimbawa ng Meta. Itakda po ninyo ang isang bersyon sa iisang lugar sa inyong code para ang pag-upgrade ay pagbabago ng isang linya.

Maaari bang pumalit ang isang tao mula sa telepono?

Oo. Pinapanatiling gumagana ng Coexistence ang WhatsApp Business app, at ang sagot mula sa telepono ay darating sa inyong route bilang echo event na magagamit ng worker para i-pause ang agent.

Iniimbak ba ng EasyCoexistence ang usapan?

Hindi. Direktang naghahatid ang Meta sa inyong route. Anuman ang iniimbak ng session ay nasa sarili ninyong database.

Magpatuloy sa pagbabasa

Handa na po ba kayong magsimula?

I-set up ang WhatsApp Coexistence sa loob ng ilang minuto, hindi buwan. Patuloy na gumagana ang app sa telepono.

Magsimula ng Libreng Trial

Na-verify noong

OpenAI Agents SDK sa WhatsApp, Cloud API