如何通过Twilio API实现WhatsApp机器人的List Messages弹窗选择功能?
使用Twilio API实现WhatsApp列表消息弹窗选择功能
一、前置准备
- 确保你的Twilio账号已开通WhatsApp业务权限,绑定了可用的发送号码(沙盒测试号或正式商业号)
- 安装对应开发语言的Twilio SDK:
- Python:执行
pip install twilio - Node.js:执行
npm install twilio
- Python:执行
二、构造列表消息请求
通过Twilio的Messages资源发送符合WhatsApp规范的交互式列表消息,核心是指定content_type为application/json,并在body中传入列表结构的JSON数据。
Python代码示例
from twilio.rest import Client # 替换为你的Twilio账号SID和Auth Token account_sid = '你的账号SID' auth_token = '你的Auth Token' client = Client(account_sid, auth_token) # 发送列表消息 message = client.messages.create( from_='whatsapp:+你的Twilio号码', to='whatsapp:+目标用户号码', content_type='application/json', body='''{ "messaging_product": "whatsapp", "recipient_type": "individual", "to": "+目标用户号码", "type": "interactive", "interactive": { "type": "list", "header": { "type": "text", "text": "请选择服务类型" }, "body": { "text": "点击下方按钮查看可选服务" }, "footer": { "text": "如有疑问可直接回复消息" }, "action": { "button": "展开服务列表", "sections": [ { "title": "基础服务", "rows": [ { "id": "query_account", "title": "账户查询", "description": "查询余额与交易记录" }, { "id": "reset_pwd", "title": "密码重置", "description": "快速重置登录密码" } ] }, { "title": "增值服务", "rows": [ { "id": "upgrade_vip", "title": "会员升级", "description": "解锁专属权益" } ] } ] } } }''' ) print(f"消息已发送,SID: {message.sid}")
关键参数说明
interactive.type:固定设为list,指定消息类型为列表弹窗action.button:触发弹窗的按钮显示文本sections:列表的分组集合,每个分组包含title(分组标题)和rows(选项列表)rows.id:用户选择后回调返回的唯一标识,用于后续业务逻辑判断rows.title/description:选项的标题和补充说明文本
三、处理用户选择的回调
用户点击列表选项后,Twilio会向你配置的Webhook地址发送POST请求,请求参数中包含用户选择的id值,你可以据此返回对应回复。
Python Flask回调示例
from flask import Flask, request from twilio.rest import Client app = Flask(__name__) @app.route('/whatsapp-webhook', methods=['POST']) def handle_webhook(): user_choice = request.values.get('Body', '') user_number = request.values.get('WaId', '') # 根据选择的id生成对应回复 reply_map = { 'query_account': "你的账户余额为XXX元,最近3笔交易已发送至你的绑定邮箱", 'reset_pwd': "请按照以下步骤重置密码:1. 打开登录页;2. 点击忘记密码;3. 输入绑定手机号接收验证码", 'upgrade_vip': "会员升级需支付199元/年,确认升级请回复【Y】,取消请回复【N】" } reply_text = reply_map.get(user_choice, "抱歉,我无法识别你的选择,请重新操作") # 发送回复消息 account_sid = '你的账号SID' auth_token = '你的Auth Token' client = Client(account_sid, auth_token) client.messages.create( from_='whatsapp:+你的Twilio号码', to=f'whatsapp:{user_number}', body=reply_text ) return '', 200 if __name__ == '__main__': app.run(port=5000)
内容的提问来源于stack exchange,提问作者NoXSaeeD
相关产品推荐
相关产品推荐

