ToolJet 接入 Twilio 数据源指南:连接配置与发送短信实战
【免费下载链接】ToolJetOpen-source foundation of ToolJet AI - the enterprise app generation platform for internal tools, dashboards, business applications, workflows and AI agents. Build visually, from a prompt, or from Claude Code, Codex and Cursor over MCP 🚀项目地址: https://gitcode.com/GitHub_Trending/to/ToolJet
ToolJet 内置了 Twilio 数据源插件,允许你在低代码应用中直接调用 Twilio 账户发送 SMS 短信。本文以官方数据源文档(docs/versioned_docs/version-3.0.0-LTS/data-sources/twilio.md)为主体,结合仓库中 plugins/packages/twilio 插件包的源码实现,完整讲解 Twilio 凭据获取、数据源连接、Send SMS 查询操作的配置方法,以及底层消息发送的调用原理。读完本文,你将能独立在 ToolJet 中完成 Twilio 数据源的接入,并成功发送第一条业务短信。
一、连接 Twilio 数据源
1.1 入口位置
要建立与 Twilio 数据源的连接,有两种方式:
- 点击查询面板上的+ Add new Data source(添加新数据源)按钮;
- 从 ToolJet 仪表盘导航到Data Sources(数据源)页面,选择 Twilio 作为数据源。
1.2 需要的连接凭据
ToolJet 连接 Twilio 需要以下三项凭据:
| 参数 | 说明 | 获取位置 |
|---|---|---|
| Auth Token | Twilio 账户的认证令牌 | Twilio 账户仪表盘(Console) |
| Account SID | 账户唯一标识符 | Twilio 账户仪表盘(Console) |
| Messaging Service SID | 消息服务(Messaging Service)的唯一标识 | 需在 Twilio Console 中创建消息服务后获取 |
Auth Token 与 Account SID可以在你的 Twilio 账户仪表盘中直接获取,两者均展示在 Twilio Console 的 Account Info 区域:
Messaging Service SID则需要先创建一个消息服务(Messaging Service):在 Twilio Console 左侧边栏的Messaging下的Services(服务)中创建,创建完成后即可在服务详情页看到对应的 Messaging Service SID。使用消息服务发送短信可以统一管理发件人号码、回退策略等能力,是生产环境的推荐做法:
1.3 插件层面的凭据定义
从源码结构看,这三个连接参数在插件清单文件 plugins/packages/twilio/lib/manifest.json 中被明确定义,并全部标记为必填(required):
account_sid:字符串类型,对应Account SID;auth_token:字符串类型,且标记了"encrypted": true,说明 ToolJet 会对该敏感字段做加密存储;在属性定义中其类型为password("type": "password"),输入框会以掩码形式展示;messaging_service_sid:字符串类型,对应Messaging Service SID。
同时,清单中声明了数据源暴露给查询上下文的变量:isLoading(加载状态)、data(查询结果)、rawData(原始返回数据),在后续查询中可以直接引用。
二、查询 Twilio:发送短信
完成数据源连接后,即可在查询管理器中创建 Twilio 查询:
- 点击编辑器底部面板查询管理器中的+ Add(添加)按钮;
- 选择上一步添加的Twilio数据源;
- 从下拉菜单中选择Send SMS,并填写所需参数;
- 点击Preview(预览)按钮预览输出,或点击Run(运行)按钮触发查询执行。
2.1 支持的操作
Twilio 数据源当前支持以下操作:
Send message(发送短信)
该操作会将指定的消息内容发送到指定的手机号码。
必需参数:
| 参数 | 说明 |
|---|---|
| To Number | 接收短信的目标手机号码 |
| Body | 要发送的短信正文内容 |
在查询编辑器中,操作下拉框选择Send SMS后,会出现 To Number 与 Body 两个输入框:
2.2 操作定义的源码实现
在插件操作定义文件 plugins/packages/twilio/lib/operations.json 中可以看到:
operation是一个下拉组件(dropdown-component-flip),当前只支持一个选项:值为send_sms、显示名为Send SMS;to_number(To Number)与body(Body)字段的类型均为codehinter,这意味着这两个输入框支持 ToolJet 的表达式({{ }})与动态变量。例如,你可以把 To Number 绑定为表单组件的值、把 Body 绑定为某个输入框的文本,从而实现完全动态化的短信发送,而不必写死参数。
2.3 底层调用链:SDK 消息创建
发送短信的核心逻辑位于 plugins/packages/twilio/lib/index.ts 的TwilioQueryService类中:
getClient(accountSid: string, authToken: string): any { return new Twilio(accountSid, authToken); } async run(sourceOptions: SourceOptions, queryOptions: QueryOptions, dataSourceId: string): Promise<QueryResult> { let result = {}; try { if (queryOptions.operation && queryOptions.operation === 'send_sms') { result = await this.getClient(sourceOptions.account_sid, sourceOptions.auth_token) .messages.create({ body: queryOptions.body, messagingServiceSid: sourceOptions.messaging_service_sid, to: queryOptions.to_number, }) .then((message) => message); } } catch (error) { console.log(error.response); throw new QueryError('Query could not be completed', error.message, {}); } return { status: 'ok', data: result, }; }关键点解读:
- 客户端初始化:
getClient方法基于官方twilioSDK(插件依赖声明为twilio: ^5.2.0,见 plugins/packages/twilio/package.json)创建客户端,使用连接阶段配置的account_sid与auth_token完成鉴权; - 消息创建:
messages.create方法接收三个参数——body(短信正文)、messagingServiceSid(消息服务 SID,来自数据源连接配置)、to(目标号码,来自查询参数);这也印证了文档中"必需参数 To Number 与 Body"的说法——to_number和body来自查询参数,而messaging_service_sid来自数据源级配置; - 错误处理:一旦 SDK 调用失败,会打印
error.response便于排查,并抛出QueryError('Query could not be completed', error.message, {}),错误信息会以query could not be completed的形式反馈到查询结果面板; - 成功返回:查询成功时返回
{ status: 'ok', data: result },其中data是 Twilio 消息对象(包含sid、status、dateCreated等字段),你可以通过{{queries.<查询名>.data.sid}}之类的表达式在后续逻辑中引用。
对应的类型定义见 plugins/packages/twilio/lib/types.ts:SourceOptions包含account_sid、auth_token、messaging_service_sid;QueryOptions包含operation、body、to_number。
三、使用提示与注意事项
- 号码格式:Twilio 对
to字段期望 E.164 格式的国际号码(如+8613800138000),建议在表单校验或发送前确认号码格式,否则 SDK 会返回格式校验错误。 - 凭据安全:
auth_token在 ToolJet 插件清单中被标记为加密存储,属于敏感凭据,请勿在查询表达式或应用中明文硬编码。 - 消息服务(Messaging Service):文档要求必须配置 Messaging Service SID 而非单个发件人号码,这是通过
messages.create的messagingServiceSid参数实现的;好处是号码池管理、自动回退和合规配置都交由消息服务统一处理。 - 调试手段:当发送失败时,查询会返回
query could not be completed错误;结合服务端日志中打印的error.response可以进一步定位具体原因(如余额不足、号码未验证、SID 错误等)。 - 插件测试现状:仓库中 plugins/packages/twilio/tests/twilioapi.test.js 目前仅声明了占位测试用例(
it.todo('needs tests')),尚未包含自动化的单元测试,这意味着该插件的行为验证主要依赖真实 Twilio 账户的联调。
四、小结
本文围绕 Twilio 数据源文档,完成了从凭据准备、数据源连接到 Send SMS 查询的完整链路讲解,并结合插件源码(manifest.json、operations.json、index.ts)揭示了参数定义、表达式支持与底层messages.create调用机制。整体流程为:在 Twilio Console 获取 Account SID / Auth Token → 创建消息服务获取 Messaging Service SID → 在 ToolJet 中添加数据源 → 在查询管理器中选择 Send SMS 并填写 To Number 与 Body → 预览或运行。掌握这一链路后,你可以将短信通知能力无缝接入 ToolJet 构建的仪表盘、审批流或业务应用中。
【免费下载链接】ToolJetOpen-source foundation of ToolJet AI - the enterprise app generation platform for internal tools, dashboards, business applications, workflows and AI agents. Build visually, from a prompt, or from Claude Code, Codex and Cursor over MCP 🚀项目地址: https://gitcode.com/GitHub_Trending/to/ToolJet
创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考