@sadikkhan02/adapter-twilio

中文文档
1.0.0发布于 2026/11/02MITTypeScriptESM + CJS零依赖

Twilio短信提供商适配器为NotifyKit

中文使用文档
文档目录7 节
  1. 安装
  2. 配置
  3. 环境变量
  4. 使用
  5. 错误分类和恢复
  6. 监管通知和承运人成本
  7. 许可证

@sadikkhan02/adapter-twilio

使用Twilio消息传递API的NotifyKit的全局SMS适配器。

这个包通过Twilio为NotifyKit提供企业短信传输。它实现了 SmsProvider 接口,支持字母数字发送者和消息服务sid,标准化E.164电话号码,并遵循 @sadikkhan02/test-utils 合同的测试。


安装

npm install @sadikkhan02/notifykit @sadikkhan02/adapter-twilio twilio

注意: twilio 被声明为外部对等依赖,以允许消费者控制SDK版本绑定和连接重用。


配置

环境变量

变量要求描述
TWILIO_ACCOUNT_SID是Twilio帐户SID (AC...)
TWILIO_AUTH_TOKEN是Twilio授权令牌
TWILIO_FROM可选的*E.164格式的默认发送人电话号码。 +15555550100)
TWILIO_MESSAGING_SERVICE_SID可选的*Twilio消息服务SID (MG...)进行自动发送人池

*要么 TWILIO_FROM 或者 TWILIO_MESSAGING_SERVICE_SID 必须配置(或在选项中提供)。


使用

import { createNotifier } from '@sadikkhan02/notifykit';
import { TwilioSmsProvider } from '@sadikkhan02/adapter-twilio';

const smsProvider = new TwilioSmsProvider({
  accountSid: process.env.TWILIO_ACCOUNT_SID!,
  authToken: process.env.TWILIO_AUTH_TOKEN!,
  from: process.env.TWILIO_FROM, // e.g. +15555550100
  // messagingServiceSid: process.env.TWILIO_MESSAGING_SERVICE_SID,
});

const notifier = createNotifier({
  providers: {
    sms: {
      type: 'twilio',
      adapter: smsProvider,
      from: process.env.TWILIO_FROM,
    },
  },
});

// Register SMS template
notifier.registerTemplate(
  'otp-verification',
  'Your verification code is {{otp}}. Valid for 5 minutes. Do not share this code.',
);

// Enqueue SMS (returns immediately with jobId)
const { jobId } = await notifier.notify({
  to: { phone: '+15555550199' }, // E.164 required
  channels: ['sms'],
  template: 'otp-verification',
  data: { otp: '482910' },
});

// Start processing SMS queue
notifier.startWorker({ channels: ['sms'], concurrency: 5 });

错误分类和恢复

Twilio适配器将结构化的Twilio错误代码直接映射为标准化的 ProviderResult 对象:

Twilio错误码原因retryableBullMQ行动
20429超过速率限制/并发限制true以指数回退重试
30001队列溢出true以指数回退重试
30008未知载波故障/暂态网络true以指数回退重试
30010无法联系到运营商/暂时不可用true以指数回退重试
20003身份验证失败(无效的帐户SID /令牌)false直接路由到DLQ(不重试)
21211无效的电话号码格式false直接路由到DLQ(不重试)
21614目标号码为座机/无法接收短信false直接路由到DLQ(不重试)
21408拒绝权限/未启用区域false直接路由到DLQ(不重试)

监管通知和承运人成本

[!警告) 通过Twilio发送短信会产生每段运营商费用和转接费。 在美国,通过10位长代码(10DLC)发送的流量需要获得A2P批准的10DLC品牌和活动注册。未注册的流量受到严格的运营商过滤、节流或非交付费用的限制。


许可证

麻省理工学院

版本与发布记录

@sadikkhan02/adapter-twilio 共发布 2 个版本,首次发布于 2026/11/02;过去 12 个月发布了 2 个版本。

版本发布日期距今
1.0.0latest2026/11/021 天前
0.0.0-stage2026/11/021 天前

关于 @sadikkhan02/adapter-twilio 的常见问题

@sadikkhan02/adapter-twilio 是什么?

Twilio短信提供商适配器为NotifyKit

如何安装 @sadikkhan02/adapter-twilio?

在项目目录运行 npm install @sadikkhan02/adapter-twilio,或使用 pnpm add / yarn add / bun add。它还需要宿主项目提供 peer 依赖:twilio(>=4.0.0)、@sadikkhan02/notifykit(^1.0.0)。npm 7 及以上与 pnpm 8 及以上默认会自动安装必需的 peer 依赖,Yarn 需要手动安装。

@sadikkhan02/adapter-twilio 支持 TypeScript 吗?

支持。包内自带 TypeScript 类型声明(package.json 声明了 types 入口),安装后即可获得类型提示,无需再安装 @types 包。

@sadikkhan02/adapter-twilio 支持 ESM 还是 CommonJS?

同时提供 ES Module 与 CommonJS 入口,import 和 require() 都可以使用,打包工具会自动选择合适的版本。

@sadikkhan02/adapter-twilio 需要什么版本的 Node.js?

package.json 的 engines 字段要求 Node.js >=20.0.0。版本不符时 npm 默认只给出警告,开启 engine-strict 后会拒绝安装。

@sadikkhan02/adapter-twilio 可以商用吗?

@sadikkhan02/adapter-twilio 使用 MIT 许可。宽松许可:允许商业使用、修改和再分发,通常只需在分发时保留原版权与许可声明。以上为概括,不构成法律意见,请以许可原文为准。

@sadikkhan02/adapter-twilio 还在维护吗?

最新版本 1.0.0 发布于 2026/11/02(1 天前);至今共发布 2 个版本,其中过去 12 个月发布了 2 个;首次发布于 2026/11/02。发布频率只是参考信号:功能稳定的工具可能很少需要更新,建议结合源码仓库的 issue 和提交记录判断。