[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"skill-twilio-twilio-messaging-webhooks":3,"mdc--w8ou4z-key":39,"related-org-twilio-twilio-messaging-webhooks":3608,"related-repo-twilio-twilio-messaging-webhooks":3786},{"slug":4,"name":4,"fn":5,"description":6,"org":7,"tags":11,"stars":29,"repoUrl":30,"updatedAt":31,"license":32,"forks":33,"topics":34,"repo":35,"sourceUrl":37,"mdContent":38},"twilio-messaging-webhooks","handle inbound messages via Twilio webhooks","Receive and respond to inbound messages and track outbound delivery status via Twilio webhooks — across SMS, MMS, WhatsApp, and RCS. Covers webhook request parameters, replying with TwiML, validating webhook signatures for security, and handling status callbacks. Use this skill whenever an agent needs to handle incoming messages on any channel or track outbound message delivery in real time.\n",{"slug":8,"name":9,"logoUrl":10,"githubOrg":8},"twilio","Twilio","https:\u002F\u002Fpexgzepcugksgbtrxkhf.supabase.co\u002Fstorage\u002Fv1\u002Fobject\u002Fpublic\u002Forg-logos\u002Ftwilio.png",[12,16,19,22,25,28],{"name":13,"slug":14,"type":15},"SMS","sms","tag",{"name":17,"slug":18,"type":15},"WhatsApp","whatsapp",{"name":20,"slug":21,"type":15},"RCS","rcs",{"name":23,"slug":24,"type":15},"Messaging","messaging",{"name":26,"slug":27,"type":15},"Webhooks","webhooks",{"name":9,"slug":8,"type":15},25,"https:\u002F\u002Fgithub.com\u002Ftwilio\u002Fai","2026-07-17T06:07:51.878474",null,7,[],{"repoUrl":30,"stars":29,"forks":33,"topics":36,"description":32},[],"https:\u002F\u002Fgithub.com\u002Ftwilio\u002Fai\u002Ftree\u002FHEAD\u002Fskills\u002Ftwilio\u002Ftwilio-messaging-webhooks","---\nname: twilio-messaging-webhooks\ndescription: >\n  Receive and respond to inbound messages and track outbound delivery status\n  via Twilio webhooks — across SMS, MMS, WhatsApp, and RCS. Covers webhook\n  request parameters, replying with TwiML, validating webhook signatures for\n  security, and handling status callbacks. Use this skill whenever an agent\n  needs to handle incoming messages on any channel or track outbound message\n  delivery in real time.\n---\n\n## Overview\n\nTwilio sends a POST webhook to your server when a user messages your Twilio number (inbound) or when an outbound message changes delivery state (status callback). Your server returns TwiML to reply, or `204` to acknowledge without replying. The same webhook pattern works across SMS, MMS, WhatsApp, and RCS.\n\n---\n\n## Prerequisites\n\n- Twilio account with a messaging-capable sender configured with a webhook URL\n  — New to Twilio? See `twilio-account-setup`\n  — For sending outbound messages first, see `twilio-send-message`\n- Publicly accessible endpoint (use `ngrok http 5000` for local dev)\n- `TWILIO_ACCOUNT_SID` and `TWILIO_AUTH_TOKEN` — see `twilio-iam-auth-setup`\n- SDK: `pip install twilio flask` \u002F `npm install twilio express`\n\n---\n\n## Quickstart\n\nSet your webhook URL in Console: **Phone Numbers > Active Numbers > your number > Messaging > \"A Message Comes In\"**\n\n> **Security:** The inbound message `Body` is untrusted external input. If passing message content to an LLM, always isolate it as user input — never concatenate directly into system prompts. Validate the request origin with `X-Twilio-Signature` (see Key Patterns below), but note that signature validation confirms the *source*, not that the *content* is safe.\n\n> **Note:** This quickstart omits signature validation for brevity. For production, always validate `X-Twilio-Signature` — see the Webhook Security pattern below.\n\n**Python (Flask)**\n```python\nfrom flask import Flask, request\nfrom twilio.twiml.messaging_response import MessagingResponse\n\napp = Flask(__name__)\n\n@app.route(\"\u002Fincoming\", methods=[\"POST\"])\ndef incoming_message():\n    body = request.form.get(\"Body\")\n    response = MessagingResponse()\n    response.message(f\"Got your message: {body}\")\n    return str(response)\n```\n\n**Node.js (Express)**\n```javascript\nconst express = require(\"express\");\nconst twilio = require(\"twilio\");\nconst app = express();\napp.use(express.urlencoded({ extended: false }));\n\napp.post(\"\u002Fincoming\", (req, res) => {\n    const twiml = new twilio.twiml.MessagingResponse();\n    twiml.message(`Got your message: ${req.body.Body}`);\n    res.type(\"text\u002Fxml\").send(twiml.toString());\n});\n```\n\n---\n\n## Key Patterns\n\n### Configure Webhook URL via API\n\nFor SMS\u002FMMS on a phone number:\n\n**Python**\n```python\nclient.incoming_phone_numbers(\"PNxxxxxxxxxx\").update(\n    sms_url=\"https:\u002F\u002Fyourapp.com\u002Fincoming\",\n    sms_method=\"POST\"\n)\n```\n\n**Node.js**\n```javascript\nawait client.incomingPhoneNumbers(\"PNxxxxxxxxxx\").update({\n    smsUrl: \"https:\u002F\u002Fyourapp.com\u002Fincoming\",\n    smsMethod: \"POST\",\n});\n```\n\nFor WhatsApp and RCS, webhook URLs are configured on the sender — see `twilio-whatsapp-manage-senders` and `twilio-rcs-messaging`.\n\n### Inbound Webhook Parameters\n\n| Parameter | Description |\n|-----------|-------------|\n| `MessageSid` | Unique message identifier |\n| `From` | Sender's phone number or channel address (E.164, or `whatsapp:+...`) |\n| `To` | Your Twilio number or channel address |\n| `Body` | Message text |\n| `NumMedia` | Number of media attachments |\n| `MediaUrl0` | URL of first media attachment (if any) |\n| `MediaContentType0` | MIME type of first attachment |\n\n### Handle Inbound Media (MMS \u002F WhatsApp \u002F RCS)\n\n**Python (Flask)**\n```python\n@app.route(\"\u002Fincoming\", methods=[\"POST\"])\ndef incoming_message():\n    num_media = int(request.form.get(\"NumMedia\", 0))\n    response = MessagingResponse()\n    if num_media > 0:\n        media_type = request.form.get(\"MediaContentType0\")\n        response.message(f\"Got your {media_type} attachment!\")\n    else:\n        response.message(\"Got your message.\")\n    return str(response)\n```\n\n**Node.js (Express)**\n```javascript\napp.post(\"\u002Fincoming\", (req, res) => {\n    const numMedia = parseInt(req.body.NumMedia || \"0\", 10);\n    const twiml = new twilio.twiml.MessagingResponse();\n    if (numMedia > 0) {\n        twiml.message(`Got your ${req.body.MediaContentType0} attachment!`);\n    } else {\n        twiml.message(\"Got your message.\");\n    }\n    res.type(\"text\u002Fxml\").send(twiml.toString());\n});\n```\n\n### Acknowledge Without Replying\n\n**Python**\n```python\nreturn str(MessagingResponse())  # Empty \u003CResponse\u002F>\n```\n\n**Node.js**\n```javascript\nres.type(\"text\u002Fxml\").send(new twilio.twiml.MessagingResponse().toString());\n```\n\n### Status Callbacks (delivery tracking)\n\nStatus callbacks fire for all channels — SMS, MMS, WhatsApp, and RCS.\n\n**Python**\n```python\nmessage = client.messages.create(\n    messaging_service_sid=\"MGxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx\",\n    to=\"+15558675310\",\n    body=\"Hello!\",\n    status_callback=\"https:\u002F\u002Fyourapp.com\u002Fstatus\"\n)\n```\n\n**Node.js**\n```javascript\nconst message = await client.messages.create({\n    messagingServiceSid: \"MGxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx\",\n    to: \"+15558675310\",\n    body: \"Hello!\",\n    statusCallback: \"https:\u002F\u002Fyourapp.com\u002Fstatus\",\n});\n```\n\n**Python (Flask) — status callback handler**\n```python\n@app.route(\"\u002Fstatus\", methods=[\"POST\"])\ndef message_status():\n    message_sid = request.form.get(\"MessageSid\")\n    status = request.form.get(\"MessageStatus\")\n    error_code = request.form.get(\"ErrorCode\")\n    print(f\"{message_sid}: {status}\")\n    if status == \"failed\" and error_code:\n        print(f\"Error {error_code}: {request.form.get('ErrorMessage')}\")\n    return \"\", 204\n```\n\n**Node.js (Express) — status callback handler**\n```javascript\napp.post(\"\u002Fstatus\", (req, res) => {\n    const { MessageSid, MessageStatus, ErrorCode, ErrorMessage } = req.body;\n    console.log(`${MessageSid}: ${MessageStatus}`);\n    if (MessageStatus === \"failed\" && ErrorCode) {\n        console.log(`Error ${ErrorCode}: ${ErrorMessage}`);\n    }\n    res.sendStatus(204);\n});\n```\n\nStatus flow: `queued → sent → delivered` (or `undelivered`\u002F`failed`)\n\n### Webhook Signature Validation\n\n**Python (Flask)**\n```python\nfrom twilio.request_validator import RequestValidator\n\nvalidator = RequestValidator(os.environ[\"TWILIO_AUTH_TOKEN\"])\n\n@app.route(\"\u002Fincoming\", methods=[\"POST\"])\ndef incoming_message():\n    if not validator.validate(request.url, request.form, request.headers.get(\"X-Twilio-Signature\", \"\")):\n        return \"Forbidden\", 403\n    response = MessagingResponse()\n    response.message(\"Hello!\")\n    return str(response)\n```\n\n**Node.js**\n```javascript\nconst { validateRequest } = require(\"twilio\");\n\napp.post(\"\u002Fincoming\", (req, res) => {\n    const isValid = validateRequest(\n        process.env.TWILIO_AUTH_TOKEN,\n        req.headers[\"x-twilio-signature\"],\n        `https:\u002F\u002F${req.headers.host}${req.path}`,\n        req.body\n    );\n    if (!isValid) return res.status(403).send(\"Forbidden\");\n    const twiml = new twilio.twiml.MessagingResponse();\n    twiml.message(\"Hello!\");\n    res.type(\"text\u002Fxml\").send(twiml.toString());\n});\n```\n\n---\n\n## CANNOT\n\n- **Cannot exceed 15-second webhook response time** — Twilio retries on timeout\n- **Cannot return arbitrary content types** — Use `Content-Type: text\u002Fxml` with TwiML for replies; `204` for status callbacks\n- **Cannot use ngrok URLs across restarts** — URLs change on restart. Use a stable tunnel for persistent testing.\n- **Cannot guarantee delivery confirmation** — Status callbacks are best-effort. `delivered` requires carrier confirmation.\n\n---\n\n## Common Errors\n\n| Code | Meaning | Fix |\n|------|---------|-----|\n| 11200 | HTTP retrieval failure — Twilio cannot reach your webhook URL | Verify endpoint is reachable (`curl -I` the URL), check DNS, firewall, and SSL certificate validity. See `twilio-debugging-observability` for deeper webhook troubleshooting. |\n\n---\n\n## Next Steps\n\n- **Send outbound messages:** `twilio-send-message`\n- **Manage sender pools:** `twilio-messaging-services`\n",{"data":40,"body":41},{"name":4,"description":6},{"type":42,"children":43},"root",[44,53,68,72,78,159,162,168,179,224,244,252,363,371,875,878,884,891,896,904,943,951,1095,1114,1120,1273,1279,1286,1369,1376,1831,1837,1844,1858,1865,1965,1971,1976,1983,2037,2044,2233,2241,2320,2328,2699,2726,2732,2739,2828,2835,3415,3418,3424,3490,3493,3499,3560,3563,3569,3602],{"type":45,"tag":46,"props":47,"children":49},"element","h2",{"id":48},"overview",[50],{"type":51,"value":52},"text","Overview",{"type":45,"tag":54,"props":55,"children":56},"p",{},[57,59,66],{"type":51,"value":58},"Twilio sends a POST webhook to your server when a user messages your Twilio number (inbound) or when an outbound message changes delivery state (status callback). Your server returns TwiML to reply, or ",{"type":45,"tag":60,"props":61,"children":63},"code",{"className":62},[],[64],{"type":51,"value":65},"204",{"type":51,"value":67}," to acknowledge without replying. The same webhook pattern works across SMS, MMS, WhatsApp, and RCS.",{"type":45,"tag":69,"props":70,"children":71},"hr",{},[],{"type":45,"tag":46,"props":73,"children":75},{"id":74},"prerequisites",[76],{"type":51,"value":77},"Prerequisites",{"type":45,"tag":79,"props":80,"children":81},"ul",{},[82,102,115,140],{"type":45,"tag":83,"props":84,"children":85},"li",{},[86,88,94,96],{"type":51,"value":87},"Twilio account with a messaging-capable sender configured with a webhook URL\n— New to Twilio? See ",{"type":45,"tag":60,"props":89,"children":91},{"className":90},[],[92],{"type":51,"value":93},"twilio-account-setup",{"type":51,"value":95},"\n— For sending outbound messages first, see ",{"type":45,"tag":60,"props":97,"children":99},{"className":98},[],[100],{"type":51,"value":101},"twilio-send-message",{"type":45,"tag":83,"props":103,"children":104},{},[105,107,113],{"type":51,"value":106},"Publicly accessible endpoint (use ",{"type":45,"tag":60,"props":108,"children":110},{"className":109},[],[111],{"type":51,"value":112},"ngrok http 5000",{"type":51,"value":114}," for local dev)",{"type":45,"tag":83,"props":116,"children":117},{},[118,124,126,132,134],{"type":45,"tag":60,"props":119,"children":121},{"className":120},[],[122],{"type":51,"value":123},"TWILIO_ACCOUNT_SID",{"type":51,"value":125}," and ",{"type":45,"tag":60,"props":127,"children":129},{"className":128},[],[130],{"type":51,"value":131},"TWILIO_AUTH_TOKEN",{"type":51,"value":133}," — see ",{"type":45,"tag":60,"props":135,"children":137},{"className":136},[],[138],{"type":51,"value":139},"twilio-iam-auth-setup",{"type":45,"tag":83,"props":141,"children":142},{},[143,145,151,153],{"type":51,"value":144},"SDK: ",{"type":45,"tag":60,"props":146,"children":148},{"className":147},[],[149],{"type":51,"value":150},"pip install twilio flask",{"type":51,"value":152}," \u002F ",{"type":45,"tag":60,"props":154,"children":156},{"className":155},[],[157],{"type":51,"value":158},"npm install twilio express",{"type":45,"tag":69,"props":160,"children":161},{},[],{"type":45,"tag":46,"props":163,"children":165},{"id":164},"quickstart",[166],{"type":51,"value":167},"Quickstart",{"type":45,"tag":54,"props":169,"children":170},{},[171,173],{"type":51,"value":172},"Set your webhook URL in Console: ",{"type":45,"tag":174,"props":175,"children":176},"strong",{},[177],{"type":51,"value":178},"Phone Numbers > Active Numbers > your number > Messaging > \"A Message Comes In\"",{"type":45,"tag":180,"props":181,"children":182},"blockquote",{},[183],{"type":45,"tag":54,"props":184,"children":185},{},[186,191,193,199,201,207,209,215,217,222],{"type":45,"tag":174,"props":187,"children":188},{},[189],{"type":51,"value":190},"Security:",{"type":51,"value":192}," The inbound message ",{"type":45,"tag":60,"props":194,"children":196},{"className":195},[],[197],{"type":51,"value":198},"Body",{"type":51,"value":200}," is untrusted external input. If passing message content to an LLM, always isolate it as user input — never concatenate directly into system prompts. Validate the request origin with ",{"type":45,"tag":60,"props":202,"children":204},{"className":203},[],[205],{"type":51,"value":206},"X-Twilio-Signature",{"type":51,"value":208}," (see Key Patterns below), but note that signature validation confirms the ",{"type":45,"tag":210,"props":211,"children":212},"em",{},[213],{"type":51,"value":214},"source",{"type":51,"value":216},", not that the ",{"type":45,"tag":210,"props":218,"children":219},{},[220],{"type":51,"value":221},"content",{"type":51,"value":223}," is safe.",{"type":45,"tag":180,"props":225,"children":226},{},[227],{"type":45,"tag":54,"props":228,"children":229},{},[230,235,237,242],{"type":45,"tag":174,"props":231,"children":232},{},[233],{"type":51,"value":234},"Note:",{"type":51,"value":236}," This quickstart omits signature validation for brevity. For production, always validate ",{"type":45,"tag":60,"props":238,"children":240},{"className":239},[],[241],{"type":51,"value":206},{"type":51,"value":243}," — see the Webhook Security pattern below.",{"type":45,"tag":54,"props":245,"children":246},{},[247],{"type":45,"tag":174,"props":248,"children":249},{},[250],{"type":51,"value":251},"Python (Flask)",{"type":45,"tag":253,"props":254,"children":259},"pre",{"className":255,"code":256,"language":257,"meta":258,"style":258},"language-python shiki shiki-themes material-theme-lighter material-theme material-theme-palenight","from flask import Flask, request\nfrom twilio.twiml.messaging_response import MessagingResponse\n\napp = Flask(__name__)\n\n@app.route(\"\u002Fincoming\", methods=[\"POST\"])\ndef incoming_message():\n    body = request.form.get(\"Body\")\n    response = MessagingResponse()\n    response.message(f\"Got your message: {body}\")\n    return str(response)\n","python","",[260],{"type":45,"tag":60,"props":261,"children":262},{"__ignoreMap":258},[263,274,283,293,302,310,319,327,336,345,354],{"type":45,"tag":264,"props":265,"children":268},"span",{"class":266,"line":267},"line",1,[269],{"type":45,"tag":264,"props":270,"children":271},{},[272],{"type":51,"value":273},"from flask import Flask, request\n",{"type":45,"tag":264,"props":275,"children":277},{"class":266,"line":276},2,[278],{"type":45,"tag":264,"props":279,"children":280},{},[281],{"type":51,"value":282},"from twilio.twiml.messaging_response import MessagingResponse\n",{"type":45,"tag":264,"props":284,"children":286},{"class":266,"line":285},3,[287],{"type":45,"tag":264,"props":288,"children":290},{"emptyLinePlaceholder":289},true,[291],{"type":51,"value":292},"\n",{"type":45,"tag":264,"props":294,"children":296},{"class":266,"line":295},4,[297],{"type":45,"tag":264,"props":298,"children":299},{},[300],{"type":51,"value":301},"app = Flask(__name__)\n",{"type":45,"tag":264,"props":303,"children":305},{"class":266,"line":304},5,[306],{"type":45,"tag":264,"props":307,"children":308},{"emptyLinePlaceholder":289},[309],{"type":51,"value":292},{"type":45,"tag":264,"props":311,"children":313},{"class":266,"line":312},6,[314],{"type":45,"tag":264,"props":315,"children":316},{},[317],{"type":51,"value":318},"@app.route(\"\u002Fincoming\", methods=[\"POST\"])\n",{"type":45,"tag":264,"props":320,"children":321},{"class":266,"line":33},[322],{"type":45,"tag":264,"props":323,"children":324},{},[325],{"type":51,"value":326},"def incoming_message():\n",{"type":45,"tag":264,"props":328,"children":330},{"class":266,"line":329},8,[331],{"type":45,"tag":264,"props":332,"children":333},{},[334],{"type":51,"value":335},"    body = request.form.get(\"Body\")\n",{"type":45,"tag":264,"props":337,"children":339},{"class":266,"line":338},9,[340],{"type":45,"tag":264,"props":341,"children":342},{},[343],{"type":51,"value":344},"    response = MessagingResponse()\n",{"type":45,"tag":264,"props":346,"children":348},{"class":266,"line":347},10,[349],{"type":45,"tag":264,"props":350,"children":351},{},[352],{"type":51,"value":353},"    response.message(f\"Got your message: {body}\")\n",{"type":45,"tag":264,"props":355,"children":357},{"class":266,"line":356},11,[358],{"type":45,"tag":264,"props":359,"children":360},{},[361],{"type":51,"value":362},"    return str(response)\n",{"type":45,"tag":54,"props":364,"children":365},{},[366],{"type":45,"tag":174,"props":367,"children":368},{},[369],{"type":51,"value":370},"Node.js (Express)",{"type":45,"tag":253,"props":372,"children":376},{"className":373,"code":374,"language":375,"meta":258,"style":258},"language-javascript shiki shiki-themes material-theme-lighter material-theme material-theme-palenight","const express = require(\"express\");\nconst twilio = require(\"twilio\");\nconst app = express();\napp.use(express.urlencoded({ extended: false }));\n\napp.post(\"\u002Fincoming\", (req, res) => {\n    const twiml = new twilio.twiml.MessagingResponse();\n    twiml.message(`Got your message: ${req.body.Body}`);\n    res.type(\"text\u002Fxml\").send(twiml.toString());\n});\n","javascript",[377],{"type":45,"tag":60,"props":378,"children":379},{"__ignoreMap":258},[380,437,481,511,583,590,662,716,786,859],{"type":45,"tag":264,"props":381,"children":382},{"class":266,"line":267},[383,389,395,401,407,412,417,423,427,432],{"type":45,"tag":264,"props":384,"children":386},{"style":385},"--shiki-light:#9C3EDA;--shiki-default:#C792EA;--shiki-dark:#C792EA",[387],{"type":51,"value":388},"const",{"type":45,"tag":264,"props":390,"children":392},{"style":391},"--shiki-light:#90A4AE;--shiki-default:#EEFFFF;--shiki-dark:#BABED8",[393],{"type":51,"value":394}," express ",{"type":45,"tag":264,"props":396,"children":398},{"style":397},"--shiki-light:#39ADB5;--shiki-default:#89DDFF;--shiki-dark:#89DDFF",[399],{"type":51,"value":400},"=",{"type":45,"tag":264,"props":402,"children":404},{"style":403},"--shiki-light:#6182B8;--shiki-default:#82AAFF;--shiki-dark:#82AAFF",[405],{"type":51,"value":406}," require",{"type":45,"tag":264,"props":408,"children":409},{"style":391},[410],{"type":51,"value":411},"(",{"type":45,"tag":264,"props":413,"children":414},{"style":397},[415],{"type":51,"value":416},"\"",{"type":45,"tag":264,"props":418,"children":420},{"style":419},"--shiki-light:#91B859;--shiki-default:#C3E88D;--shiki-dark:#C3E88D",[421],{"type":51,"value":422},"express",{"type":45,"tag":264,"props":424,"children":425},{"style":397},[426],{"type":51,"value":416},{"type":45,"tag":264,"props":428,"children":429},{"style":391},[430],{"type":51,"value":431},")",{"type":45,"tag":264,"props":433,"children":434},{"style":397},[435],{"type":51,"value":436},";\n",{"type":45,"tag":264,"props":438,"children":439},{"class":266,"line":276},[440,444,449,453,457,461,465,469,473,477],{"type":45,"tag":264,"props":441,"children":442},{"style":385},[443],{"type":51,"value":388},{"type":45,"tag":264,"props":445,"children":446},{"style":391},[447],{"type":51,"value":448}," twilio ",{"type":45,"tag":264,"props":450,"children":451},{"style":397},[452],{"type":51,"value":400},{"type":45,"tag":264,"props":454,"children":455},{"style":403},[456],{"type":51,"value":406},{"type":45,"tag":264,"props":458,"children":459},{"style":391},[460],{"type":51,"value":411},{"type":45,"tag":264,"props":462,"children":463},{"style":397},[464],{"type":51,"value":416},{"type":45,"tag":264,"props":466,"children":467},{"style":419},[468],{"type":51,"value":8},{"type":45,"tag":264,"props":470,"children":471},{"style":397},[472],{"type":51,"value":416},{"type":45,"tag":264,"props":474,"children":475},{"style":391},[476],{"type":51,"value":431},{"type":45,"tag":264,"props":478,"children":479},{"style":397},[480],{"type":51,"value":436},{"type":45,"tag":264,"props":482,"children":483},{"class":266,"line":285},[484,488,493,497,502,507],{"type":45,"tag":264,"props":485,"children":486},{"style":385},[487],{"type":51,"value":388},{"type":45,"tag":264,"props":489,"children":490},{"style":391},[491],{"type":51,"value":492}," app ",{"type":45,"tag":264,"props":494,"children":495},{"style":397},[496],{"type":51,"value":400},{"type":45,"tag":264,"props":498,"children":499},{"style":403},[500],{"type":51,"value":501}," express",{"type":45,"tag":264,"props":503,"children":504},{"style":391},[505],{"type":51,"value":506},"()",{"type":45,"tag":264,"props":508,"children":509},{"style":397},[510],{"type":51,"value":436},{"type":45,"tag":264,"props":512,"children":513},{"class":266,"line":295},[514,519,524,529,534,538,543,547,552,558,563,569,574,579],{"type":45,"tag":264,"props":515,"children":516},{"style":391},[517],{"type":51,"value":518},"app",{"type":45,"tag":264,"props":520,"children":521},{"style":397},[522],{"type":51,"value":523},".",{"type":45,"tag":264,"props":525,"children":526},{"style":403},[527],{"type":51,"value":528},"use",{"type":45,"tag":264,"props":530,"children":531},{"style":391},[532],{"type":51,"value":533},"(express",{"type":45,"tag":264,"props":535,"children":536},{"style":397},[537],{"type":51,"value":523},{"type":45,"tag":264,"props":539,"children":540},{"style":403},[541],{"type":51,"value":542},"urlencoded",{"type":45,"tag":264,"props":544,"children":545},{"style":391},[546],{"type":51,"value":411},{"type":45,"tag":264,"props":548,"children":549},{"style":397},[550],{"type":51,"value":551},"{",{"type":45,"tag":264,"props":553,"children":555},{"style":554},"--shiki-light:#E53935;--shiki-default:#F07178;--shiki-dark:#F07178",[556],{"type":51,"value":557}," extended",{"type":45,"tag":264,"props":559,"children":560},{"style":397},[561],{"type":51,"value":562},":",{"type":45,"tag":264,"props":564,"children":566},{"style":565},"--shiki-light:#FF5370;--shiki-default:#FF9CAC;--shiki-dark:#FF9CAC",[567],{"type":51,"value":568}," false",{"type":45,"tag":264,"props":570,"children":571},{"style":397},[572],{"type":51,"value":573}," }",{"type":45,"tag":264,"props":575,"children":576},{"style":391},[577],{"type":51,"value":578},"))",{"type":45,"tag":264,"props":580,"children":581},{"style":397},[582],{"type":51,"value":436},{"type":45,"tag":264,"props":584,"children":585},{"class":266,"line":304},[586],{"type":45,"tag":264,"props":587,"children":588},{"emptyLinePlaceholder":289},[589],{"type":51,"value":292},{"type":45,"tag":264,"props":591,"children":592},{"class":266,"line":312},[593,597,601,606,610,614,619,623,628,633,639,643,648,652,657],{"type":45,"tag":264,"props":594,"children":595},{"style":391},[596],{"type":51,"value":518},{"type":45,"tag":264,"props":598,"children":599},{"style":397},[600],{"type":51,"value":523},{"type":45,"tag":264,"props":602,"children":603},{"style":403},[604],{"type":51,"value":605},"post",{"type":45,"tag":264,"props":607,"children":608},{"style":391},[609],{"type":51,"value":411},{"type":45,"tag":264,"props":611,"children":612},{"style":397},[613],{"type":51,"value":416},{"type":45,"tag":264,"props":615,"children":616},{"style":419},[617],{"type":51,"value":618},"\u002Fincoming",{"type":45,"tag":264,"props":620,"children":621},{"style":397},[622],{"type":51,"value":416},{"type":45,"tag":264,"props":624,"children":625},{"style":397},[626],{"type":51,"value":627},",",{"type":45,"tag":264,"props":629,"children":630},{"style":397},[631],{"type":51,"value":632}," (",{"type":45,"tag":264,"props":634,"children":636},{"style":635},"--shiki-light:#90A4AE;--shiki-light-font-style:italic;--shiki-default:#EEFFFF;--shiki-default-font-style:italic;--shiki-dark:#BABED8;--shiki-dark-font-style:italic",[637],{"type":51,"value":638},"req",{"type":45,"tag":264,"props":640,"children":641},{"style":397},[642],{"type":51,"value":627},{"type":45,"tag":264,"props":644,"children":645},{"style":635},[646],{"type":51,"value":647}," res",{"type":45,"tag":264,"props":649,"children":650},{"style":397},[651],{"type":51,"value":431},{"type":45,"tag":264,"props":653,"children":654},{"style":385},[655],{"type":51,"value":656}," =>",{"type":45,"tag":264,"props":658,"children":659},{"style":397},[660],{"type":51,"value":661}," {\n",{"type":45,"tag":264,"props":663,"children":664},{"class":266,"line":33},[665,670,675,680,685,690,694,699,703,708,712],{"type":45,"tag":264,"props":666,"children":667},{"style":385},[668],{"type":51,"value":669},"    const",{"type":45,"tag":264,"props":671,"children":672},{"style":391},[673],{"type":51,"value":674}," twiml",{"type":45,"tag":264,"props":676,"children":677},{"style":397},[678],{"type":51,"value":679}," =",{"type":45,"tag":264,"props":681,"children":682},{"style":397},[683],{"type":51,"value":684}," new",{"type":45,"tag":264,"props":686,"children":687},{"style":391},[688],{"type":51,"value":689}," twilio",{"type":45,"tag":264,"props":691,"children":692},{"style":397},[693],{"type":51,"value":523},{"type":45,"tag":264,"props":695,"children":696},{"style":391},[697],{"type":51,"value":698},"twiml",{"type":45,"tag":264,"props":700,"children":701},{"style":397},[702],{"type":51,"value":523},{"type":45,"tag":264,"props":704,"children":705},{"style":403},[706],{"type":51,"value":707},"MessagingResponse",{"type":45,"tag":264,"props":709,"children":710},{"style":554},[711],{"type":51,"value":506},{"type":45,"tag":264,"props":713,"children":714},{"style":397},[715],{"type":51,"value":436},{"type":45,"tag":264,"props":717,"children":718},{"class":266,"line":329},[719,724,728,733,737,742,747,752,756,760,765,769,773,778,782],{"type":45,"tag":264,"props":720,"children":721},{"style":391},[722],{"type":51,"value":723},"    twiml",{"type":45,"tag":264,"props":725,"children":726},{"style":397},[727],{"type":51,"value":523},{"type":45,"tag":264,"props":729,"children":730},{"style":403},[731],{"type":51,"value":732},"message",{"type":45,"tag":264,"props":734,"children":735},{"style":554},[736],{"type":51,"value":411},{"type":45,"tag":264,"props":738,"children":739},{"style":397},[740],{"type":51,"value":741},"`",{"type":45,"tag":264,"props":743,"children":744},{"style":419},[745],{"type":51,"value":746},"Got your message: ",{"type":45,"tag":264,"props":748,"children":749},{"style":397},[750],{"type":51,"value":751},"${",{"type":45,"tag":264,"props":753,"children":754},{"style":391},[755],{"type":51,"value":638},{"type":45,"tag":264,"props":757,"children":758},{"style":397},[759],{"type":51,"value":523},{"type":45,"tag":264,"props":761,"children":762},{"style":391},[763],{"type":51,"value":764},"body",{"type":45,"tag":264,"props":766,"children":767},{"style":397},[768],{"type":51,"value":523},{"type":45,"tag":264,"props":770,"children":771},{"style":391},[772],{"type":51,"value":198},{"type":45,"tag":264,"props":774,"children":775},{"style":397},[776],{"type":51,"value":777},"}`",{"type":45,"tag":264,"props":779,"children":780},{"style":554},[781],{"type":51,"value":431},{"type":45,"tag":264,"props":783,"children":784},{"style":397},[785],{"type":51,"value":436},{"type":45,"tag":264,"props":787,"children":788},{"class":266,"line":338},[789,794,798,803,807,811,816,820,824,828,833,837,841,845,850,855],{"type":45,"tag":264,"props":790,"children":791},{"style":391},[792],{"type":51,"value":793},"    res",{"type":45,"tag":264,"props":795,"children":796},{"style":397},[797],{"type":51,"value":523},{"type":45,"tag":264,"props":799,"children":800},{"style":403},[801],{"type":51,"value":802},"type",{"type":45,"tag":264,"props":804,"children":805},{"style":554},[806],{"type":51,"value":411},{"type":45,"tag":264,"props":808,"children":809},{"style":397},[810],{"type":51,"value":416},{"type":45,"tag":264,"props":812,"children":813},{"style":419},[814],{"type":51,"value":815},"text\u002Fxml",{"type":45,"tag":264,"props":817,"children":818},{"style":397},[819],{"type":51,"value":416},{"type":45,"tag":264,"props":821,"children":822},{"style":554},[823],{"type":51,"value":431},{"type":45,"tag":264,"props":825,"children":826},{"style":397},[827],{"type":51,"value":523},{"type":45,"tag":264,"props":829,"children":830},{"style":403},[831],{"type":51,"value":832},"send",{"type":45,"tag":264,"props":834,"children":835},{"style":554},[836],{"type":51,"value":411},{"type":45,"tag":264,"props":838,"children":839},{"style":391},[840],{"type":51,"value":698},{"type":45,"tag":264,"props":842,"children":843},{"style":397},[844],{"type":51,"value":523},{"type":45,"tag":264,"props":846,"children":847},{"style":403},[848],{"type":51,"value":849},"toString",{"type":45,"tag":264,"props":851,"children":852},{"style":554},[853],{"type":51,"value":854},"())",{"type":45,"tag":264,"props":856,"children":857},{"style":397},[858],{"type":51,"value":436},{"type":45,"tag":264,"props":860,"children":861},{"class":266,"line":347},[862,867,871],{"type":45,"tag":264,"props":863,"children":864},{"style":397},[865],{"type":51,"value":866},"}",{"type":45,"tag":264,"props":868,"children":869},{"style":391},[870],{"type":51,"value":431},{"type":45,"tag":264,"props":872,"children":873},{"style":397},[874],{"type":51,"value":436},{"type":45,"tag":69,"props":876,"children":877},{},[],{"type":45,"tag":46,"props":879,"children":881},{"id":880},"key-patterns",[882],{"type":51,"value":883},"Key Patterns",{"type":45,"tag":885,"props":886,"children":888},"h3",{"id":887},"configure-webhook-url-via-api",[889],{"type":51,"value":890},"Configure Webhook URL via API",{"type":45,"tag":54,"props":892,"children":893},{},[894],{"type":51,"value":895},"For SMS\u002FMMS on a phone number:",{"type":45,"tag":54,"props":897,"children":898},{},[899],{"type":45,"tag":174,"props":900,"children":901},{},[902],{"type":51,"value":903},"Python",{"type":45,"tag":253,"props":905,"children":907},{"className":255,"code":906,"language":257,"meta":258,"style":258},"client.incoming_phone_numbers(\"PNxxxxxxxxxx\").update(\n    sms_url=\"https:\u002F\u002Fyourapp.com\u002Fincoming\",\n    sms_method=\"POST\"\n)\n",[908],{"type":45,"tag":60,"props":909,"children":910},{"__ignoreMap":258},[911,919,927,935],{"type":45,"tag":264,"props":912,"children":913},{"class":266,"line":267},[914],{"type":45,"tag":264,"props":915,"children":916},{},[917],{"type":51,"value":918},"client.incoming_phone_numbers(\"PNxxxxxxxxxx\").update(\n",{"type":45,"tag":264,"props":920,"children":921},{"class":266,"line":276},[922],{"type":45,"tag":264,"props":923,"children":924},{},[925],{"type":51,"value":926},"    sms_url=\"https:\u002F\u002Fyourapp.com\u002Fincoming\",\n",{"type":45,"tag":264,"props":928,"children":929},{"class":266,"line":285},[930],{"type":45,"tag":264,"props":931,"children":932},{},[933],{"type":51,"value":934},"    sms_method=\"POST\"\n",{"type":45,"tag":264,"props":936,"children":937},{"class":266,"line":295},[938],{"type":45,"tag":264,"props":939,"children":940},{},[941],{"type":51,"value":942},")\n",{"type":45,"tag":54,"props":944,"children":945},{},[946],{"type":45,"tag":174,"props":947,"children":948},{},[949],{"type":51,"value":950},"Node.js",{"type":45,"tag":253,"props":952,"children":954},{"className":373,"code":953,"language":375,"meta":258,"style":258},"await client.incomingPhoneNumbers(\"PNxxxxxxxxxx\").update({\n    smsUrl: \"https:\u002F\u002Fyourapp.com\u002Fincoming\",\n    smsMethod: \"POST\",\n});\n",[955],{"type":45,"tag":60,"props":956,"children":957},{"__ignoreMap":258},[958,1020,1051,1080],{"type":45,"tag":264,"props":959,"children":960},{"class":266,"line":267},[961,967,972,976,981,985,989,994,998,1002,1006,1011,1015],{"type":45,"tag":264,"props":962,"children":964},{"style":963},"--shiki-light:#39ADB5;--shiki-light-font-style:italic;--shiki-default:#89DDFF;--shiki-default-font-style:italic;--shiki-dark:#89DDFF;--shiki-dark-font-style:italic",[965],{"type":51,"value":966},"await",{"type":45,"tag":264,"props":968,"children":969},{"style":391},[970],{"type":51,"value":971}," client",{"type":45,"tag":264,"props":973,"children":974},{"style":397},[975],{"type":51,"value":523},{"type":45,"tag":264,"props":977,"children":978},{"style":403},[979],{"type":51,"value":980},"incomingPhoneNumbers",{"type":45,"tag":264,"props":982,"children":983},{"style":391},[984],{"type":51,"value":411},{"type":45,"tag":264,"props":986,"children":987},{"style":397},[988],{"type":51,"value":416},{"type":45,"tag":264,"props":990,"children":991},{"style":419},[992],{"type":51,"value":993},"PNxxxxxxxxxx",{"type":45,"tag":264,"props":995,"children":996},{"style":397},[997],{"type":51,"value":416},{"type":45,"tag":264,"props":999,"children":1000},{"style":391},[1001],{"type":51,"value":431},{"type":45,"tag":264,"props":1003,"children":1004},{"style":397},[1005],{"type":51,"value":523},{"type":45,"tag":264,"props":1007,"children":1008},{"style":403},[1009],{"type":51,"value":1010},"update",{"type":45,"tag":264,"props":1012,"children":1013},{"style":391},[1014],{"type":51,"value":411},{"type":45,"tag":264,"props":1016,"children":1017},{"style":397},[1018],{"type":51,"value":1019},"{\n",{"type":45,"tag":264,"props":1021,"children":1022},{"class":266,"line":276},[1023,1028,1032,1037,1042,1046],{"type":45,"tag":264,"props":1024,"children":1025},{"style":554},[1026],{"type":51,"value":1027},"    smsUrl",{"type":45,"tag":264,"props":1029,"children":1030},{"style":397},[1031],{"type":51,"value":562},{"type":45,"tag":264,"props":1033,"children":1034},{"style":397},[1035],{"type":51,"value":1036}," \"",{"type":45,"tag":264,"props":1038,"children":1039},{"style":419},[1040],{"type":51,"value":1041},"https:\u002F\u002Fyourapp.com\u002Fincoming",{"type":45,"tag":264,"props":1043,"children":1044},{"style":397},[1045],{"type":51,"value":416},{"type":45,"tag":264,"props":1047,"children":1048},{"style":397},[1049],{"type":51,"value":1050},",\n",{"type":45,"tag":264,"props":1052,"children":1053},{"class":266,"line":285},[1054,1059,1063,1067,1072,1076],{"type":45,"tag":264,"props":1055,"children":1056},{"style":554},[1057],{"type":51,"value":1058},"    smsMethod",{"type":45,"tag":264,"props":1060,"children":1061},{"style":397},[1062],{"type":51,"value":562},{"type":45,"tag":264,"props":1064,"children":1065},{"style":397},[1066],{"type":51,"value":1036},{"type":45,"tag":264,"props":1068,"children":1069},{"style":419},[1070],{"type":51,"value":1071},"POST",{"type":45,"tag":264,"props":1073,"children":1074},{"style":397},[1075],{"type":51,"value":416},{"type":45,"tag":264,"props":1077,"children":1078},{"style":397},[1079],{"type":51,"value":1050},{"type":45,"tag":264,"props":1081,"children":1082},{"class":266,"line":295},[1083,1087,1091],{"type":45,"tag":264,"props":1084,"children":1085},{"style":397},[1086],{"type":51,"value":866},{"type":45,"tag":264,"props":1088,"children":1089},{"style":391},[1090],{"type":51,"value":431},{"type":45,"tag":264,"props":1092,"children":1093},{"style":397},[1094],{"type":51,"value":436},{"type":45,"tag":54,"props":1096,"children":1097},{},[1098,1100,1106,1107,1113],{"type":51,"value":1099},"For WhatsApp and RCS, webhook URLs are configured on the sender — see ",{"type":45,"tag":60,"props":1101,"children":1103},{"className":1102},[],[1104],{"type":51,"value":1105},"twilio-whatsapp-manage-senders",{"type":51,"value":125},{"type":45,"tag":60,"props":1108,"children":1110},{"className":1109},[],[1111],{"type":51,"value":1112},"twilio-rcs-messaging",{"type":51,"value":523},{"type":45,"tag":885,"props":1115,"children":1117},{"id":1116},"inbound-webhook-parameters",[1118],{"type":51,"value":1119},"Inbound Webhook Parameters",{"type":45,"tag":1121,"props":1122,"children":1123},"table",{},[1124,1143],{"type":45,"tag":1125,"props":1126,"children":1127},"thead",{},[1128],{"type":45,"tag":1129,"props":1130,"children":1131},"tr",{},[1132,1138],{"type":45,"tag":1133,"props":1134,"children":1135},"th",{},[1136],{"type":51,"value":1137},"Parameter",{"type":45,"tag":1133,"props":1139,"children":1140},{},[1141],{"type":51,"value":1142},"Description",{"type":45,"tag":1144,"props":1145,"children":1146},"tbody",{},[1147,1165,1189,1206,1222,1239,1256],{"type":45,"tag":1129,"props":1148,"children":1149},{},[1150,1160],{"type":45,"tag":1151,"props":1152,"children":1153},"td",{},[1154],{"type":45,"tag":60,"props":1155,"children":1157},{"className":1156},[],[1158],{"type":51,"value":1159},"MessageSid",{"type":45,"tag":1151,"props":1161,"children":1162},{},[1163],{"type":51,"value":1164},"Unique message identifier",{"type":45,"tag":1129,"props":1166,"children":1167},{},[1168,1177],{"type":45,"tag":1151,"props":1169,"children":1170},{},[1171],{"type":45,"tag":60,"props":1172,"children":1174},{"className":1173},[],[1175],{"type":51,"value":1176},"From",{"type":45,"tag":1151,"props":1178,"children":1179},{},[1180,1182,1188],{"type":51,"value":1181},"Sender's phone number or channel address (E.164, or ",{"type":45,"tag":60,"props":1183,"children":1185},{"className":1184},[],[1186],{"type":51,"value":1187},"whatsapp:+...",{"type":51,"value":431},{"type":45,"tag":1129,"props":1190,"children":1191},{},[1192,1201],{"type":45,"tag":1151,"props":1193,"children":1194},{},[1195],{"type":45,"tag":60,"props":1196,"children":1198},{"className":1197},[],[1199],{"type":51,"value":1200},"To",{"type":45,"tag":1151,"props":1202,"children":1203},{},[1204],{"type":51,"value":1205},"Your Twilio number or channel address",{"type":45,"tag":1129,"props":1207,"children":1208},{},[1209,1217],{"type":45,"tag":1151,"props":1210,"children":1211},{},[1212],{"type":45,"tag":60,"props":1213,"children":1215},{"className":1214},[],[1216],{"type":51,"value":198},{"type":45,"tag":1151,"props":1218,"children":1219},{},[1220],{"type":51,"value":1221},"Message text",{"type":45,"tag":1129,"props":1223,"children":1224},{},[1225,1234],{"type":45,"tag":1151,"props":1226,"children":1227},{},[1228],{"type":45,"tag":60,"props":1229,"children":1231},{"className":1230},[],[1232],{"type":51,"value":1233},"NumMedia",{"type":45,"tag":1151,"props":1235,"children":1236},{},[1237],{"type":51,"value":1238},"Number of media attachments",{"type":45,"tag":1129,"props":1240,"children":1241},{},[1242,1251],{"type":45,"tag":1151,"props":1243,"children":1244},{},[1245],{"type":45,"tag":60,"props":1246,"children":1248},{"className":1247},[],[1249],{"type":51,"value":1250},"MediaUrl0",{"type":45,"tag":1151,"props":1252,"children":1253},{},[1254],{"type":51,"value":1255},"URL of first media attachment (if any)",{"type":45,"tag":1129,"props":1257,"children":1258},{},[1259,1268],{"type":45,"tag":1151,"props":1260,"children":1261},{},[1262],{"type":45,"tag":60,"props":1263,"children":1265},{"className":1264},[],[1266],{"type":51,"value":1267},"MediaContentType0",{"type":45,"tag":1151,"props":1269,"children":1270},{},[1271],{"type":51,"value":1272},"MIME type of first attachment",{"type":45,"tag":885,"props":1274,"children":1276},{"id":1275},"handle-inbound-media-mms-whatsapp-rcs",[1277],{"type":51,"value":1278},"Handle Inbound Media (MMS \u002F WhatsApp \u002F RCS)",{"type":45,"tag":54,"props":1280,"children":1281},{},[1282],{"type":45,"tag":174,"props":1283,"children":1284},{},[1285],{"type":51,"value":251},{"type":45,"tag":253,"props":1287,"children":1289},{"className":255,"code":1288,"language":257,"meta":258,"style":258},"@app.route(\"\u002Fincoming\", methods=[\"POST\"])\ndef incoming_message():\n    num_media = int(request.form.get(\"NumMedia\", 0))\n    response = MessagingResponse()\n    if num_media > 0:\n        media_type = request.form.get(\"MediaContentType0\")\n        response.message(f\"Got your {media_type} attachment!\")\n    else:\n        response.message(\"Got your message.\")\n    return str(response)\n",[1290],{"type":45,"tag":60,"props":1291,"children":1292},{"__ignoreMap":258},[1293,1300,1307,1315,1322,1330,1338,1346,1354,1362],{"type":45,"tag":264,"props":1294,"children":1295},{"class":266,"line":267},[1296],{"type":45,"tag":264,"props":1297,"children":1298},{},[1299],{"type":51,"value":318},{"type":45,"tag":264,"props":1301,"children":1302},{"class":266,"line":276},[1303],{"type":45,"tag":264,"props":1304,"children":1305},{},[1306],{"type":51,"value":326},{"type":45,"tag":264,"props":1308,"children":1309},{"class":266,"line":285},[1310],{"type":45,"tag":264,"props":1311,"children":1312},{},[1313],{"type":51,"value":1314},"    num_media = int(request.form.get(\"NumMedia\", 0))\n",{"type":45,"tag":264,"props":1316,"children":1317},{"class":266,"line":295},[1318],{"type":45,"tag":264,"props":1319,"children":1320},{},[1321],{"type":51,"value":344},{"type":45,"tag":264,"props":1323,"children":1324},{"class":266,"line":304},[1325],{"type":45,"tag":264,"props":1326,"children":1327},{},[1328],{"type":51,"value":1329},"    if num_media > 0:\n",{"type":45,"tag":264,"props":1331,"children":1332},{"class":266,"line":312},[1333],{"type":45,"tag":264,"props":1334,"children":1335},{},[1336],{"type":51,"value":1337},"        media_type = request.form.get(\"MediaContentType0\")\n",{"type":45,"tag":264,"props":1339,"children":1340},{"class":266,"line":33},[1341],{"type":45,"tag":264,"props":1342,"children":1343},{},[1344],{"type":51,"value":1345},"        response.message(f\"Got your {media_type} attachment!\")\n",{"type":45,"tag":264,"props":1347,"children":1348},{"class":266,"line":329},[1349],{"type":45,"tag":264,"props":1350,"children":1351},{},[1352],{"type":51,"value":1353},"    else:\n",{"type":45,"tag":264,"props":1355,"children":1356},{"class":266,"line":338},[1357],{"type":45,"tag":264,"props":1358,"children":1359},{},[1360],{"type":51,"value":1361},"        response.message(\"Got your message.\")\n",{"type":45,"tag":264,"props":1363,"children":1364},{"class":266,"line":347},[1365],{"type":45,"tag":264,"props":1366,"children":1367},{},[1368],{"type":51,"value":362},{"type":45,"tag":54,"props":1370,"children":1371},{},[1372],{"type":45,"tag":174,"props":1373,"children":1374},{},[1375],{"type":51,"value":370},{"type":45,"tag":253,"props":1377,"children":1379},{"className":373,"code":1378,"language":375,"meta":258,"style":258},"app.post(\"\u002Fincoming\", (req, res) => {\n    const numMedia = parseInt(req.body.NumMedia || \"0\", 10);\n    const twiml = new twilio.twiml.MessagingResponse();\n    if (numMedia > 0) {\n        twiml.message(`Got your ${req.body.MediaContentType0} attachment!`);\n    } else {\n        twiml.message(\"Got your message.\");\n    }\n    res.type(\"text\u002Fxml\").send(twiml.toString());\n});\n",[1380],{"type":45,"tag":60,"props":1381,"children":1382},{"__ignoreMap":258},[1383,1446,1527,1574,1610,1684,1701,1741,1749,1816],{"type":45,"tag":264,"props":1384,"children":1385},{"class":266,"line":267},[1386,1390,1394,1398,1402,1406,1410,1414,1418,1422,1426,1430,1434,1438,1442],{"type":45,"tag":264,"props":1387,"children":1388},{"style":391},[1389],{"type":51,"value":518},{"type":45,"tag":264,"props":1391,"children":1392},{"style":397},[1393],{"type":51,"value":523},{"type":45,"tag":264,"props":1395,"children":1396},{"style":403},[1397],{"type":51,"value":605},{"type":45,"tag":264,"props":1399,"children":1400},{"style":391},[1401],{"type":51,"value":411},{"type":45,"tag":264,"props":1403,"children":1404},{"style":397},[1405],{"type":51,"value":416},{"type":45,"tag":264,"props":1407,"children":1408},{"style":419},[1409],{"type":51,"value":618},{"type":45,"tag":264,"props":1411,"children":1412},{"style":397},[1413],{"type":51,"value":416},{"type":45,"tag":264,"props":1415,"children":1416},{"style":397},[1417],{"type":51,"value":627},{"type":45,"tag":264,"props":1419,"children":1420},{"style":397},[1421],{"type":51,"value":632},{"type":45,"tag":264,"props":1423,"children":1424},{"style":635},[1425],{"type":51,"value":638},{"type":45,"tag":264,"props":1427,"children":1428},{"style":397},[1429],{"type":51,"value":627},{"type":45,"tag":264,"props":1431,"children":1432},{"style":635},[1433],{"type":51,"value":647},{"type":45,"tag":264,"props":1435,"children":1436},{"style":397},[1437],{"type":51,"value":431},{"type":45,"tag":264,"props":1439,"children":1440},{"style":385},[1441],{"type":51,"value":656},{"type":45,"tag":264,"props":1443,"children":1444},{"style":397},[1445],{"type":51,"value":661},{"type":45,"tag":264,"props":1447,"children":1448},{"class":266,"line":276},[1449,1453,1458,1462,1467,1471,1475,1479,1483,1487,1491,1496,1500,1505,1509,1513,1519,1523],{"type":45,"tag":264,"props":1450,"children":1451},{"style":385},[1452],{"type":51,"value":669},{"type":45,"tag":264,"props":1454,"children":1455},{"style":391},[1456],{"type":51,"value":1457}," numMedia",{"type":45,"tag":264,"props":1459,"children":1460},{"style":397},[1461],{"type":51,"value":679},{"type":45,"tag":264,"props":1463,"children":1464},{"style":403},[1465],{"type":51,"value":1466}," parseInt",{"type":45,"tag":264,"props":1468,"children":1469},{"style":554},[1470],{"type":51,"value":411},{"type":45,"tag":264,"props":1472,"children":1473},{"style":391},[1474],{"type":51,"value":638},{"type":45,"tag":264,"props":1476,"children":1477},{"style":397},[1478],{"type":51,"value":523},{"type":45,"tag":264,"props":1480,"children":1481},{"style":391},[1482],{"type":51,"value":764},{"type":45,"tag":264,"props":1484,"children":1485},{"style":397},[1486],{"type":51,"value":523},{"type":45,"tag":264,"props":1488,"children":1489},{"style":391},[1490],{"type":51,"value":1233},{"type":45,"tag":264,"props":1492,"children":1493},{"style":397},[1494],{"type":51,"value":1495}," ||",{"type":45,"tag":264,"props":1497,"children":1498},{"style":397},[1499],{"type":51,"value":1036},{"type":45,"tag":264,"props":1501,"children":1502},{"style":419},[1503],{"type":51,"value":1504},"0",{"type":45,"tag":264,"props":1506,"children":1507},{"style":397},[1508],{"type":51,"value":416},{"type":45,"tag":264,"props":1510,"children":1511},{"style":397},[1512],{"type":51,"value":627},{"type":45,"tag":264,"props":1514,"children":1516},{"style":1515},"--shiki-light:#F76D47;--shiki-default:#F78C6C;--shiki-dark:#F78C6C",[1517],{"type":51,"value":1518}," 10",{"type":45,"tag":264,"props":1520,"children":1521},{"style":554},[1522],{"type":51,"value":431},{"type":45,"tag":264,"props":1524,"children":1525},{"style":397},[1526],{"type":51,"value":436},{"type":45,"tag":264,"props":1528,"children":1529},{"class":266,"line":285},[1530,1534,1538,1542,1546,1550,1554,1558,1562,1566,1570],{"type":45,"tag":264,"props":1531,"children":1532},{"style":385},[1533],{"type":51,"value":669},{"type":45,"tag":264,"props":1535,"children":1536},{"style":391},[1537],{"type":51,"value":674},{"type":45,"tag":264,"props":1539,"children":1540},{"style":397},[1541],{"type":51,"value":679},{"type":45,"tag":264,"props":1543,"children":1544},{"style":397},[1545],{"type":51,"value":684},{"type":45,"tag":264,"props":1547,"children":1548},{"style":391},[1549],{"type":51,"value":689},{"type":45,"tag":264,"props":1551,"children":1552},{"style":397},[1553],{"type":51,"value":523},{"type":45,"tag":264,"props":1555,"children":1556},{"style":391},[1557],{"type":51,"value":698},{"type":45,"tag":264,"props":1559,"children":1560},{"style":397},[1561],{"type":51,"value":523},{"type":45,"tag":264,"props":1563,"children":1564},{"style":403},[1565],{"type":51,"value":707},{"type":45,"tag":264,"props":1567,"children":1568},{"style":554},[1569],{"type":51,"value":506},{"type":45,"tag":264,"props":1571,"children":1572},{"style":397},[1573],{"type":51,"value":436},{"type":45,"tag":264,"props":1575,"children":1576},{"class":266,"line":295},[1577,1582,1586,1591,1596,1601,1606],{"type":45,"tag":264,"props":1578,"children":1579},{"style":963},[1580],{"type":51,"value":1581},"    if",{"type":45,"tag":264,"props":1583,"children":1584},{"style":554},[1585],{"type":51,"value":632},{"type":45,"tag":264,"props":1587,"children":1588},{"style":391},[1589],{"type":51,"value":1590},"numMedia",{"type":45,"tag":264,"props":1592,"children":1593},{"style":397},[1594],{"type":51,"value":1595}," >",{"type":45,"tag":264,"props":1597,"children":1598},{"style":1515},[1599],{"type":51,"value":1600}," 0",{"type":45,"tag":264,"props":1602,"children":1603},{"style":554},[1604],{"type":51,"value":1605},") ",{"type":45,"tag":264,"props":1607,"children":1608},{"style":397},[1609],{"type":51,"value":1019},{"type":45,"tag":264,"props":1611,"children":1612},{"class":266,"line":304},[1613,1618,1622,1626,1630,1634,1639,1643,1647,1651,1655,1659,1663,1667,1672,1676,1680],{"type":45,"tag":264,"props":1614,"children":1615},{"style":391},[1616],{"type":51,"value":1617},"        twiml",{"type":45,"tag":264,"props":1619,"children":1620},{"style":397},[1621],{"type":51,"value":523},{"type":45,"tag":264,"props":1623,"children":1624},{"style":403},[1625],{"type":51,"value":732},{"type":45,"tag":264,"props":1627,"children":1628},{"style":554},[1629],{"type":51,"value":411},{"type":45,"tag":264,"props":1631,"children":1632},{"style":397},[1633],{"type":51,"value":741},{"type":45,"tag":264,"props":1635,"children":1636},{"style":419},[1637],{"type":51,"value":1638},"Got your ",{"type":45,"tag":264,"props":1640,"children":1641},{"style":397},[1642],{"type":51,"value":751},{"type":45,"tag":264,"props":1644,"children":1645},{"style":391},[1646],{"type":51,"value":638},{"type":45,"tag":264,"props":1648,"children":1649},{"style":397},[1650],{"type":51,"value":523},{"type":45,"tag":264,"props":1652,"children":1653},{"style":391},[1654],{"type":51,"value":764},{"type":45,"tag":264,"props":1656,"children":1657},{"style":397},[1658],{"type":51,"value":523},{"type":45,"tag":264,"props":1660,"children":1661},{"style":391},[1662],{"type":51,"value":1267},{"type":45,"tag":264,"props":1664,"children":1665},{"style":397},[1666],{"type":51,"value":866},{"type":45,"tag":264,"props":1668,"children":1669},{"style":419},[1670],{"type":51,"value":1671}," attachment!",{"type":45,"tag":264,"props":1673,"children":1674},{"style":397},[1675],{"type":51,"value":741},{"type":45,"tag":264,"props":1677,"children":1678},{"style":554},[1679],{"type":51,"value":431},{"type":45,"tag":264,"props":1681,"children":1682},{"style":397},[1683],{"type":51,"value":436},{"type":45,"tag":264,"props":1685,"children":1686},{"class":266,"line":312},[1687,1692,1697],{"type":45,"tag":264,"props":1688,"children":1689},{"style":397},[1690],{"type":51,"value":1691},"    }",{"type":45,"tag":264,"props":1693,"children":1694},{"style":963},[1695],{"type":51,"value":1696}," else",{"type":45,"tag":264,"props":1698,"children":1699},{"style":397},[1700],{"type":51,"value":661},{"type":45,"tag":264,"props":1702,"children":1703},{"class":266,"line":33},[1704,1708,1712,1716,1720,1724,1729,1733,1737],{"type":45,"tag":264,"props":1705,"children":1706},{"style":391},[1707],{"type":51,"value":1617},{"type":45,"tag":264,"props":1709,"children":1710},{"style":397},[1711],{"type":51,"value":523},{"type":45,"tag":264,"props":1713,"children":1714},{"style":403},[1715],{"type":51,"value":732},{"type":45,"tag":264,"props":1717,"children":1718},{"style":554},[1719],{"type":51,"value":411},{"type":45,"tag":264,"props":1721,"children":1722},{"style":397},[1723],{"type":51,"value":416},{"type":45,"tag":264,"props":1725,"children":1726},{"style":419},[1727],{"type":51,"value":1728},"Got your message.",{"type":45,"tag":264,"props":1730,"children":1731},{"style":397},[1732],{"type":51,"value":416},{"type":45,"tag":264,"props":1734,"children":1735},{"style":554},[1736],{"type":51,"value":431},{"type":45,"tag":264,"props":1738,"children":1739},{"style":397},[1740],{"type":51,"value":436},{"type":45,"tag":264,"props":1742,"children":1743},{"class":266,"line":329},[1744],{"type":45,"tag":264,"props":1745,"children":1746},{"style":397},[1747],{"type":51,"value":1748},"    }\n",{"type":45,"tag":264,"props":1750,"children":1751},{"class":266,"line":338},[1752,1756,1760,1764,1768,1772,1776,1780,1784,1788,1792,1796,1800,1804,1808,1812],{"type":45,"tag":264,"props":1753,"children":1754},{"style":391},[1755],{"type":51,"value":793},{"type":45,"tag":264,"props":1757,"children":1758},{"style":397},[1759],{"type":51,"value":523},{"type":45,"tag":264,"props":1761,"children":1762},{"style":403},[1763],{"type":51,"value":802},{"type":45,"tag":264,"props":1765,"children":1766},{"style":554},[1767],{"type":51,"value":411},{"type":45,"tag":264,"props":1769,"children":1770},{"style":397},[1771],{"type":51,"value":416},{"type":45,"tag":264,"props":1773,"children":1774},{"style":419},[1775],{"type":51,"value":815},{"type":45,"tag":264,"props":1777,"children":1778},{"style":397},[1779],{"type":51,"value":416},{"type":45,"tag":264,"props":1781,"children":1782},{"style":554},[1783],{"type":51,"value":431},{"type":45,"tag":264,"props":1785,"children":1786},{"style":397},[1787],{"type":51,"value":523},{"type":45,"tag":264,"props":1789,"children":1790},{"style":403},[1791],{"type":51,"value":832},{"type":45,"tag":264,"props":1793,"children":1794},{"style":554},[1795],{"type":51,"value":411},{"type":45,"tag":264,"props":1797,"children":1798},{"style":391},[1799],{"type":51,"value":698},{"type":45,"tag":264,"props":1801,"children":1802},{"style":397},[1803],{"type":51,"value":523},{"type":45,"tag":264,"props":1805,"children":1806},{"style":403},[1807],{"type":51,"value":849},{"type":45,"tag":264,"props":1809,"children":1810},{"style":554},[1811],{"type":51,"value":854},{"type":45,"tag":264,"props":1813,"children":1814},{"style":397},[1815],{"type":51,"value":436},{"type":45,"tag":264,"props":1817,"children":1818},{"class":266,"line":347},[1819,1823,1827],{"type":45,"tag":264,"props":1820,"children":1821},{"style":397},[1822],{"type":51,"value":866},{"type":45,"tag":264,"props":1824,"children":1825},{"style":391},[1826],{"type":51,"value":431},{"type":45,"tag":264,"props":1828,"children":1829},{"style":397},[1830],{"type":51,"value":436},{"type":45,"tag":885,"props":1832,"children":1834},{"id":1833},"acknowledge-without-replying",[1835],{"type":51,"value":1836},"Acknowledge Without Replying",{"type":45,"tag":54,"props":1838,"children":1839},{},[1840],{"type":45,"tag":174,"props":1841,"children":1842},{},[1843],{"type":51,"value":903},{"type":45,"tag":253,"props":1845,"children":1847},{"className":255,"code":1846,"language":257,"meta":258,"style":258},"return str(MessagingResponse())  # Empty \u003CResponse\u002F>\n",[1848],{"type":45,"tag":60,"props":1849,"children":1850},{"__ignoreMap":258},[1851],{"type":45,"tag":264,"props":1852,"children":1853},{"class":266,"line":267},[1854],{"type":45,"tag":264,"props":1855,"children":1856},{},[1857],{"type":51,"value":1846},{"type":45,"tag":54,"props":1859,"children":1860},{},[1861],{"type":45,"tag":174,"props":1862,"children":1863},{},[1864],{"type":51,"value":950},{"type":45,"tag":253,"props":1866,"children":1868},{"className":373,"code":1867,"language":375,"meta":258,"style":258},"res.type(\"text\u002Fxml\").send(new twilio.twiml.MessagingResponse().toString());\n",[1869],{"type":45,"tag":60,"props":1870,"children":1871},{"__ignoreMap":258},[1872],{"type":45,"tag":264,"props":1873,"children":1874},{"class":266,"line":267},[1875,1880,1884,1888,1892,1896,1900,1904,1908,1912,1916,1920,1925,1929,1933,1937,1941,1945,1949,1953,1957,1961],{"type":45,"tag":264,"props":1876,"children":1877},{"style":391},[1878],{"type":51,"value":1879},"res",{"type":45,"tag":264,"props":1881,"children":1882},{"style":397},[1883],{"type":51,"value":523},{"type":45,"tag":264,"props":1885,"children":1886},{"style":403},[1887],{"type":51,"value":802},{"type":45,"tag":264,"props":1889,"children":1890},{"style":391},[1891],{"type":51,"value":411},{"type":45,"tag":264,"props":1893,"children":1894},{"style":397},[1895],{"type":51,"value":416},{"type":45,"tag":264,"props":1897,"children":1898},{"style":419},[1899],{"type":51,"value":815},{"type":45,"tag":264,"props":1901,"children":1902},{"style":397},[1903],{"type":51,"value":416},{"type":45,"tag":264,"props":1905,"children":1906},{"style":391},[1907],{"type":51,"value":431},{"type":45,"tag":264,"props":1909,"children":1910},{"style":397},[1911],{"type":51,"value":523},{"type":45,"tag":264,"props":1913,"children":1914},{"style":403},[1915],{"type":51,"value":832},{"type":45,"tag":264,"props":1917,"children":1918},{"style":391},[1919],{"type":51,"value":411},{"type":45,"tag":264,"props":1921,"children":1922},{"style":397},[1923],{"type":51,"value":1924},"new",{"type":45,"tag":264,"props":1926,"children":1927},{"style":391},[1928],{"type":51,"value":689},{"type":45,"tag":264,"props":1930,"children":1931},{"style":397},[1932],{"type":51,"value":523},{"type":45,"tag":264,"props":1934,"children":1935},{"style":391},[1936],{"type":51,"value":698},{"type":45,"tag":264,"props":1938,"children":1939},{"style":397},[1940],{"type":51,"value":523},{"type":45,"tag":264,"props":1942,"children":1943},{"style":403},[1944],{"type":51,"value":707},{"type":45,"tag":264,"props":1946,"children":1947},{"style":391},[1948],{"type":51,"value":506},{"type":45,"tag":264,"props":1950,"children":1951},{"style":397},[1952],{"type":51,"value":523},{"type":45,"tag":264,"props":1954,"children":1955},{"style":403},[1956],{"type":51,"value":849},{"type":45,"tag":264,"props":1958,"children":1959},{"style":391},[1960],{"type":51,"value":854},{"type":45,"tag":264,"props":1962,"children":1963},{"style":397},[1964],{"type":51,"value":436},{"type":45,"tag":885,"props":1966,"children":1968},{"id":1967},"status-callbacks-delivery-tracking",[1969],{"type":51,"value":1970},"Status Callbacks (delivery tracking)",{"type":45,"tag":54,"props":1972,"children":1973},{},[1974],{"type":51,"value":1975},"Status callbacks fire for all channels — SMS, MMS, WhatsApp, and RCS.",{"type":45,"tag":54,"props":1977,"children":1978},{},[1979],{"type":45,"tag":174,"props":1980,"children":1981},{},[1982],{"type":51,"value":903},{"type":45,"tag":253,"props":1984,"children":1986},{"className":255,"code":1985,"language":257,"meta":258,"style":258},"message = client.messages.create(\n    messaging_service_sid=\"MGxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx\",\n    to=\"+15558675310\",\n    body=\"Hello!\",\n    status_callback=\"https:\u002F\u002Fyourapp.com\u002Fstatus\"\n)\n",[1987],{"type":45,"tag":60,"props":1988,"children":1989},{"__ignoreMap":258},[1990,1998,2006,2014,2022,2030],{"type":45,"tag":264,"props":1991,"children":1992},{"class":266,"line":267},[1993],{"type":45,"tag":264,"props":1994,"children":1995},{},[1996],{"type":51,"value":1997},"message = client.messages.create(\n",{"type":45,"tag":264,"props":1999,"children":2000},{"class":266,"line":276},[2001],{"type":45,"tag":264,"props":2002,"children":2003},{},[2004],{"type":51,"value":2005},"    messaging_service_sid=\"MGxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx\",\n",{"type":45,"tag":264,"props":2007,"children":2008},{"class":266,"line":285},[2009],{"type":45,"tag":264,"props":2010,"children":2011},{},[2012],{"type":51,"value":2013},"    to=\"+15558675310\",\n",{"type":45,"tag":264,"props":2015,"children":2016},{"class":266,"line":295},[2017],{"type":45,"tag":264,"props":2018,"children":2019},{},[2020],{"type":51,"value":2021},"    body=\"Hello!\",\n",{"type":45,"tag":264,"props":2023,"children":2024},{"class":266,"line":304},[2025],{"type":45,"tag":264,"props":2026,"children":2027},{},[2028],{"type":51,"value":2029},"    status_callback=\"https:\u002F\u002Fyourapp.com\u002Fstatus\"\n",{"type":45,"tag":264,"props":2031,"children":2032},{"class":266,"line":312},[2033],{"type":45,"tag":264,"props":2034,"children":2035},{},[2036],{"type":51,"value":942},{"type":45,"tag":54,"props":2038,"children":2039},{},[2040],{"type":45,"tag":174,"props":2041,"children":2042},{},[2043],{"type":51,"value":950},{"type":45,"tag":253,"props":2045,"children":2047},{"className":373,"code":2046,"language":375,"meta":258,"style":258},"const message = await client.messages.create({\n    messagingServiceSid: \"MGxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx\",\n    to: \"+15558675310\",\n    body: \"Hello!\",\n    statusCallback: \"https:\u002F\u002Fyourapp.com\u002Fstatus\",\n});\n",[2048],{"type":45,"tag":60,"props":2049,"children":2050},{"__ignoreMap":258},[2051,2102,2131,2160,2189,2218],{"type":45,"tag":264,"props":2052,"children":2053},{"class":266,"line":267},[2054,2058,2063,2067,2072,2076,2080,2085,2089,2094,2098],{"type":45,"tag":264,"props":2055,"children":2056},{"style":385},[2057],{"type":51,"value":388},{"type":45,"tag":264,"props":2059,"children":2060},{"style":391},[2061],{"type":51,"value":2062}," message ",{"type":45,"tag":264,"props":2064,"children":2065},{"style":397},[2066],{"type":51,"value":400},{"type":45,"tag":264,"props":2068,"children":2069},{"style":963},[2070],{"type":51,"value":2071}," await",{"type":45,"tag":264,"props":2073,"children":2074},{"style":391},[2075],{"type":51,"value":971},{"type":45,"tag":264,"props":2077,"children":2078},{"style":397},[2079],{"type":51,"value":523},{"type":45,"tag":264,"props":2081,"children":2082},{"style":391},[2083],{"type":51,"value":2084},"messages",{"type":45,"tag":264,"props":2086,"children":2087},{"style":397},[2088],{"type":51,"value":523},{"type":45,"tag":264,"props":2090,"children":2091},{"style":403},[2092],{"type":51,"value":2093},"create",{"type":45,"tag":264,"props":2095,"children":2096},{"style":391},[2097],{"type":51,"value":411},{"type":45,"tag":264,"props":2099,"children":2100},{"style":397},[2101],{"type":51,"value":1019},{"type":45,"tag":264,"props":2103,"children":2104},{"class":266,"line":276},[2105,2110,2114,2118,2123,2127],{"type":45,"tag":264,"props":2106,"children":2107},{"style":554},[2108],{"type":51,"value":2109},"    messagingServiceSid",{"type":45,"tag":264,"props":2111,"children":2112},{"style":397},[2113],{"type":51,"value":562},{"type":45,"tag":264,"props":2115,"children":2116},{"style":397},[2117],{"type":51,"value":1036},{"type":45,"tag":264,"props":2119,"children":2120},{"style":419},[2121],{"type":51,"value":2122},"MGxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx",{"type":45,"tag":264,"props":2124,"children":2125},{"style":397},[2126],{"type":51,"value":416},{"type":45,"tag":264,"props":2128,"children":2129},{"style":397},[2130],{"type":51,"value":1050},{"type":45,"tag":264,"props":2132,"children":2133},{"class":266,"line":285},[2134,2139,2143,2147,2152,2156],{"type":45,"tag":264,"props":2135,"children":2136},{"style":554},[2137],{"type":51,"value":2138},"    to",{"type":45,"tag":264,"props":2140,"children":2141},{"style":397},[2142],{"type":51,"value":562},{"type":45,"tag":264,"props":2144,"children":2145},{"style":397},[2146],{"type":51,"value":1036},{"type":45,"tag":264,"props":2148,"children":2149},{"style":419},[2150],{"type":51,"value":2151},"+15558675310",{"type":45,"tag":264,"props":2153,"children":2154},{"style":397},[2155],{"type":51,"value":416},{"type":45,"tag":264,"props":2157,"children":2158},{"style":397},[2159],{"type":51,"value":1050},{"type":45,"tag":264,"props":2161,"children":2162},{"class":266,"line":295},[2163,2168,2172,2176,2181,2185],{"type":45,"tag":264,"props":2164,"children":2165},{"style":554},[2166],{"type":51,"value":2167},"    body",{"type":45,"tag":264,"props":2169,"children":2170},{"style":397},[2171],{"type":51,"value":562},{"type":45,"tag":264,"props":2173,"children":2174},{"style":397},[2175],{"type":51,"value":1036},{"type":45,"tag":264,"props":2177,"children":2178},{"style":419},[2179],{"type":51,"value":2180},"Hello!",{"type":45,"tag":264,"props":2182,"children":2183},{"style":397},[2184],{"type":51,"value":416},{"type":45,"tag":264,"props":2186,"children":2187},{"style":397},[2188],{"type":51,"value":1050},{"type":45,"tag":264,"props":2190,"children":2191},{"class":266,"line":304},[2192,2197,2201,2205,2210,2214],{"type":45,"tag":264,"props":2193,"children":2194},{"style":554},[2195],{"type":51,"value":2196},"    statusCallback",{"type":45,"tag":264,"props":2198,"children":2199},{"style":397},[2200],{"type":51,"value":562},{"type":45,"tag":264,"props":2202,"children":2203},{"style":397},[2204],{"type":51,"value":1036},{"type":45,"tag":264,"props":2206,"children":2207},{"style":419},[2208],{"type":51,"value":2209},"https:\u002F\u002Fyourapp.com\u002Fstatus",{"type":45,"tag":264,"props":2211,"children":2212},{"style":397},[2213],{"type":51,"value":416},{"type":45,"tag":264,"props":2215,"children":2216},{"style":397},[2217],{"type":51,"value":1050},{"type":45,"tag":264,"props":2219,"children":2220},{"class":266,"line":312},[2221,2225,2229],{"type":45,"tag":264,"props":2222,"children":2223},{"style":397},[2224],{"type":51,"value":866},{"type":45,"tag":264,"props":2226,"children":2227},{"style":391},[2228],{"type":51,"value":431},{"type":45,"tag":264,"props":2230,"children":2231},{"style":397},[2232],{"type":51,"value":436},{"type":45,"tag":54,"props":2234,"children":2235},{},[2236],{"type":45,"tag":174,"props":2237,"children":2238},{},[2239],{"type":51,"value":2240},"Python (Flask) — status callback handler",{"type":45,"tag":253,"props":2242,"children":2244},{"className":255,"code":2243,"language":257,"meta":258,"style":258},"@app.route(\"\u002Fstatus\", methods=[\"POST\"])\ndef message_status():\n    message_sid = request.form.get(\"MessageSid\")\n    status = request.form.get(\"MessageStatus\")\n    error_code = request.form.get(\"ErrorCode\")\n    print(f\"{message_sid}: {status}\")\n    if status == \"failed\" and error_code:\n        print(f\"Error {error_code}: {request.form.get('ErrorMessage')}\")\n    return \"\", 204\n",[2245],{"type":45,"tag":60,"props":2246,"children":2247},{"__ignoreMap":258},[2248,2256,2264,2272,2280,2288,2296,2304,2312],{"type":45,"tag":264,"props":2249,"children":2250},{"class":266,"line":267},[2251],{"type":45,"tag":264,"props":2252,"children":2253},{},[2254],{"type":51,"value":2255},"@app.route(\"\u002Fstatus\", methods=[\"POST\"])\n",{"type":45,"tag":264,"props":2257,"children":2258},{"class":266,"line":276},[2259],{"type":45,"tag":264,"props":2260,"children":2261},{},[2262],{"type":51,"value":2263},"def message_status():\n",{"type":45,"tag":264,"props":2265,"children":2266},{"class":266,"line":285},[2267],{"type":45,"tag":264,"props":2268,"children":2269},{},[2270],{"type":51,"value":2271},"    message_sid = request.form.get(\"MessageSid\")\n",{"type":45,"tag":264,"props":2273,"children":2274},{"class":266,"line":295},[2275],{"type":45,"tag":264,"props":2276,"children":2277},{},[2278],{"type":51,"value":2279},"    status = request.form.get(\"MessageStatus\")\n",{"type":45,"tag":264,"props":2281,"children":2282},{"class":266,"line":304},[2283],{"type":45,"tag":264,"props":2284,"children":2285},{},[2286],{"type":51,"value":2287},"    error_code = request.form.get(\"ErrorCode\")\n",{"type":45,"tag":264,"props":2289,"children":2290},{"class":266,"line":312},[2291],{"type":45,"tag":264,"props":2292,"children":2293},{},[2294],{"type":51,"value":2295},"    print(f\"{message_sid}: {status}\")\n",{"type":45,"tag":264,"props":2297,"children":2298},{"class":266,"line":33},[2299],{"type":45,"tag":264,"props":2300,"children":2301},{},[2302],{"type":51,"value":2303},"    if status == \"failed\" and error_code:\n",{"type":45,"tag":264,"props":2305,"children":2306},{"class":266,"line":329},[2307],{"type":45,"tag":264,"props":2308,"children":2309},{},[2310],{"type":51,"value":2311},"        print(f\"Error {error_code}: {request.form.get('ErrorMessage')}\")\n",{"type":45,"tag":264,"props":2313,"children":2314},{"class":266,"line":338},[2315],{"type":45,"tag":264,"props":2316,"children":2317},{},[2318],{"type":51,"value":2319},"    return \"\", 204\n",{"type":45,"tag":54,"props":2321,"children":2322},{},[2323],{"type":45,"tag":174,"props":2324,"children":2325},{},[2326],{"type":51,"value":2327},"Node.js (Express) — status callback handler",{"type":45,"tag":253,"props":2329,"children":2331},{"className":373,"code":2330,"language":375,"meta":258,"style":258},"app.post(\"\u002Fstatus\", (req, res) => {\n    const { MessageSid, MessageStatus, ErrorCode, ErrorMessage } = req.body;\n    console.log(`${MessageSid}: ${MessageStatus}`);\n    if (MessageStatus === \"failed\" && ErrorCode) {\n        console.log(`Error ${ErrorCode}: ${ErrorMessage}`);\n    }\n    res.sendStatus(204);\n});\n",[2332],{"type":45,"tag":60,"props":2333,"children":2334},{"__ignoreMap":258},[2335,2399,2468,2528,2578,2645,2652,2684],{"type":45,"tag":264,"props":2336,"children":2337},{"class":266,"line":267},[2338,2342,2346,2350,2354,2358,2363,2367,2371,2375,2379,2383,2387,2391,2395],{"type":45,"tag":264,"props":2339,"children":2340},{"style":391},[2341],{"type":51,"value":518},{"type":45,"tag":264,"props":2343,"children":2344},{"style":397},[2345],{"type":51,"value":523},{"type":45,"tag":264,"props":2347,"children":2348},{"style":403},[2349],{"type":51,"value":605},{"type":45,"tag":264,"props":2351,"children":2352},{"style":391},[2353],{"type":51,"value":411},{"type":45,"tag":264,"props":2355,"children":2356},{"style":397},[2357],{"type":51,"value":416},{"type":45,"tag":264,"props":2359,"children":2360},{"style":419},[2361],{"type":51,"value":2362},"\u002Fstatus",{"type":45,"tag":264,"props":2364,"children":2365},{"style":397},[2366],{"type":51,"value":416},{"type":45,"tag":264,"props":2368,"children":2369},{"style":397},[2370],{"type":51,"value":627},{"type":45,"tag":264,"props":2372,"children":2373},{"style":397},[2374],{"type":51,"value":632},{"type":45,"tag":264,"props":2376,"children":2377},{"style":635},[2378],{"type":51,"value":638},{"type":45,"tag":264,"props":2380,"children":2381},{"style":397},[2382],{"type":51,"value":627},{"type":45,"tag":264,"props":2384,"children":2385},{"style":635},[2386],{"type":51,"value":647},{"type":45,"tag":264,"props":2388,"children":2389},{"style":397},[2390],{"type":51,"value":431},{"type":45,"tag":264,"props":2392,"children":2393},{"style":385},[2394],{"type":51,"value":656},{"type":45,"tag":264,"props":2396,"children":2397},{"style":397},[2398],{"type":51,"value":661},{"type":45,"tag":264,"props":2400,"children":2401},{"class":266,"line":276},[2402,2406,2411,2416,2420,2425,2429,2434,2438,2443,2447,2451,2456,2460,2464],{"type":45,"tag":264,"props":2403,"children":2404},{"style":385},[2405],{"type":51,"value":669},{"type":45,"tag":264,"props":2407,"children":2408},{"style":397},[2409],{"type":51,"value":2410}," {",{"type":45,"tag":264,"props":2412,"children":2413},{"style":391},[2414],{"type":51,"value":2415}," MessageSid",{"type":45,"tag":264,"props":2417,"children":2418},{"style":397},[2419],{"type":51,"value":627},{"type":45,"tag":264,"props":2421,"children":2422},{"style":391},[2423],{"type":51,"value":2424}," MessageStatus",{"type":45,"tag":264,"props":2426,"children":2427},{"style":397},[2428],{"type":51,"value":627},{"type":45,"tag":264,"props":2430,"children":2431},{"style":391},[2432],{"type":51,"value":2433}," ErrorCode",{"type":45,"tag":264,"props":2435,"children":2436},{"style":397},[2437],{"type":51,"value":627},{"type":45,"tag":264,"props":2439,"children":2440},{"style":391},[2441],{"type":51,"value":2442}," ErrorMessage",{"type":45,"tag":264,"props":2444,"children":2445},{"style":397},[2446],{"type":51,"value":573},{"type":45,"tag":264,"props":2448,"children":2449},{"style":397},[2450],{"type":51,"value":679},{"type":45,"tag":264,"props":2452,"children":2453},{"style":391},[2454],{"type":51,"value":2455}," req",{"type":45,"tag":264,"props":2457,"children":2458},{"style":397},[2459],{"type":51,"value":523},{"type":45,"tag":264,"props":2461,"children":2462},{"style":391},[2463],{"type":51,"value":764},{"type":45,"tag":264,"props":2465,"children":2466},{"style":397},[2467],{"type":51,"value":436},{"type":45,"tag":264,"props":2469,"children":2470},{"class":266,"line":285},[2471,2476,2480,2485,2489,2494,2498,2502,2507,2511,2516,2520,2524],{"type":45,"tag":264,"props":2472,"children":2473},{"style":391},[2474],{"type":51,"value":2475},"    console",{"type":45,"tag":264,"props":2477,"children":2478},{"style":397},[2479],{"type":51,"value":523},{"type":45,"tag":264,"props":2481,"children":2482},{"style":403},[2483],{"type":51,"value":2484},"log",{"type":45,"tag":264,"props":2486,"children":2487},{"style":554},[2488],{"type":51,"value":411},{"type":45,"tag":264,"props":2490,"children":2491},{"style":397},[2492],{"type":51,"value":2493},"`${",{"type":45,"tag":264,"props":2495,"children":2496},{"style":391},[2497],{"type":51,"value":1159},{"type":45,"tag":264,"props":2499,"children":2500},{"style":397},[2501],{"type":51,"value":866},{"type":45,"tag":264,"props":2503,"children":2504},{"style":419},[2505],{"type":51,"value":2506},": ",{"type":45,"tag":264,"props":2508,"children":2509},{"style":397},[2510],{"type":51,"value":751},{"type":45,"tag":264,"props":2512,"children":2513},{"style":391},[2514],{"type":51,"value":2515},"MessageStatus",{"type":45,"tag":264,"props":2517,"children":2518},{"style":397},[2519],{"type":51,"value":777},{"type":45,"tag":264,"props":2521,"children":2522},{"style":554},[2523],{"type":51,"value":431},{"type":45,"tag":264,"props":2525,"children":2526},{"style":397},[2527],{"type":51,"value":436},{"type":45,"tag":264,"props":2529,"children":2530},{"class":266,"line":295},[2531,2535,2539,2543,2548,2552,2557,2561,2566,2570,2574],{"type":45,"tag":264,"props":2532,"children":2533},{"style":963},[2534],{"type":51,"value":1581},{"type":45,"tag":264,"props":2536,"children":2537},{"style":554},[2538],{"type":51,"value":632},{"type":45,"tag":264,"props":2540,"children":2541},{"style":391},[2542],{"type":51,"value":2515},{"type":45,"tag":264,"props":2544,"children":2545},{"style":397},[2546],{"type":51,"value":2547}," ===",{"type":45,"tag":264,"props":2549,"children":2550},{"style":397},[2551],{"type":51,"value":1036},{"type":45,"tag":264,"props":2553,"children":2554},{"style":419},[2555],{"type":51,"value":2556},"failed",{"type":45,"tag":264,"props":2558,"children":2559},{"style":397},[2560],{"type":51,"value":416},{"type":45,"tag":264,"props":2562,"children":2563},{"style":397},[2564],{"type":51,"value":2565}," &&",{"type":45,"tag":264,"props":2567,"children":2568},{"style":391},[2569],{"type":51,"value":2433},{"type":45,"tag":264,"props":2571,"children":2572},{"style":554},[2573],{"type":51,"value":1605},{"type":45,"tag":264,"props":2575,"children":2576},{"style":397},[2577],{"type":51,"value":1019},{"type":45,"tag":264,"props":2579,"children":2580},{"class":266,"line":304},[2581,2586,2590,2594,2598,2602,2607,2611,2616,2620,2624,2628,2633,2637,2641],{"type":45,"tag":264,"props":2582,"children":2583},{"style":391},[2584],{"type":51,"value":2585},"        console",{"type":45,"tag":264,"props":2587,"children":2588},{"style":397},[2589],{"type":51,"value":523},{"type":45,"tag":264,"props":2591,"children":2592},{"style":403},[2593],{"type":51,"value":2484},{"type":45,"tag":264,"props":2595,"children":2596},{"style":554},[2597],{"type":51,"value":411},{"type":45,"tag":264,"props":2599,"children":2600},{"style":397},[2601],{"type":51,"value":741},{"type":45,"tag":264,"props":2603,"children":2604},{"style":419},[2605],{"type":51,"value":2606},"Error ",{"type":45,"tag":264,"props":2608,"children":2609},{"style":397},[2610],{"type":51,"value":751},{"type":45,"tag":264,"props":2612,"children":2613},{"style":391},[2614],{"type":51,"value":2615},"ErrorCode",{"type":45,"tag":264,"props":2617,"children":2618},{"style":397},[2619],{"type":51,"value":866},{"type":45,"tag":264,"props":2621,"children":2622},{"style":419},[2623],{"type":51,"value":2506},{"type":45,"tag":264,"props":2625,"children":2626},{"style":397},[2627],{"type":51,"value":751},{"type":45,"tag":264,"props":2629,"children":2630},{"style":391},[2631],{"type":51,"value":2632},"ErrorMessage",{"type":45,"tag":264,"props":2634,"children":2635},{"style":397},[2636],{"type":51,"value":777},{"type":45,"tag":264,"props":2638,"children":2639},{"style":554},[2640],{"type":51,"value":431},{"type":45,"tag":264,"props":2642,"children":2643},{"style":397},[2644],{"type":51,"value":436},{"type":45,"tag":264,"props":2646,"children":2647},{"class":266,"line":312},[2648],{"type":45,"tag":264,"props":2649,"children":2650},{"style":397},[2651],{"type":51,"value":1748},{"type":45,"tag":264,"props":2653,"children":2654},{"class":266,"line":33},[2655,2659,2663,2668,2672,2676,2680],{"type":45,"tag":264,"props":2656,"children":2657},{"style":391},[2658],{"type":51,"value":793},{"type":45,"tag":264,"props":2660,"children":2661},{"style":397},[2662],{"type":51,"value":523},{"type":45,"tag":264,"props":2664,"children":2665},{"style":403},[2666],{"type":51,"value":2667},"sendStatus",{"type":45,"tag":264,"props":2669,"children":2670},{"style":554},[2671],{"type":51,"value":411},{"type":45,"tag":264,"props":2673,"children":2674},{"style":1515},[2675],{"type":51,"value":65},{"type":45,"tag":264,"props":2677,"children":2678},{"style":554},[2679],{"type":51,"value":431},{"type":45,"tag":264,"props":2681,"children":2682},{"style":397},[2683],{"type":51,"value":436},{"type":45,"tag":264,"props":2685,"children":2686},{"class":266,"line":329},[2687,2691,2695],{"type":45,"tag":264,"props":2688,"children":2689},{"style":397},[2690],{"type":51,"value":866},{"type":45,"tag":264,"props":2692,"children":2693},{"style":391},[2694],{"type":51,"value":431},{"type":45,"tag":264,"props":2696,"children":2697},{"style":397},[2698],{"type":51,"value":436},{"type":45,"tag":54,"props":2700,"children":2701},{},[2702,2704,2710,2712,2718,2720,2725],{"type":51,"value":2703},"Status flow: ",{"type":45,"tag":60,"props":2705,"children":2707},{"className":2706},[],[2708],{"type":51,"value":2709},"queued → sent → delivered",{"type":51,"value":2711}," (or ",{"type":45,"tag":60,"props":2713,"children":2715},{"className":2714},[],[2716],{"type":51,"value":2717},"undelivered",{"type":51,"value":2719},"\u002F",{"type":45,"tag":60,"props":2721,"children":2723},{"className":2722},[],[2724],{"type":51,"value":2556},{"type":51,"value":431},{"type":45,"tag":885,"props":2727,"children":2729},{"id":2728},"webhook-signature-validation",[2730],{"type":51,"value":2731},"Webhook Signature Validation",{"type":45,"tag":54,"props":2733,"children":2734},{},[2735],{"type":45,"tag":174,"props":2736,"children":2737},{},[2738],{"type":51,"value":251},{"type":45,"tag":253,"props":2740,"children":2742},{"className":255,"code":2741,"language":257,"meta":258,"style":258},"from twilio.request_validator import RequestValidator\n\nvalidator = RequestValidator(os.environ[\"TWILIO_AUTH_TOKEN\"])\n\n@app.route(\"\u002Fincoming\", methods=[\"POST\"])\ndef incoming_message():\n    if not validator.validate(request.url, request.form, request.headers.get(\"X-Twilio-Signature\", \"\")):\n        return \"Forbidden\", 403\n    response = MessagingResponse()\n    response.message(\"Hello!\")\n    return str(response)\n",[2743],{"type":45,"tag":60,"props":2744,"children":2745},{"__ignoreMap":258},[2746,2754,2761,2769,2776,2783,2790,2798,2806,2813,2821],{"type":45,"tag":264,"props":2747,"children":2748},{"class":266,"line":267},[2749],{"type":45,"tag":264,"props":2750,"children":2751},{},[2752],{"type":51,"value":2753},"from twilio.request_validator import RequestValidator\n",{"type":45,"tag":264,"props":2755,"children":2756},{"class":266,"line":276},[2757],{"type":45,"tag":264,"props":2758,"children":2759},{"emptyLinePlaceholder":289},[2760],{"type":51,"value":292},{"type":45,"tag":264,"props":2762,"children":2763},{"class":266,"line":285},[2764],{"type":45,"tag":264,"props":2765,"children":2766},{},[2767],{"type":51,"value":2768},"validator = RequestValidator(os.environ[\"TWILIO_AUTH_TOKEN\"])\n",{"type":45,"tag":264,"props":2770,"children":2771},{"class":266,"line":295},[2772],{"type":45,"tag":264,"props":2773,"children":2774},{"emptyLinePlaceholder":289},[2775],{"type":51,"value":292},{"type":45,"tag":264,"props":2777,"children":2778},{"class":266,"line":304},[2779],{"type":45,"tag":264,"props":2780,"children":2781},{},[2782],{"type":51,"value":318},{"type":45,"tag":264,"props":2784,"children":2785},{"class":266,"line":312},[2786],{"type":45,"tag":264,"props":2787,"children":2788},{},[2789],{"type":51,"value":326},{"type":45,"tag":264,"props":2791,"children":2792},{"class":266,"line":33},[2793],{"type":45,"tag":264,"props":2794,"children":2795},{},[2796],{"type":51,"value":2797},"    if not validator.validate(request.url, request.form, request.headers.get(\"X-Twilio-Signature\", \"\")):\n",{"type":45,"tag":264,"props":2799,"children":2800},{"class":266,"line":329},[2801],{"type":45,"tag":264,"props":2802,"children":2803},{},[2804],{"type":51,"value":2805},"        return \"Forbidden\", 403\n",{"type":45,"tag":264,"props":2807,"children":2808},{"class":266,"line":338},[2809],{"type":45,"tag":264,"props":2810,"children":2811},{},[2812],{"type":51,"value":344},{"type":45,"tag":264,"props":2814,"children":2815},{"class":266,"line":347},[2816],{"type":45,"tag":264,"props":2817,"children":2818},{},[2819],{"type":51,"value":2820},"    response.message(\"Hello!\")\n",{"type":45,"tag":264,"props":2822,"children":2823},{"class":266,"line":356},[2824],{"type":45,"tag":264,"props":2825,"children":2826},{},[2827],{"type":51,"value":362},{"type":45,"tag":54,"props":2829,"children":2830},{},[2831],{"type":45,"tag":174,"props":2832,"children":2833},{},[2834],{"type":51,"value":950},{"type":45,"tag":253,"props":2836,"children":2838},{"className":373,"code":2837,"language":375,"meta":258,"style":258},"const { validateRequest } = require(\"twilio\");\n\napp.post(\"\u002Fincoming\", (req, res) => {\n    const isValid = validateRequest(\n        process.env.TWILIO_AUTH_TOKEN,\n        req.headers[\"x-twilio-signature\"],\n        `https:\u002F\u002F${req.headers.host}${req.path}`,\n        req.body\n    );\n    if (!isValid) return res.status(403).send(\"Forbidden\");\n    const twiml = new twilio.twiml.MessagingResponse();\n    twiml.message(\"Hello!\");\n    res.type(\"text\u002Fxml\").send(twiml.toString());\n});\n",[2839],{"type":45,"tag":60,"props":2840,"children":2841},{"__ignoreMap":258},[2842,2894,2901,2964,2990,3019,3063,3127,3143,3155,3244,3291,3331,3399],{"type":45,"tag":264,"props":2843,"children":2844},{"class":266,"line":267},[2845,2849,2853,2858,2862,2866,2870,2874,2878,2882,2886,2890],{"type":45,"tag":264,"props":2846,"children":2847},{"style":385},[2848],{"type":51,"value":388},{"type":45,"tag":264,"props":2850,"children":2851},{"style":397},[2852],{"type":51,"value":2410},{"type":45,"tag":264,"props":2854,"children":2855},{"style":391},[2856],{"type":51,"value":2857}," validateRequest ",{"type":45,"tag":264,"props":2859,"children":2860},{"style":397},[2861],{"type":51,"value":866},{"type":45,"tag":264,"props":2863,"children":2864},{"style":397},[2865],{"type":51,"value":679},{"type":45,"tag":264,"props":2867,"children":2868},{"style":403},[2869],{"type":51,"value":406},{"type":45,"tag":264,"props":2871,"children":2872},{"style":391},[2873],{"type":51,"value":411},{"type":45,"tag":264,"props":2875,"children":2876},{"style":397},[2877],{"type":51,"value":416},{"type":45,"tag":264,"props":2879,"children":2880},{"style":419},[2881],{"type":51,"value":8},{"type":45,"tag":264,"props":2883,"children":2884},{"style":397},[2885],{"type":51,"value":416},{"type":45,"tag":264,"props":2887,"children":2888},{"style":391},[2889],{"type":51,"value":431},{"type":45,"tag":264,"props":2891,"children":2892},{"style":397},[2893],{"type":51,"value":436},{"type":45,"tag":264,"props":2895,"children":2896},{"class":266,"line":276},[2897],{"type":45,"tag":264,"props":2898,"children":2899},{"emptyLinePlaceholder":289},[2900],{"type":51,"value":292},{"type":45,"tag":264,"props":2902,"children":2903},{"class":266,"line":285},[2904,2908,2912,2916,2920,2924,2928,2932,2936,2940,2944,2948,2952,2956,2960],{"type":45,"tag":264,"props":2905,"children":2906},{"style":391},[2907],{"type":51,"value":518},{"type":45,"tag":264,"props":2909,"children":2910},{"style":397},[2911],{"type":51,"value":523},{"type":45,"tag":264,"props":2913,"children":2914},{"style":403},[2915],{"type":51,"value":605},{"type":45,"tag":264,"props":2917,"children":2918},{"style":391},[2919],{"type":51,"value":411},{"type":45,"tag":264,"props":2921,"children":2922},{"style":397},[2923],{"type":51,"value":416},{"type":45,"tag":264,"props":2925,"children":2926},{"style":419},[2927],{"type":51,"value":618},{"type":45,"tag":264,"props":2929,"children":2930},{"style":397},[2931],{"type":51,"value":416},{"type":45,"tag":264,"props":2933,"children":2934},{"style":397},[2935],{"type":51,"value":627},{"type":45,"tag":264,"props":2937,"children":2938},{"style":397},[2939],{"type":51,"value":632},{"type":45,"tag":264,"props":2941,"children":2942},{"style":635},[2943],{"type":51,"value":638},{"type":45,"tag":264,"props":2945,"children":2946},{"style":397},[2947],{"type":51,"value":627},{"type":45,"tag":264,"props":2949,"children":2950},{"style":635},[2951],{"type":51,"value":647},{"type":45,"tag":264,"props":2953,"children":2954},{"style":397},[2955],{"type":51,"value":431},{"type":45,"tag":264,"props":2957,"children":2958},{"style":385},[2959],{"type":51,"value":656},{"type":45,"tag":264,"props":2961,"children":2962},{"style":397},[2963],{"type":51,"value":661},{"type":45,"tag":264,"props":2965,"children":2966},{"class":266,"line":295},[2967,2971,2976,2980,2985],{"type":45,"tag":264,"props":2968,"children":2969},{"style":385},[2970],{"type":51,"value":669},{"type":45,"tag":264,"props":2972,"children":2973},{"style":391},[2974],{"type":51,"value":2975}," isValid",{"type":45,"tag":264,"props":2977,"children":2978},{"style":397},[2979],{"type":51,"value":679},{"type":45,"tag":264,"props":2981,"children":2982},{"style":403},[2983],{"type":51,"value":2984}," validateRequest",{"type":45,"tag":264,"props":2986,"children":2987},{"style":554},[2988],{"type":51,"value":2989},"(\n",{"type":45,"tag":264,"props":2991,"children":2992},{"class":266,"line":304},[2993,2998,3002,3007,3011,3015],{"type":45,"tag":264,"props":2994,"children":2995},{"style":391},[2996],{"type":51,"value":2997},"        process",{"type":45,"tag":264,"props":2999,"children":3000},{"style":397},[3001],{"type":51,"value":523},{"type":45,"tag":264,"props":3003,"children":3004},{"style":391},[3005],{"type":51,"value":3006},"env",{"type":45,"tag":264,"props":3008,"children":3009},{"style":397},[3010],{"type":51,"value":523},{"type":45,"tag":264,"props":3012,"children":3013},{"style":391},[3014],{"type":51,"value":131},{"type":45,"tag":264,"props":3016,"children":3017},{"style":397},[3018],{"type":51,"value":1050},{"type":45,"tag":264,"props":3020,"children":3021},{"class":266,"line":312},[3022,3027,3031,3036,3041,3045,3050,3054,3059],{"type":45,"tag":264,"props":3023,"children":3024},{"style":391},[3025],{"type":51,"value":3026},"        req",{"type":45,"tag":264,"props":3028,"children":3029},{"style":397},[3030],{"type":51,"value":523},{"type":45,"tag":264,"props":3032,"children":3033},{"style":391},[3034],{"type":51,"value":3035},"headers",{"type":45,"tag":264,"props":3037,"children":3038},{"style":554},[3039],{"type":51,"value":3040},"[",{"type":45,"tag":264,"props":3042,"children":3043},{"style":397},[3044],{"type":51,"value":416},{"type":45,"tag":264,"props":3046,"children":3047},{"style":419},[3048],{"type":51,"value":3049},"x-twilio-signature",{"type":45,"tag":264,"props":3051,"children":3052},{"style":397},[3053],{"type":51,"value":416},{"type":45,"tag":264,"props":3055,"children":3056},{"style":554},[3057],{"type":51,"value":3058},"]",{"type":45,"tag":264,"props":3060,"children":3061},{"style":397},[3062],{"type":51,"value":1050},{"type":45,"tag":264,"props":3064,"children":3065},{"class":266,"line":33},[3066,3071,3076,3080,3084,3088,3092,3096,3101,3106,3110,3114,3119,3123],{"type":45,"tag":264,"props":3067,"children":3068},{"style":397},[3069],{"type":51,"value":3070},"        `",{"type":45,"tag":264,"props":3072,"children":3073},{"style":419},[3074],{"type":51,"value":3075},"https:\u002F\u002F",{"type":45,"tag":264,"props":3077,"children":3078},{"style":397},[3079],{"type":51,"value":751},{"type":45,"tag":264,"props":3081,"children":3082},{"style":391},[3083],{"type":51,"value":638},{"type":45,"tag":264,"props":3085,"children":3086},{"style":397},[3087],{"type":51,"value":523},{"type":45,"tag":264,"props":3089,"children":3090},{"style":391},[3091],{"type":51,"value":3035},{"type":45,"tag":264,"props":3093,"children":3094},{"style":397},[3095],{"type":51,"value":523},{"type":45,"tag":264,"props":3097,"children":3098},{"style":391},[3099],{"type":51,"value":3100},"host",{"type":45,"tag":264,"props":3102,"children":3103},{"style":397},[3104],{"type":51,"value":3105},"}${",{"type":45,"tag":264,"props":3107,"children":3108},{"style":391},[3109],{"type":51,"value":638},{"type":45,"tag":264,"props":3111,"children":3112},{"style":397},[3113],{"type":51,"value":523},{"type":45,"tag":264,"props":3115,"children":3116},{"style":391},[3117],{"type":51,"value":3118},"path",{"type":45,"tag":264,"props":3120,"children":3121},{"style":397},[3122],{"type":51,"value":777},{"type":45,"tag":264,"props":3124,"children":3125},{"style":397},[3126],{"type":51,"value":1050},{"type":45,"tag":264,"props":3128,"children":3129},{"class":266,"line":329},[3130,3134,3138],{"type":45,"tag":264,"props":3131,"children":3132},{"style":391},[3133],{"type":51,"value":3026},{"type":45,"tag":264,"props":3135,"children":3136},{"style":397},[3137],{"type":51,"value":523},{"type":45,"tag":264,"props":3139,"children":3140},{"style":391},[3141],{"type":51,"value":3142},"body\n",{"type":45,"tag":264,"props":3144,"children":3145},{"class":266,"line":338},[3146,3151],{"type":45,"tag":264,"props":3147,"children":3148},{"style":554},[3149],{"type":51,"value":3150},"    )",{"type":45,"tag":264,"props":3152,"children":3153},{"style":397},[3154],{"type":51,"value":436},{"type":45,"tag":264,"props":3156,"children":3157},{"class":266,"line":347},[3158,3162,3166,3171,3176,3180,3185,3189,3193,3198,3202,3207,3211,3215,3219,3223,3227,3232,3236,3240],{"type":45,"tag":264,"props":3159,"children":3160},{"style":963},[3161],{"type":51,"value":1581},{"type":45,"tag":264,"props":3163,"children":3164},{"style":554},[3165],{"type":51,"value":632},{"type":45,"tag":264,"props":3167,"children":3168},{"style":397},[3169],{"type":51,"value":3170},"!",{"type":45,"tag":264,"props":3172,"children":3173},{"style":391},[3174],{"type":51,"value":3175},"isValid",{"type":45,"tag":264,"props":3177,"children":3178},{"style":554},[3179],{"type":51,"value":1605},{"type":45,"tag":264,"props":3181,"children":3182},{"style":963},[3183],{"type":51,"value":3184},"return",{"type":45,"tag":264,"props":3186,"children":3187},{"style":391},[3188],{"type":51,"value":647},{"type":45,"tag":264,"props":3190,"children":3191},{"style":397},[3192],{"type":51,"value":523},{"type":45,"tag":264,"props":3194,"children":3195},{"style":403},[3196],{"type":51,"value":3197},"status",{"type":45,"tag":264,"props":3199,"children":3200},{"style":554},[3201],{"type":51,"value":411},{"type":45,"tag":264,"props":3203,"children":3204},{"style":1515},[3205],{"type":51,"value":3206},"403",{"type":45,"tag":264,"props":3208,"children":3209},{"style":554},[3210],{"type":51,"value":431},{"type":45,"tag":264,"props":3212,"children":3213},{"style":397},[3214],{"type":51,"value":523},{"type":45,"tag":264,"props":3216,"children":3217},{"style":403},[3218],{"type":51,"value":832},{"type":45,"tag":264,"props":3220,"children":3221},{"style":554},[3222],{"type":51,"value":411},{"type":45,"tag":264,"props":3224,"children":3225},{"style":397},[3226],{"type":51,"value":416},{"type":45,"tag":264,"props":3228,"children":3229},{"style":419},[3230],{"type":51,"value":3231},"Forbidden",{"type":45,"tag":264,"props":3233,"children":3234},{"style":397},[3235],{"type":51,"value":416},{"type":45,"tag":264,"props":3237,"children":3238},{"style":554},[3239],{"type":51,"value":431},{"type":45,"tag":264,"props":3241,"children":3242},{"style":397},[3243],{"type":51,"value":436},{"type":45,"tag":264,"props":3245,"children":3246},{"class":266,"line":356},[3247,3251,3255,3259,3263,3267,3271,3275,3279,3283,3287],{"type":45,"tag":264,"props":3248,"children":3249},{"style":385},[3250],{"type":51,"value":669},{"type":45,"tag":264,"props":3252,"children":3253},{"style":391},[3254],{"type":51,"value":674},{"type":45,"tag":264,"props":3256,"children":3257},{"style":397},[3258],{"type":51,"value":679},{"type":45,"tag":264,"props":3260,"children":3261},{"style":397},[3262],{"type":51,"value":684},{"type":45,"tag":264,"props":3264,"children":3265},{"style":391},[3266],{"type":51,"value":689},{"type":45,"tag":264,"props":3268,"children":3269},{"style":397},[3270],{"type":51,"value":523},{"type":45,"tag":264,"props":3272,"children":3273},{"style":391},[3274],{"type":51,"value":698},{"type":45,"tag":264,"props":3276,"children":3277},{"style":397},[3278],{"type":51,"value":523},{"type":45,"tag":264,"props":3280,"children":3281},{"style":403},[3282],{"type":51,"value":707},{"type":45,"tag":264,"props":3284,"children":3285},{"style":554},[3286],{"type":51,"value":506},{"type":45,"tag":264,"props":3288,"children":3289},{"style":397},[3290],{"type":51,"value":436},{"type":45,"tag":264,"props":3292,"children":3294},{"class":266,"line":3293},12,[3295,3299,3303,3307,3311,3315,3319,3323,3327],{"type":45,"tag":264,"props":3296,"children":3297},{"style":391},[3298],{"type":51,"value":723},{"type":45,"tag":264,"props":3300,"children":3301},{"style":397},[3302],{"type":51,"value":523},{"type":45,"tag":264,"props":3304,"children":3305},{"style":403},[3306],{"type":51,"value":732},{"type":45,"tag":264,"props":3308,"children":3309},{"style":554},[3310],{"type":51,"value":411},{"type":45,"tag":264,"props":3312,"children":3313},{"style":397},[3314],{"type":51,"value":416},{"type":45,"tag":264,"props":3316,"children":3317},{"style":419},[3318],{"type":51,"value":2180},{"type":45,"tag":264,"props":3320,"children":3321},{"style":397},[3322],{"type":51,"value":416},{"type":45,"tag":264,"props":3324,"children":3325},{"style":554},[3326],{"type":51,"value":431},{"type":45,"tag":264,"props":3328,"children":3329},{"style":397},[3330],{"type":51,"value":436},{"type":45,"tag":264,"props":3332,"children":3334},{"class":266,"line":3333},13,[3335,3339,3343,3347,3351,3355,3359,3363,3367,3371,3375,3379,3383,3387,3391,3395],{"type":45,"tag":264,"props":3336,"children":3337},{"style":391},[3338],{"type":51,"value":793},{"type":45,"tag":264,"props":3340,"children":3341},{"style":397},[3342],{"type":51,"value":523},{"type":45,"tag":264,"props":3344,"children":3345},{"style":403},[3346],{"type":51,"value":802},{"type":45,"tag":264,"props":3348,"children":3349},{"style":554},[3350],{"type":51,"value":411},{"type":45,"tag":264,"props":3352,"children":3353},{"style":397},[3354],{"type":51,"value":416},{"type":45,"tag":264,"props":3356,"children":3357},{"style":419},[3358],{"type":51,"value":815},{"type":45,"tag":264,"props":3360,"children":3361},{"style":397},[3362],{"type":51,"value":416},{"type":45,"tag":264,"props":3364,"children":3365},{"style":554},[3366],{"type":51,"value":431},{"type":45,"tag":264,"props":3368,"children":3369},{"style":397},[3370],{"type":51,"value":523},{"type":45,"tag":264,"props":3372,"children":3373},{"style":403},[3374],{"type":51,"value":832},{"type":45,"tag":264,"props":3376,"children":3377},{"style":554},[3378],{"type":51,"value":411},{"type":45,"tag":264,"props":3380,"children":3381},{"style":391},[3382],{"type":51,"value":698},{"type":45,"tag":264,"props":3384,"children":3385},{"style":397},[3386],{"type":51,"value":523},{"type":45,"tag":264,"props":3388,"children":3389},{"style":403},[3390],{"type":51,"value":849},{"type":45,"tag":264,"props":3392,"children":3393},{"style":554},[3394],{"type":51,"value":854},{"type":45,"tag":264,"props":3396,"children":3397},{"style":397},[3398],{"type":51,"value":436},{"type":45,"tag":264,"props":3400,"children":3402},{"class":266,"line":3401},14,[3403,3407,3411],{"type":45,"tag":264,"props":3404,"children":3405},{"style":397},[3406],{"type":51,"value":866},{"type":45,"tag":264,"props":3408,"children":3409},{"style":391},[3410],{"type":51,"value":431},{"type":45,"tag":264,"props":3412,"children":3413},{"style":397},[3414],{"type":51,"value":436},{"type":45,"tag":69,"props":3416,"children":3417},{},[],{"type":45,"tag":46,"props":3419,"children":3421},{"id":3420},"cannot",[3422],{"type":51,"value":3423},"CANNOT",{"type":45,"tag":79,"props":3425,"children":3426},{},[3427,3437,3462,3472],{"type":45,"tag":83,"props":3428,"children":3429},{},[3430,3435],{"type":45,"tag":174,"props":3431,"children":3432},{},[3433],{"type":51,"value":3434},"Cannot exceed 15-second webhook response time",{"type":51,"value":3436}," — Twilio retries on timeout",{"type":45,"tag":83,"props":3438,"children":3439},{},[3440,3445,3447,3453,3455,3460],{"type":45,"tag":174,"props":3441,"children":3442},{},[3443],{"type":51,"value":3444},"Cannot return arbitrary content types",{"type":51,"value":3446}," — Use ",{"type":45,"tag":60,"props":3448,"children":3450},{"className":3449},[],[3451],{"type":51,"value":3452},"Content-Type: text\u002Fxml",{"type":51,"value":3454}," with TwiML for replies; ",{"type":45,"tag":60,"props":3456,"children":3458},{"className":3457},[],[3459],{"type":51,"value":65},{"type":51,"value":3461}," for status callbacks",{"type":45,"tag":83,"props":3463,"children":3464},{},[3465,3470],{"type":45,"tag":174,"props":3466,"children":3467},{},[3468],{"type":51,"value":3469},"Cannot use ngrok URLs across restarts",{"type":51,"value":3471}," — URLs change on restart. Use a stable tunnel for persistent testing.",{"type":45,"tag":83,"props":3473,"children":3474},{},[3475,3480,3482,3488],{"type":45,"tag":174,"props":3476,"children":3477},{},[3478],{"type":51,"value":3479},"Cannot guarantee delivery confirmation",{"type":51,"value":3481}," — Status callbacks are best-effort. ",{"type":45,"tag":60,"props":3483,"children":3485},{"className":3484},[],[3486],{"type":51,"value":3487},"delivered",{"type":51,"value":3489}," requires carrier confirmation.",{"type":45,"tag":69,"props":3491,"children":3492},{},[],{"type":45,"tag":46,"props":3494,"children":3496},{"id":3495},"common-errors",[3497],{"type":51,"value":3498},"Common Errors",{"type":45,"tag":1121,"props":3500,"children":3501},{},[3502,3523],{"type":45,"tag":1125,"props":3503,"children":3504},{},[3505],{"type":45,"tag":1129,"props":3506,"children":3507},{},[3508,3513,3518],{"type":45,"tag":1133,"props":3509,"children":3510},{},[3511],{"type":51,"value":3512},"Code",{"type":45,"tag":1133,"props":3514,"children":3515},{},[3516],{"type":51,"value":3517},"Meaning",{"type":45,"tag":1133,"props":3519,"children":3520},{},[3521],{"type":51,"value":3522},"Fix",{"type":45,"tag":1144,"props":3524,"children":3525},{},[3526],{"type":45,"tag":1129,"props":3527,"children":3528},{},[3529,3534,3539],{"type":45,"tag":1151,"props":3530,"children":3531},{},[3532],{"type":51,"value":3533},"11200",{"type":45,"tag":1151,"props":3535,"children":3536},{},[3537],{"type":51,"value":3538},"HTTP retrieval failure — Twilio cannot reach your webhook URL",{"type":45,"tag":1151,"props":3540,"children":3541},{},[3542,3544,3550,3552,3558],{"type":51,"value":3543},"Verify endpoint is reachable (",{"type":45,"tag":60,"props":3545,"children":3547},{"className":3546},[],[3548],{"type":51,"value":3549},"curl -I",{"type":51,"value":3551}," the URL), check DNS, firewall, and SSL certificate validity. See ",{"type":45,"tag":60,"props":3553,"children":3555},{"className":3554},[],[3556],{"type":51,"value":3557},"twilio-debugging-observability",{"type":51,"value":3559}," for deeper webhook troubleshooting.",{"type":45,"tag":69,"props":3561,"children":3562},{},[],{"type":45,"tag":46,"props":3564,"children":3566},{"id":3565},"next-steps",[3567],{"type":51,"value":3568},"Next Steps",{"type":45,"tag":79,"props":3570,"children":3571},{},[3572,3587],{"type":45,"tag":83,"props":3573,"children":3574},{},[3575,3580,3582],{"type":45,"tag":174,"props":3576,"children":3577},{},[3578],{"type":51,"value":3579},"Send outbound messages:",{"type":51,"value":3581}," ",{"type":45,"tag":60,"props":3583,"children":3585},{"className":3584},[],[3586],{"type":51,"value":101},{"type":45,"tag":83,"props":3588,"children":3589},{},[3590,3595,3596],{"type":45,"tag":174,"props":3591,"children":3592},{},[3593],{"type":51,"value":3594},"Manage sender pools:",{"type":51,"value":3581},{"type":45,"tag":60,"props":3597,"children":3599},{"className":3598},[],[3600],{"type":51,"value":3601},"twilio-messaging-services",{"type":45,"tag":3603,"props":3604,"children":3605},"style",{},[3606],{"type":51,"value":3607},"html .light .shiki span {color: var(--shiki-light);background: var(--shiki-light-bg);font-style: var(--shiki-light-font-style);font-weight: var(--shiki-light-font-weight);text-decoration: var(--shiki-light-text-decoration);}html.light .shiki span {color: var(--shiki-light);background: var(--shiki-light-bg);font-style: var(--shiki-light-font-style);font-weight: var(--shiki-light-font-weight);text-decoration: var(--shiki-light-text-decoration);}html .default .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}html .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}html .dark .shiki span {color: var(--shiki-dark);background: var(--shiki-dark-bg);font-style: var(--shiki-dark-font-style);font-weight: var(--shiki-dark-font-weight);text-decoration: var(--shiki-dark-text-decoration);}html.dark .shiki span {color: var(--shiki-dark);background: var(--shiki-dark-bg);font-style: var(--shiki-dark-font-style);font-weight: var(--shiki-dark-font-weight);text-decoration: var(--shiki-dark-text-decoration);}",{"items":3609,"total":3785},[3610,3623,3643,3654,3666,3681,3698,3710,3726,3739,3755,3773],{"slug":93,"name":93,"fn":3611,"description":3612,"org":3613,"tags":3614,"stars":29,"repoUrl":30,"updatedAt":3622},"configure Twilio accounts and credentials","Create and configure a Twilio account from scratch. Covers free trial signup, trial limitations, getting credentials (Account SID and Auth Token), buying a phone number, verifying recipient numbers for trial use, SDK installation, first API call, subaccount management (creation, inheritance, credential isolation, limits), and enabling specific products (AI Assistants, Conversations, Verify, ConversationRelay, WhatsApp). Use this skill before any other Twilio skill if you do not yet have a Twilio account or need to enable a product. For Organization-level governance (SSO, SCIM, multi-team), see `twilio-organizations-setup`.\n",{"slug":8,"name":9,"logoUrl":10,"githubOrg":8},[3615,3618,3621],{"name":3616,"slug":3617,"type":15},"API Development","api-development",{"name":3619,"slug":3620,"type":15},"Communications","communications",{"name":13,"slug":14,"type":15},"2026-08-01T05:43:28.968968",{"slug":3624,"name":3624,"fn":3625,"description":3626,"org":3627,"tags":3628,"stars":29,"repoUrl":30,"updatedAt":3642},"twilio-agent-augmentation-architect","augment human agents with AI intelligence","Planning skill for augmenting human agents with real-time AI intelligence. Qualifies the developer's use case across coaching, compliance, QA, and routing to recommend the right Conversation Intelligence + Conversation Memory + TaskRouter architecture. Handles both \"I want to add AI coaching to my call center\" and \"configure Conversation Intelligence operators for script adherence.\"\n",{"slug":8,"name":9,"logoUrl":10,"githubOrg":8},[3629,3632,3635,3638,3641],{"name":3630,"slug":3631,"type":15},"Agents","agents",{"name":3633,"slug":3634,"type":15},"AI","ai",{"name":3636,"slug":3637,"type":15},"Coaching","coaching",{"name":3639,"slug":3640,"type":15},"QA","qa",{"name":9,"slug":8,"type":15},"2026-07-17T06:07:58.250609",{"slug":3644,"name":3644,"fn":3645,"description":3646,"org":3647,"tags":3648,"stars":29,"repoUrl":30,"updatedAt":3653},"twilio-agent-connect","connect AI agents to Twilio channels","Connect third-party AI agents (OpenAI, Bedrock, LangChain, Microsoft Foundry) to Twilio's communication channels using the Twilio Agent Connect SDK. Covers identity resolution, memory and context management via Conversation Memory, conversation orchestration via Conversation Orchestrator, multi-channel handling (Voice, SMS, RCS, WhatsApp, Chat), and AI-to-human escalation. Use this skill when integrating an existing LLM agent with Twilio services.\n",{"slug":8,"name":9,"logoUrl":10,"githubOrg":8},[3649,3650,3651,3652],{"name":3630,"slug":3631,"type":15},{"name":3616,"slug":3617,"type":15},{"name":3619,"slug":3620,"type":15},{"name":9,"slug":8,"type":15},"2026-07-17T06:06:05.217098",{"slug":3655,"name":3655,"fn":3656,"description":3657,"org":3658,"tags":3659,"stars":29,"repoUrl":30,"updatedAt":3665},"twilio-ai-agent-architect","plan Twilio conversational AI agents","Planning skill for AI-powered conversational agents. Qualifies the developer's use case across outcome sophistication, entry point, and customer profile to recommend the right Twilio Conversations architecture and implementation skills. Handles both high-level requests (\"build me a voice AI assistant\") and specific ones (\"integrate ConversationRelay with my OpenAI backend\").\n",{"slug":8,"name":9,"logoUrl":10,"githubOrg":8},[3660,3661,3664],{"name":3630,"slug":3631,"type":15},{"name":3662,"slug":3663,"type":15},"Architecture","architecture",{"name":9,"slug":8,"type":15},"2026-07-17T06:07:48.883723",{"slug":3667,"name":3667,"fn":3668,"description":3669,"org":3670,"tags":3671,"stars":29,"repoUrl":30,"updatedAt":3680},"twilio-call-recordings","record and manage Twilio voice calls","Record Twilio voice calls correctly. Covers the critical distinction between Record verb (voicemail) and Dial record (call recording), dual-channel for QA, mid-call pause for PCI, Conference recording, and the ConversationRelay workaround. Use this skill whenever you need to capture call audio for compliance, QA, or analytics.\n",{"slug":8,"name":9,"logoUrl":10,"githubOrg":8},[3672,3675,3678,3679],{"name":3673,"slug":3674,"type":15},"Audio","audio",{"name":3676,"slug":3677,"type":15},"Compliance","compliance",{"name":3639,"slug":3640,"type":15},{"name":9,"slug":8,"type":15},"2026-07-17T06:07:55.268412",{"slug":3682,"name":3682,"fn":3683,"description":3684,"org":3685,"tags":3686,"stars":29,"repoUrl":30,"updatedAt":3697},"twilio-cli-reference","manage Twilio resources via CLI","Twilio CLI reference for managing Twilio resources from the terminal. Covers installation, credential profiles, phone number provisioning, sending SMS and email, webhook configuration, local development with a tunneling service, debugging with watch and logs, serverless deployment, and plugin ecosystem. Use when the developer asks to \"just do it\", \"set this up\", \"run a command\", mentions \"CLI\", \"command line\", or \"terminal\", or when an AI agent can execute a task directly instead of writing application code.\n",{"slug":8,"name":9,"logoUrl":10,"githubOrg":8},[3687,3690,3693,3696],{"name":3688,"slug":3689,"type":15},"CLI","cli",{"name":3691,"slug":3692,"type":15},"Local Development","local-development",{"name":3694,"slug":3695,"type":15},"Operations","operations",{"name":9,"slug":8,"type":15},"2026-07-17T06:07:54.925664",{"slug":3699,"name":3699,"fn":3700,"description":3701,"org":3702,"tags":3703,"stars":29,"repoUrl":30,"updatedAt":3709},"twilio-compliance-onboarding","manage Twilio messaging and voice compliance","Registrations required BEFORE Twilio traffic works. Covers messaging programs (A2P 10DLC, toll-free verification, WhatsApp WABA, RCS, short code, alphanumeric sender) and voice trust programs (STIR\u002FSHAKEN, Voice Integrity, Branded Calling, CNAM). Each number\u002Fsender type has its own program — registration blocks traffic until complete.\n",{"slug":8,"name":9,"logoUrl":10,"githubOrg":8},[3704,3705,3706,3707,3708],{"name":3676,"slug":3677,"type":15},{"name":23,"slug":24,"type":15},{"name":13,"slug":14,"type":15},{"name":9,"slug":8,"type":15},{"name":17,"slug":18,"type":15},"2026-07-17T06:05:47.897229",{"slug":3711,"name":3711,"fn":3712,"description":3713,"org":3714,"tags":3715,"stars":29,"repoUrl":30,"updatedAt":3725},"twilio-compliance-traffic","ensure compliance for Twilio messaging traffic","Rules you must follow for Twilio messaging and voice traffic. Covers TCPA (consent tiers, quiet hours, DNC), GDPR (EU consent, right to deletion), PCI DSS (payment recording, Pay verb), HIPAA (BAA, PHI), FDCPA (debt collection limits), CAN-SPAM, WhatsApp policies, SHAKEN\u002FSTIR, and consent management patterns. Use this skill proactively when developers have working traffic to ensure they follow the rules.\n",{"slug":8,"name":9,"logoUrl":10,"githubOrg":8},[3716,3717,3718,3721,3724],{"name":3676,"slug":3677,"type":15},{"name":23,"slug":24,"type":15},{"name":3719,"slug":3720,"type":15},"Regulatory Compliance","regulatory-compliance",{"name":3722,"slug":3723,"type":15},"Security","security",{"name":9,"slug":8,"type":15},"2026-07-17T06:07:55.952779",{"slug":3727,"name":3727,"fn":3728,"description":3729,"org":3730,"tags":3731,"stars":29,"repoUrl":30,"updatedAt":3738},"twilio-conference-calls","build multi-party calls with Twilio Conference","Build multi-party calls using Twilio Conference. Covers warm transfer, cold transfer, coaching (whisper), hold vs mute, participant modes, and supervisor barge. Use this skill for any contact center, support line, or scenario requiring transfers, holds, or multi-party calls.\n",{"slug":8,"name":9,"logoUrl":10,"githubOrg":8},[3732,3733,3734,3737],{"name":3673,"slug":3674,"type":15},{"name":3619,"slug":3620,"type":15},{"name":3735,"slug":3736,"type":15},"Meetings","meetings",{"name":9,"slug":8,"type":15},"2026-07-17T06:07:55.603708",{"slug":3740,"name":3740,"fn":3741,"description":3742,"org":3743,"tags":3744,"stars":29,"repoUrl":30,"updatedAt":3754},"twilio-content-template-builder","create and send message templates with Twilio","Create, manage, and send message templates using Twilio's Content API. Covers template creation for WhatsApp, SMS, RCS, and MMS; variable usage; WhatsApp Meta approval; and sending templates via ContentSid. Use this skill when building structured messages that require pre-approval or consistent formatting across channels.\n",{"slug":8,"name":9,"logoUrl":10,"githubOrg":8},[3745,3748,3749,3750,3753],{"name":3746,"slug":3747,"type":15},"Email","email",{"name":23,"slug":24,"type":15},{"name":13,"slug":14,"type":15},{"name":3751,"slug":3752,"type":15},"Templates","templates",{"name":9,"slug":8,"type":15},"2026-07-17T06:04:26.637309",{"slug":3756,"name":3756,"fn":3757,"description":3758,"org":3759,"tags":3760,"stars":29,"repoUrl":30,"updatedAt":3772},"twilio-conversation-intelligence","build conversation intelligence pipelines","Twilio Conversation Intelligence development guide. Use when building real-time or post-call conversation analysis, language operator pipelines, sentiment analysis, agent assist, cross-channel analytics, or querying aggregated conversation insights (sentiment trends, escalation rates, dashboards).",{"slug":8,"name":9,"logoUrl":10,"githubOrg":8},[3761,3762,3765,3768,3771],{"name":3630,"slug":3631,"type":15},{"name":3763,"slug":3764,"type":15},"Analytics","analytics",{"name":3766,"slug":3767,"type":15},"Monitoring","monitoring",{"name":3769,"slug":3770,"type":15},"NLP","nlp",{"name":9,"slug":8,"type":15},"2026-07-17T06:07:52.545387",{"slug":3774,"name":3774,"fn":3775,"description":3776,"org":3777,"tags":3778,"stars":29,"repoUrl":30,"updatedAt":3784},"twilio-conversation-memory","manage conversation memory with Twilio","Store and retrieve conversation context using Twilio Conversation Memory. Covers Memory Store provisioning, profile management, traits, observations, conversation summaries, and semantic Recall. Use this skill to give AI agents or human agents persistent memory of conversations across sessions and channels.\n",{"slug":8,"name":9,"logoUrl":10,"githubOrg":8},[3779,3780,3783],{"name":3630,"slug":3631,"type":15},{"name":3781,"slug":3782,"type":15},"Memory","memory",{"name":9,"slug":8,"type":15},"2026-07-17T06:04:19.526724",57,{"items":3787,"total":3785},[3788,3794,3802,3809,3815,3822,3829],{"slug":93,"name":93,"fn":3611,"description":3612,"org":3789,"tags":3790,"stars":29,"repoUrl":30,"updatedAt":3622},{"slug":8,"name":9,"logoUrl":10,"githubOrg":8},[3791,3792,3793],{"name":3616,"slug":3617,"type":15},{"name":3619,"slug":3620,"type":15},{"name":13,"slug":14,"type":15},{"slug":3624,"name":3624,"fn":3625,"description":3626,"org":3795,"tags":3796,"stars":29,"repoUrl":30,"updatedAt":3642},{"slug":8,"name":9,"logoUrl":10,"githubOrg":8},[3797,3798,3799,3800,3801],{"name":3630,"slug":3631,"type":15},{"name":3633,"slug":3634,"type":15},{"name":3636,"slug":3637,"type":15},{"name":3639,"slug":3640,"type":15},{"name":9,"slug":8,"type":15},{"slug":3644,"name":3644,"fn":3645,"description":3646,"org":3803,"tags":3804,"stars":29,"repoUrl":30,"updatedAt":3653},{"slug":8,"name":9,"logoUrl":10,"githubOrg":8},[3805,3806,3807,3808],{"name":3630,"slug":3631,"type":15},{"name":3616,"slug":3617,"type":15},{"name":3619,"slug":3620,"type":15},{"name":9,"slug":8,"type":15},{"slug":3655,"name":3655,"fn":3656,"description":3657,"org":3810,"tags":3811,"stars":29,"repoUrl":30,"updatedAt":3665},{"slug":8,"name":9,"logoUrl":10,"githubOrg":8},[3812,3813,3814],{"name":3630,"slug":3631,"type":15},{"name":3662,"slug":3663,"type":15},{"name":9,"slug":8,"type":15},{"slug":3667,"name":3667,"fn":3668,"description":3669,"org":3816,"tags":3817,"stars":29,"repoUrl":30,"updatedAt":3680},{"slug":8,"name":9,"logoUrl":10,"githubOrg":8},[3818,3819,3820,3821],{"name":3673,"slug":3674,"type":15},{"name":3676,"slug":3677,"type":15},{"name":3639,"slug":3640,"type":15},{"name":9,"slug":8,"type":15},{"slug":3682,"name":3682,"fn":3683,"description":3684,"org":3823,"tags":3824,"stars":29,"repoUrl":30,"updatedAt":3697},{"slug":8,"name":9,"logoUrl":10,"githubOrg":8},[3825,3826,3827,3828],{"name":3688,"slug":3689,"type":15},{"name":3691,"slug":3692,"type":15},{"name":3694,"slug":3695,"type":15},{"name":9,"slug":8,"type":15},{"slug":3699,"name":3699,"fn":3700,"description":3701,"org":3830,"tags":3831,"stars":29,"repoUrl":30,"updatedAt":3709},{"slug":8,"name":9,"logoUrl":10,"githubOrg":8},[3832,3833,3834,3835,3836],{"name":3676,"slug":3677,"type":15},{"name":23,"slug":24,"type":15},{"name":13,"slug":14,"type":15},{"name":9,"slug":8,"type":15},{"name":17,"slug":18,"type":15}]