You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

基于内容条件匹配的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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.01 04:33:32