К основному содержанию
скилл CX Codex GP ChatGPT официальный · OpenAI

twilio-sms-send-message — скилл для Codex: диагностика SMS

Скилл помогает разбирать ошибки доставки SMS и MMS в Twilio: проверять коды ошибок, фильтрацию сообщений и признаки SMS pumping.

Установить в Codex · Через Skills CLI (Vercel) Все способы и платформы ↓
npx skills add openai/plugins --skill twilio-sms-send-message -a codex
Открыть на GitHub

Что делает twilio-sms-send-message

Скилл пригодится, когда сообщение Twilio не дошло или было заблокировано. Он описывает ошибки вроде неверного номера, отключённых разрешений для региона, отказа получателя и фильтрации как спама, а также предлагает проверять возможные причины по порядку. Для ошибки 21610 повторная отправка не подходит: получатель отказался от сообщений.

Для MMS перечислены поддерживаемые типы медиа и ограничение по регионам: США, Канада и Австралия. В примерах отправки нужны номер Twilio и номер получателя в формате E.164; для работы с SDK указаны Python-пакет twilio и npm-пакет twilio. Сам скилл предназначен для диагностики, а для отправки сообщений в источнике рекомендован twilio-send-message.

Какие задачи решает

  • найти причину ошибки доставки SMS по коду Twilio
  • проверить, почему сообщение попало в спам-фильтр
  • разобраться с блокировкой из-за отказа получателя
  • выяснить, поддерживается ли отправка MMS в нужный регион
  • распознать признаки SMS pumping

Примеры запросов агенту

  • Разбери ошибку Twilio 30007 и подскажи, что проверить в сообщении.
  • Проверь, почему SMS не доставляется в этот регион и какие разрешения нужны.
  • Объясни, что означает ошибка 21610 и можно ли повторить отправку.

Как установить twilio-sms-send-message

1Через Skills CLI (Vercel)

npx skills add openai/plugins --skill twilio-sms-send-message -a codex

2Вручную: положить файлы

.agents/skills/twilio-sms-send-message/SKILL.md

Для всех проектов — ~/.agents/skills/

По шагам, с командами для каждой платформы: Скиллы Codex: как установить, где лежат и как вызвать

Вопросы о twilio-sms-send-message

Как установить twilio-sms-send-message в Codex?

Выполните npx skills add openai/plugins --skill twilio-sms-send-message -a codex. Файл скилла находится по пути .agents/skills/twilio-sms-send-message/SKILL.md.

Что делает twilio-sms-send-message?

Помогает диагностировать проблемы доставки SMS и MMS в Twilio: объясняет коды ошибок, фильтрацию сообщений и признаки SMS pumping.

Что нужно для отправки SMS через Twilio?

Нужен аккаунт Twilio с номером, поддерживающим SMS, а номера отправителя и получателя должны быть в формате E.164. Для SDK в источнике указаны pip install twilio и npm install twilio.

Исходный текст

SKILL.md · MIT
---
name: twilio-sms-send-message
description: >
  SMS and MMS deep-dive reference. Covers SMS-specific error codes,
  message filtering troubleshooting ("Messages Being Filtered or Blocked?"
  diagnostic checklist), MMS media support (US/CA/AU only), and SMS pumping
  indicators. For sending SMS, use twilio-send-message instead. Use this
  skill only when debugging SMS delivery issues or needing SMS-specific
  details not in the consolidated send skill.
---

## Overview

**SMS is one channel in Twilio's Messaging platform.** All channels — SMS, WhatsApp, RCS, Facebook Messenger — share the same `messages.create()` API. See `twilio-messaging-overview` for the full channel comparison and onboarding sequence.

| When to use SMS | When to consider alternatives |
|----------------|------------------------------|
| Reach any phone number globally | Need rich media outside US/CA/AU → WhatsApp |
| No app install required | Opted-in audience prefers chat apps → WhatsApp |
| Time-sensitive alerts (OTP, outage) | Marketing campaigns → `twilio-marketing-promotions-advisor` |
| Regulatory/compliance requires SMS | Cost-sensitive high-volume → WhatsApp (lower per-msg cost in many markets) |

**For production SMS:** Use a Messaging Service (`messagingServiceSid`) instead of a raw `from` number. It enables sender pool management, compliance toolkit, SMS pumping protection, link shortening, and message scheduling. See `twilio-messaging-services`.

Every outbound SMS requires a `from` Twilio number (or `messagingServiceSid`) and a `to` recipient — both in E.164 format.

---

## Prerequisites

- Twilio account with an SMS-capable phone number
  — New to Twilio? See `twilio-account-setup` for signup, getting a number, and trial limitations
- Environment variables:
  - `TWILIO_ACCOUNT_SID`
  - `TWILIO_AUTH_TOKEN`
  — See `twilio-iam-auth-setup` for credential setup and best practices
- SDK: `pip install twilio` / `npm install twilio`

---

## Quickstart

**Python**
```python
import os
from twilio.rest import Client

client = Client(os.environ["TWILIO_ACCOUNT_SID"], os.environ["TWILIO_AUTH_TOKEN"])

message = client.messages.create(
    from_="+15017122661",   # Your Twilio number (E.164)
    to="+15558675310",      # Recipient (E.164)
    body="Your appointment is confirmed for tomorrow at 2pm."
)

print(message.sid)     # SMxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
print(message.status)  # queued | sent | delivered | failed
```

**Node.js**
```node
const twilio = require("twilio");
const client = twilio(process.env.TWILIO_ACCOUNT_SID, process.env.TWILIO_AUTH_TOKEN);

const message = await client.messages.create({
    from: "+15017122661",
    to: "+15558675310",
    body: "Your appointment is confirmed for tomorrow at 2pm.",
});

console.log(message.sid);
console.log(message.status);
```

---

## Key Patterns

### Send MMS (with media)

**Python**
```python
message = client.messages.create(
    from_="+15017122661",
    to="+15558675310",
    body="Here is your invoice.",
    media_url=["https://example.com/invoice.pdf"]
)
```

**Node.js**
```node
const message = await client.messages.create({
    from: "+15017122661",
    to: "+15558675310",
    body: "Here is your invoice.",
    mediaUrl: ["https://example.com/invoice.pdf"],
});
```

Supported media types: images (JPEG, PNG, GIF), PDF, audio, video. Max 5 MB per message.

### Send via Messaging Service (recommended for scale)

Use `messagingServiceSid` instead of `from` — Twilio picks the best sender automatically from your pool.

**Python**
```python
message = client.messages.create(
    messaging_service_sid="MGxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx",
    to="+15558675310",
    body="Your order has shipped."
)
```

**Node.js**
```node
const message = await client.messages.create({
    messagingServiceSid: "MGxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx",
    to: "+15558675310",
    body: "Your order has shipped.",
});
```

### Track Delivery Status

**Python**
```python
message = client.messages.create(
    from_="+15017122661",
    to="+15558675310",
    body="Hello!",
    status_callback="https://yourapp.com/sms-status"
)
```

**Node.js**
```node
const message = await client.messages.create({
    from: "+15017122661",
    to: "+15558675310",
    body: "Hello!",
    statusCallback: "https://yourapp.com/sms-status",
});
```

Twilio POSTs to your URL at each transition: `queued → sent → delivered` (or `failed`/`undelivered`).

---

## Response Fields

| Field | Description |
|-------|-------------|
| `sid` | Message identifier (`SM...`) |
| `status` | `queued`, `sent`, `delivered`, `undelivered`, `failed` |
| `error_code` | Populated on failure |
| `error_message` | Human-readable description |
| `price` | Cost (populated after delivery) |
| `date_sent` | UTC timestamp |

---

## Common Errors

| Code | Meaning | Fix |
|------|---------|-----|
| 21211 | Invalid `to` number | Validate E.164 format |
| 21408 | Permission to send to region not enabled | Enable geo-permissions in Console |
| 21610 | Number is on blocklist (opted out) | Do not retry; respect opt-out |
| 30003 | Unreachable destination | Carrier cannot deliver; try later |
| 30007 | Message filtered as spam | Review content and sender reputation |
| 30034 | Message from unregistered number | Complete A2P 10DLC registration — see `twilio-compliance-onboarding` |
| 30450 | SMS pumping detected | Message blocked by SMS pumping protection — see `twilio-messaging-services` |

### Messages Being Filtered or Blocked?

If your messages aren't being delivered, check these causes in order:

1. **Unregistered sender (error 30034)** — US 10DLC numbers must be registered. See `twilio-compliance-onboarding`
2. **Spam filtered (error 30007)** — Carrier flagged content. Check: opt-out language included? URL shorteners avoided? Content matches registered campaign?
3. **Opted-out recipient (error 21610)** — Recipient sent STOP. Do not retry. See `twilio-compliance-traffic`
4. **Geo-permissions disabled (error 21408)** — Enable the destination country in Console > Messaging > Settings > Geo Permissions. See `twilio-security-hardening`
5. **SMS pumping (error 30450)** — Artificial traffic detected. Whitelist known prefixes via Global Safe List. See `twilio-messaging-services`
6. **Account suspended** — Check Console for account status notifications. See `twilio-account-setup`

For delivery event tracking, set up StatusCallbacks or use `twilio-debugging-observability`.

---

## CANNOT

- **Cannot send without E.164 format** — Both `from` and `to` must be `+` followed by country code and number
- **Cannot send to unverified numbers on trial accounts** — Upgrade to paid or verify recipient numbers first
- **Cannot send MMS outside US, Canada, and Australia** — MMS is only supported on US/CA/AU numbers; for international rich media use WhatsApp
- **Cannot exceed 1,600 characters per message** — Longer messages are automatically split into segments (each billed separately)
- **Cannot prevent SMS pumping without a Messaging Service** — Enable SMS pumping protection via Messaging Services to prevent artificial traffic inflation. See `twilio-messaging-services`

---

## Next Steps

- **Channel overview and onboarding guide:** `twilio-messaging-overview`
- **Receive inbound SMS and delivery status:** `twilio-messaging-webhooks`
- **Manage sender pools at scale:** `twilio-messaging-services`
- **US compliance for A2P traffic:** `twilio-compliance-onboarding`
- **Send via WhatsApp instead:** `twilio-whatsapp-send-message`

© Twilio · MIT · openai/plugins

Похожие скиллы

Все скиллы по теме «Бэкенд и API» →
mcp-builder официальный anthropics Скилл проводит через создание MCP-сервера на TypeScript или Python: от изучения протокола до тестов и оценки качества. 130 949установок claude-api официальный anthropics Справочник по Anthropic SDK и API Claude для генерации кода без устаревших параметров и выдуманных методов. 74 198установок lark-im larksuite Скилл подключает Lark IM к агенту: он отправляет сообщения, ищет историю, управляет чатами и файлами. Подойдёт для задач вокруг командных коммуникаций. CX Codex +1 472 900установок lark-event larksuite Слушает события Lark/Feishu и отдаёт их потоком NDJSON. Подходит для ботов, обработчиков сообщений и долгих подписчиков. CX Codex +1 466 800установок caveman-discover JuliusBrussee Находит точки вызова LLM в репозитории и размечает их воркфлоу для Caveman Cloud, чтобы расходы на токены не сливались в одну общую кучу. CX Codex +1 104 400установок migration JuliusBrussee Скилл задаёт правила безопасных миграций схем, данных и API с обязательным откатом. Пригодится при изменениях, где нельзя терять данные или ломать совместимость. CX Codex +1 103 900установок

Из того же набора528

Весь набор →
performance-optimizer Субагент, который разбирает медленные страницы Vercel по диагностическим деревьям: LCP, INP, CLS, рендеринг, бандл. Пригодится, когда Lighthouse показывает плохие оценки. CX Codex GP ChatGPT ★ 7 604звёзд репо twilio-webhook-architecture Скилл помогает спроектировать обработчики HTTP-вебхуков Twilio и проверять подписи запросов. Пригодится для входящих сообщений и звонков, а также асинхронных статусных событий. CX Codex GP ChatGPT ★ 7 604звёзд репо twilio-voice-twiml Скилл для сборки голосовой логики звонков на TwiML: глаголы Say, Play, Gather, Dial, Record, Conference и пример IVR для входящего вызова. CX Codex GP ChatGPT ★ 7 604звёзд репо twilio-verify-send-otp Скилл учит агента проводить полный цикл одноразовых кодов в Twilio Verify: создать сервис, отправить код, проверить его. CX Codex GP ChatGPT ★ 7 604звёзд репо twilio-isv-sms-best-practices Скилл для тех, кто встраивает SMS в SaaS-платформу и рассылает сообщения от имени клиентов. Разбирает регистрацию A2P 10DLC и toll-free, субаккаунты и биллинг. CX Codex GP ChatGPT ★ 7 604звёзд репо twilio-sendgrid-suppressions Скилл помогает разбирать подавления SendGrid: выяснять, почему письма не доходят, и настраивать отписки по категориям. Нужен для диагностики доставки и работы с unsubscribe-сценариями. CX Codex GP ChatGPT ★ 7 604звёзд репо twilio-sendgrid-inbound-parse Скилл учит агента принимать входящие письма через SendGrid Inbound Parse: MX-записи, разбор полей, вложения и подводные камни. CX Codex GP ChatGPT ★ 7 604звёзд репо twilio-sendgrid-email-settings Скилл помогает настраивать шаблоны SendGrid, отслеживание писем и брендированные ссылки. Пригодится, когда нужно изменить содержимое или параметры отправки. CX Codex GP ChatGPT ★ 7 604звёзд репо

Спонсоры проекта

Компании, которые помогают держать аналитику открытой