如何通过Twilio API实现多用户WhatsApp消息关键词提醒功能?
多用户WhatsApp关键词提醒实现方案(基于Twilio)
核心实现思路
Twilio不需要你主动提交用户号码列表,而是通过全局Webhook+本地数据库关联实现多用户场景:
- 先在Twilio控制台配置WhatsApp服务(Sandbox测试/正式Business API),设置一个接收所有 incoming 消息的Webhook URL,指向你的应用接口。
- 你的应用用数据库存储用户信息:用户ID、绑定的WhatsApp号码、提醒方式(推送/邮件等)。
- 用户注册时,引导他们完成Twilio的号码验证(比如发送指定代码到你的Twilio Sandbox号码),验证后Twilio会自动把该用户号码的消息转发到你的Webhook。
- 当Twilio收到消息时,会把发件人号码、消息内容等参数POST到你的Webhook接口,你在接口里匹配用户、检查关键词,触发提醒。
示例代码(Node.js + Express)
const express = require('express'); const bodyParser = require('body-parser'); const app = express(); // 模拟用户数据库,实际替换为MongoDB/MySQL等持久化存储 const userDB = [ { userId: 'u_001', waNumber: 'whatsapp:+1234567890', alertType: 'push' }, { userId: 'u_002', waNumber: 'whatsapp:+0987654321', alertType: 'email' } ]; app.use(bodyParser.urlencoded({ extended: false })); // 接收Twilio Webhook的接口 app.post('/twilio-wa-webhook', (req, res) => { const senderWaNumber = req.body.From; const msgBody = req.body.Body.toLowerCase(); // 匹配对应的用户 const targetUser = userDB.find(user => user.waNumber === senderWaNumber); if (!targetUser) { return res.status(404).send('User not registered'); } // 检查关键词 if (msgBody.includes('elephant')) { // 触发提醒逻辑,替换为你的实际推送/邮件代码 triggerAlert(targetUser.userId, targetUser.alertType); console.log(`Alert triggered for user ${targetUser.userId}`); } // 回复Twilio,不需要给用户发消息就返回空响应 res.send('<Response></Response>'); }); // 模拟提醒发送函数 function triggerAlert(userId, alertType) { if (alertType === 'push') { // 调用你的推送服务API,比如: // pushClient.send(userId, '你收到含"elephant"关键词的WhatsApp消息'); } else if (alertType === 'email') { // 调用邮件服务API,比如: // emailClient.send(userId, 'WhatsApp关键词提醒', '你的WhatsApp收到包含"elephant"的消息'); } } app.listen(3000, () => { console.log('服务启动在3000端口'); });
Twilio官方文档重点参考
- Webhook配置:在Twilio控制台的WhatsApp服务页面,设置「Incoming Messages」的Webhook URL为你的应用接口,请求方法选POST。
- 消息参数:Twilio发送给Webhook的POST请求包含
From(用户的WhatsApp号码,格式为whatsapp:+XXX)、Body(消息内容)等核心字段,可查阅Twilio消息资源文档。 - 用户号码绑定:引导用户发送指定代码(比如
JOIN 你的沙箱名称)到Twilio Sandbox号码,完成验证后,该用户的消息会自动转发到你的Webhook。
替代服务选项
- Meta WhatsApp Business API:直接使用官方API,支持多号码管理,Webhook逻辑类似,但需要企业资质,审批周期较长。
- Plivo:和Twilio类似的云通讯服务,WhatsApp集成的多用户支持更简洁,文档门槛更低。
- MessageBird:提供批量号码管理功能,Webhook机制完善,适合多用户场景快速落地。
其他可行思路
- 无服务器方案:用Twilio Functions替代自建服务器,直接在Twilio平台编写Webhook处理逻辑,调用你的数据库接口触发提醒,减少运维成本。
- 批量拉取(非实时):如果不需要实时提醒,可定期调用Twilio的Messages API拉取所有用户号码的消息记录,批量检查关键词后发送提醒,但延迟较高,仅适合非实时场景。
内容的提问来源于stack exchange,提问作者rwallace
相关产品推荐
相关产品推荐

