基于内容条件匹配的Twilio SMS分组转发实现咨询
实现Twilio基于内容匹配的SMS分组转发
核心思路
通过Twilio Webhook触发自定义逻辑,先校验发送方为指定固定号码,再匹配短信内容中的位置标识,最后将短信转发至对应号码分组。以下是具体实现步骤:
1. 配置Twilio号码的Webhook
将接收短信的Twilio号码的A Message Comes In Webhook指向自定义处理服务(推荐用Twilio Functions,无需自建服务器),请求方法选择POST。
2. 编写内容匹配与转发逻辑
以Twilio Functions为例,创建新函数后填入以下代码:
exports.handler = async function(context, event, callback) { const twilio = require('twilio'); const client = twilio(context.ACCOUNT_SID, context.AUTH_TOKEN); const twiml = new twilio.twiml.MessagingResponse(); // 校验固定发送号码 const allowedSender = "+1234567890"; // 替换为你的固定发送号码 if (event.From !== allowedSender) { callback(null, twiml); return; } // 定义位置标识与对应号码分组的映射 const locationGroups = { "Location A": ["+0987654321", "+1122334455"], "Location B": ["+2233445566"] // 可按需添加更多位置分组 }; // 匹配短信内容中的位置标识 const smsContent = event.Body; let matched = false; // 如需忽略大小写,改用 smsContent.toLowerCase().includes(location.toLowerCase()) for (const [location, recipients] of Object.entries(locationGroups)) { if (smsContent.includes(location)) { // 批量转发短信到分组内所有号码 await Promise.all(recipients.map(recipient => client.messages.create({ body: smsContent, from: event.To, // 使用接收短信的Twilio号码作为发送方 to: recipient }) )); matched = true; break; } } // 无匹配标识时的可选处理(如转发到默认分组) if (!matched) { // client.messages.create({...}); } callback(null, twiml); };
3. 关键细节优化
- 大小写兼容:将短信内容和位置标识统一转为小写,避免因大小写差异导致漏匹配。
- 标识优先级:若存在包含关系的标识(如"Location A North"和"Location A"),将长标识放在映射对象的前面,优先匹配更精确的内容。
- 异步批量处理:用
Promise.all批量发送转发请求,提升处理效率。
4. 部署与测试
- 在Twilio Functions的环境变量中添加
ACCOUNT_SID和AUTH_TOKEN(从Twilio控制台获取)。 - 保存并部署函数,将函数地址配置到Twilio号码的Webhook中。
- 使用指定固定号码发送包含位置标识的短信,验证是否成功转发到对应分组。
内容的提问来源于stack exchange,提问作者164164526
相关产品推荐
相关产品推荐

