Twilio外发短信前置验证:识别VoIP号码,拦截发送并反馈用户
实现Twilio外发短信前验证VoIP号码并拦截发送
1. 创建Twilio Functions验证服务
通过Twilio Functions搭建号码类型验证服务,借助Twilio Lookup API识别接收方号码是否为VoIP类型。
函数代码示例
exports.handler = async function(context, event, callback) { const twilioClient = context.getTwilioClient(); const phoneNumber = event.to; // 接收方号码需带国际国家码,格式如+1234567890 try { const lookupResult = await twilioClient.lookups.v2.phoneNumbers(phoneNumber).fetch({ fields: 'line_type_intelligence' }); const lineType = lookupResult.lineTypeIntelligence.type; const isVoIP = lineType === 'voip'; callback(null, { is_voip: isVoIP, line_type: lineType }); } catch (error) { console.error('号码识别失败:', error); callback(error); } };
注意:需在Twilio Functions控制台配置好TWILIO_ACCOUNT_SID和TWILIO_AUTH_TOKEN环境变量,并确保账户已启用Lookup API权限。
2. 用Studio Flow编排发送逻辑
通过Twilio Studio构建完整的发送决策流程,先验证号码类型,再执行对应操作:
- 添加Trigger节点,选择「Messaging」作为触发方式(或根据需求选API触发)
- 添加Run Function节点,关联上述验证函数,传入接收方号码参数(如
{{trigger.message.To}}) - 添加**Split Based On...**节点,判断函数返回的
is_voip值:- 若为
true:添加Send Message节点,向发送方反馈「无法向VoIP号码发送短信」,结束流程 - 若为
false:添加Send Message节点,发送目标短信内容,完成流程
- 若为
3. 配置发送入口
- 若通过API触发发送:直接调用Studio Flow的API,传入接收方号码参数
- 若通过Twilio号码触发:将该号码的Messaging Webhook指向Studio Flow的Webhook地址
关键注意事项
- 接收方号码必须带国际国家码,否则Lookup API无法正确识别类型
- Lookup API会产生少量调用费用,需确保账户余额充足
- 反馈消息可定向至触发发送的号码(如
{{trigger.message.From}})或指定通知号码
内容的提问来源于stack exchange,提问作者Ashish Dwivedi
相关产品推荐
相关产品推荐

