关于 twilio
面向开发者的 Twilio REST API 有状态模拟器,可在本地测试消息、验证、通话和对话功能,并提供预置凭据及入站事件模拟路由。
主要功能
- 01有状态模拟 Twilio REST API
- 02预置账户与凭据
- 03消息、Verify、Voice 和 Conversations 路由
- 04模拟入站事件与回调
- 05检查本地验证码
适用场景
- 01测试外发消息及状态回调
- 02验证 OTP 流程
- 03模拟入站短信和电话
- 04无需真实 Twilio 流量进行应用测试
安装
复制下面的命令,在终端中运行。
npx skills add https:/ / github.com/ vercel-labs/ emulate --skill twilio安装后在 Claude Code 中输入/twilio确认已加载。
详细介绍
Twilio API 模拟器
有状态的 Twilio REST 模拟,包含预置账户、Auth Token、API 密钥、入站电话号码、Programmable Messaging、Messaging Services、Verify、基础语音通话、Conversations REST 资源、签名 Webhook、本地模拟器路由和检查器。
启动
本地监听器默认绑定到 127.0.0.1。如需从容器或其他机器访问,请向 CLI 传入 --host 0.0.0.0,或向 createEmulator 传入 hostname: '0.0.0.0'。配置 --base-url 或 baseUrl,以设置这些客户端可访问的对外公布 URL。
npx emulate --service twilio
所有服务启动时的默认 URL:http://localhost:4013;仅启动 Twilio 时为 http://localhost:4000。
默认值
TWILIO_ACCOUNT_SID=AC00000000000000000000000000000000
TWILIO_AUTH_TOKEN=twilio_test_auth_token
TWILIO_API_KEY=SK00000000000000000000000000000000
TWILIO_API_SECRET=twilio_test_api_secret
TWILIO_PHONE_NUMBER=+15551234567
TWILIO_VERIFY_SERVICE_SID=VA00000000000000000000000000000000
URL 映射
| Twilio 实际 URL | 模拟器 URL |
|---|---|
https://api.twilio.com/2010-04-01/... | $TWILIO_EMULATOR_URL/2010-04-01/... |
https://messaging.twilio.com/v1/... | $TWILIO_EMULATOR_URL/messaging/v1/... |
https://verify.twilio.com/v2/... | $TWILIO_EMULATOR_URL/verify/v2/... |
官方 Node SDK 会构建绝对 Twilio 产品 URL。在 SDK 测试中,请使用自定义请求客户端,将这些主机重写为上述模拟器前缀。
身份验证
HTTP Basic 身份验证接受以下任一组合:
- Account SID 和 Auth Token
- API Key SID 和 API Key Secret
核心路由
POST /2010-04-01/Accounts/{AccountSid}/Messages.json- 创建出站消息GET /2010-04-01/Accounts/{AccountSid}/Messages.json- 列出消息POST /2010-04-01/Accounts/{AccountSid}/Calls.json- 创建出站通话POST /verify/v2/Services/{ServiceSid}/Verifications- 发起验证POST /verify/v2/Services/{ServiceSid}/VerificationCheck- 检查验证码POST /conversations/v1/Services/{ServiceSid}/Conversations- 创建会话POST /conversations/v1/Services/{ServiceSid}/Conversations/{ConversationSid}/Participants- 添加参与者POST /conversations/v1/Services/{ServiceSid}/Conversations/{ConversationSid}/Messages- 添加消息POST /_twilio/simulate/inbound-message- 模拟入站 SMSPOST /_twilio/simulate/message-status- 模拟消息状态回调POST /_twilio/simulate/inbound-call- 模拟入站通话
SMS 和 OTP 测试
- 预置的 Verify Service 验证码为
123456。 - 创建 Verification 时,使用
CustomCode可为单次验证指定验证码。 - 端到端测试中,可通过 Basic 身份验证使用
GET /_twilio/simulate/verification-code?To=...&ServiceSid=...获取本地最新验证码。 - 使用
POST /_twilio/simulate/verification-status,并提供VerificationSid或To,可强制设置本地 Verify 状态。 - 使用
POST /_twilio/simulate/inbound-message测试入站 SMS Webhook。 - 入站 SMS 会优先使用已分配的 Messaging Service
inbound_request_url,否则回退到电话号码的sms_url。 - 使用
POST /_twilio/simulate/message-status测试出站状态回调。
当前限制
尚未实现真实 SMS、MMS、WhatsApp、电子邮件、语音、运营商、合规、计费、SendGrid、Studio、Flex、TaskRouter、Video、Sync、Segment、Conversations SDK WebSocket 行为或完整的 TwiML 解释器行为。
与内置模拟器并用自定义模拟器
使用 npx emulate init --custom inventory 搭建第三方 API 模拟器和测试的脚手架。在 emulate.config.ts 中使用 emulate 提供的 defineConfig 注册它,并与 { emulator: "twilio" } 等内置条目并列。运行 npx emulate start --watch 可重新加载导入,并在打印出的 /_emulate URL 查看自定义状态。成功重新加载后,会将本次运行重置为种子状态。现有的扁平种子配置仍可使用;--config 用于指定显式文件。有关编写和测试第三方 API 模拟器的信息,请参阅 https://emulate.dev/docs/custom-emulators。