尧图网站设计 尧图网站设计YAOTU DESIGN
ARTICLE DETAIL

资讯详情

深耕网站设计与一线实操的经验洞察。

Automatisch Twilio 集成指南:Send an SMS 动作的参数、鉴权与实现原理

Automatisch Twilio 集成指南:Send an SMS 动作的参数、鉴权与实现原理 Automatisch Twilio 集成指南Send an SMS 动作的参数、鉴权与实现原理【免费下载链接】automatischThe open source Zapier alternative. Build workflow automation without spending time and money.项目地址: https://gitcode.com/GitHub_Trending/au/automatisch导读本文聚焦 Automatisch 开源项目中 Twilio 应用的 Actions动作能力以官方文档 packages/docs/pages/apps/twilio/actions.md 为核心骨架深入讲解 Send an SMS 动作的三个输入参数、底层 REST API 调用实现、Account SID Auth Token 的 Basic Auth 鉴权机制以及可发送短信号码下拉选项背后的动态数据源。读完本文你将能熟练配置并理解 Automatisch 中 Twilio 发短信动作的完整运行链路并知道如何在源码中定位与验证每一个环节。Automatisch 的 Twilio 动作文档页是什么样的Automatisch 的应用文档采用前端定义 自动渲染的模式。以 Twilio 为例其 actions.md 文件本身非常精简通过 frontmatter 声明页面元信息favicon: /favicons/twilio.svg通过items列表登记该应用对外提供的动作清单Twilio 目前登记了 1 个动作Send an SMS描述为Sends an SMS.页面主体仅引入CustomListing.vue组件位于 packages/docs/components/CustomListing.vue由组件基于 frontmatter 中的items自动渲染动作列表。也就是说这份文档是动作清单的门户页而每个动作的真正技术细节沉淀在应用实现源码中。Twilio 应用在 packages/backend/src/apps/twilio/index.js 中注册其动作列表由 actions/index.js 导出当前仅包含send-sms这一个动作。docs 页面上列出的每一项正是对动作定义元数据的直接映射。Send an SMS动作的三个输入参数Send an SMS 动作的定义位于 packages/backend/src/apps/twilio/actions/send-sms/index.js它通过defineAction()注册该辅助函数定义在 helpers/define-action.js负责承接并返回动作定义对象。动作包含三个必填参数参数 Key界面标签类型必填说明fromNumberFrom Numberdropdown下拉是发送方号码需含国家代码如15551234567toNumberTo Numberstring文本框是接收方号码需含国家代码如15551234567messageMessagestring文本框是要发送的短信正文三个参数均声明了variables: true意味着在 Automatisch 编辑器中这些字段支持插入上一步骤的输出变量如从表单、数据库或 API 步骤取到的手机号与内容方便构建动态的短信通知链路。其中fromNumber的特殊之处在于它的数据来源类型为dropdown其选项并非静态硬编码而是通过source声明了一个动态数据查询name: getDynamicData调用动态数据机制key: listIncomingPhoneNumbers指向 dynamic-data/list-incoming-phone-numbers/index.js。这意味着用户在编辑器中选择发送号码时Automatisch 会实时调用 Twilio API把该账号名下具备短信能力的号码作为候选列表而不是让用户手填易错的 SID。底层实现一次 POST 完成短信发送动作的run($)函数展示了完整调用链见 send-sms/index.jsasync run($) { const requestPath /2010-04-01/Accounts/${$.auth.data.accountSid}/Messages.json; const messageBody $.step.parameters.message; const fromNumber $.step.parameters.fromNumber.trim(); const toNumber $.step.parameters.toNumber.trim(); const payload new URLSearchParams({ Body: messageBody, From: fromNumber, To: toNumber, }).toString(); const response await $.http.post(requestPath, payload); $.setActionItem({ raw: response.data }); }关键实现要点请求路径符合 Twilio REST API 规范 ——POST /2010-04-01/Accounts/{AccountSid}/Messages.json。其中{AccountSid}直接取自连接保存的鉴权数据$.auth.data.accountSid。请求体使用URLSearchParams构造application/x-www-form-urlencoded表单字段为短信三要素Body、From、To。输入清洗对fromNumber与toNumber先执行.trim()去除用户粘贴时可能带入的首尾空白避免因格式问题导致号码校验失败。结果输出Twilio 返回的 JSON含sid、status、to、from、body等字段通过$.setActionItem({ raw: response.data })写入当前步骤的输出数据供后续步骤以变量形式引用。鉴权机制Account SID Auth Token 的 Basic AuthSend an SMS 能够工作的前提是**连接Connection**中保存了有效的 Twilio 凭据。Twilio 应用的鉴权字段定义在 auth/index.jsAccount SIDaccountSidTwilio 账号标识官方指引其位于 Twilio Console 的 API Credentials 页面Auth TokenauthToken位于 Account SID 下方与 SID 配套使用。创建连接时Automatisch 会执行两步校验凭证验证verify-credentials.js向GET /2010-04-01/Accounts.json?PageSize1发起一次轻量请求验证 SID/Token 是否有效成功后把screenName设为accountSid用于界面上展示连接身份。持续校验is-still-verified.js复用同一个verifyCredentials保证连接在后续使用中仍然有效失效时及时提示用户重新授权。所有对外请求的鉴权头由 common/add-auth-header.js 统一注入作为beforeRequest钩子在 index.js 中注册if (requestConfig.headers $.auth.data?.accountSid $.auth.data?.authToken) { requestConfig.headers[Content-Type] application/x-www-form-urlencoded; requestConfig.auth { username: $.auth.data.accountSid, password: $.auth.data.authToken, }; }这等价于向每个请求附加Authorization: Basic base64(AccountSid:AuthToken)底层 HTTP 客户端会自动编码并以x-www-form-urlencoded声明请求体格式 —— 与run()中URLSearchParams的编码方式严格对应。动态数据可发送号码下拉列表是如何生成的fromNumber下拉选项来自 list-incoming-phone-numbers/index.js其逻辑值得展开请求GET /2010-04-01/Accounts/{AccountSid}/IncomingPhoneNumbers.json拉取账号名下号码列表逐条判断incomingPhoneNumber.capabilities.sms false跳过不具备短信能力的号码例如纯语音号码保证下拉中只出现可实际发送短信的号码选项的显示名由friendly_name - phone_number拼接任一为空时自动过滤既方便识别又保留号码本身支持分页循环跟随响应中的next_page_uri直到为空聚合全部结果支持valueType参数当valueType sid时返回号码的sid供触发器注册 Webhook 使用否则返回phone_number供发送短信使用。配合 common/get-incoming-phone-number.js 中的工具函数还可以通过phoneNumberSid精确查询某个号码的详情。实战联动与 Receive SMS 触发器搭配使用虽然本文聚焦 Actions但 Twilio 的发送能力与接收能力天然成对。同目录下的 triggers.md 登记的 Receive SMS 触发器实现见 triggers/receive-sms/index.js会在收到新短信时触发并在激活/停用时通过registerHook/unregisterHook动态设置号码的SmsUrlWebhook 地址。一个典型的自动化流程可以是Receive SMS触发器捕获客户发来的号码与正文中间的 HTTP / 数据库 / 表单步骤加工数据Send an SMS动作将结果回复给对方或向运营人员推送告警。这样接收 → 处理 → 回复闭环的两个端点都基于同一套鉴权连接配置成本极低。快速上手从创建连接到第一次发送Twilio 连接的建立步骤记录在 connection.md核心流程为登录 Twilio Consolehttps://console.twilio.com复制Account SID粘贴到 Automatisch 连接创建页的对应字段复制Auth Token粘贴到对应字段点击SubmitAutomatisch 会立即调用Accounts.json接口验证凭据连接创建成功后即可在流程编辑器中选择 Twilio → Send an SMS从下拉框选择发送号码、填写接收号码与正文保存并运行流程。总结与源码索引Automatisch 的 Twilio Actions 文档页虽然形式精简由CustomListing自动渲染但其背后是完整、可验证的实现链路。核心代码路径如下动作定义与发送逻辑packages/backend/src/apps/twilio/actions/send-sms/index.js动作注册入口packages/backend/src/apps/twilio/actions/index.js应用总注册含beforeRequest鉴权钩子packages/backend/src/apps/twilio/index.js连接字段与凭证校验packages/backend/src/apps/twilio/auth/index.js、verify-credentials.jsBasic Auth 注入packages/backend/src/apps/twilio/common/add-auth-header.js号码动态数据源packages/backend/src/apps/twilio/dynamic-data/list-incoming-phone-numbers/index.js需要特别说明的是fromNumber必须是你 Twilio 账号名下的号码且具备短信能力toNumber需使用含国家代码的 E.164 形式发送结果以 Twilio 返回的 Message SID 与状态为准Automatisch 会将完整响应保留在步骤输出中供后续步骤引用。【免费下载链接】automatischThe open source Zapier alternative. Build workflow automation without spending time and money.项目地址: https://gitcode.com/GitHub_Trending/au/automatisch创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考
返回列表