如何在Twilio端触发API发送SMS的Webhook,无需传递参数同步CRM
实现Twilio API发送SMS自动触发Webhook(无需客户端传参)
针对软电话通过Twilio API发SMS无法注入参数、没法同步CRM的问题,不用依赖官方要求的随消息传参方案,直接用Twilio的服务器端能力就能解决,以下是两种可行方案:
方案一:用Twilio Functions做API代理拦截并注入参数
把软电话的API请求先转到自己的Twilio函数,在函数里自动补全Webhook和自定义参数,再转发给Twilio官方SMS API。
步骤1:创建Twilio函数
在Twilio控制台新建一个函数,粘贴以下代码:
exports.handler = async function(context, event, callback) { const twilioClient = context.getTwilioClient(); // 提取软电话发来的原始短信参数 const { To, From, Body } = event; // 自动注入Webhook和自定义参数 const smsParams = { To, From, Body, // 直接指定CRM的状态回调地址 StatusCallback: 'https://your-crm-sync-endpoint.com/sms-status', StatusCallbackMethod: 'POST', // 注入标识渠道的自定义参数,方便CRM识别 Parameters: { messaging_channel: 'softphone' } }; try { // 调用Twilio官方接口发消息 const message = await twilioClient.messages.create(smsParams); // 把Twilio的响应返回给软电话,不影响原有流程 callback(null, message); } catch (error) { callback(error); } };
步骤2:配置函数权限
确保函数拥有messages:create的API权限,Twilio函数控制台会自动处理凭证,只要启用函数即可。
步骤3:修改软电话的API地址
把软电话里原来调用Twilio官方SMS API的地址,换成这个函数的部署URL(比如https://xxx.twil.io/send-sms),软电话无需做其他改动。
方案二:用全局事件Webhook捕获所有SMS事件
如果完全没法修改软电话的API配置,可以用Twilio的账户级全局Webhook监听所有短信发送事件,直接同步到CRM。
步骤1:配置全局事件Webhook
在Twilio控制台的"Settings > Webhooks & Events"里,添加message.sent事件的Webhook地址,指向你的Twilio函数。
步骤2:编写事件处理函数
新建Twilio函数处理事件:
exports.handler = async function(context, event, callback) { // 从Twilio的事件数据里提取短信详情 const { MessageSid, From, To, Body, Status } = event; // 调用CRM同步接口 const syncResult = await fetch('https://your-crm-sync-endpoint.com/sync-sms', { method: 'POST', headers: { 'Content-Type': 'application/json' }, body: JSON.stringify({ message_id: MessageSid, sender: From, receiver: To, content: Body, status: Status, messaging_channel: 'softphone' }) }); callback(null, syncResult.ok ? { status: 'sync_success' } : { status: 'sync_failed' }); };
注意事项
如果用全局事件方案,需要过滤掉非软电话发送的短信(比如通过控制台或其他应用发的),可以通过From号码前缀、事件里的Source字段来区分。
内容的提问来源于stack exchange,提问作者park armstrong
相关产品推荐
相关产品推荐

