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

如何通过Twilio API实现WhatsApp机器人的List Messages弹窗选择功能?

使用Twilio API实现WhatsApp列表消息弹窗选择功能

一、前置准备

  • 确保你的Twilio账号已开通WhatsApp业务权限,绑定了可用的发送号码(沙盒测试号或正式商业号)
  • 安装对应开发语言的Twilio SDK:
    • Python:执行 pip install twilio
    • Node.js:执行 npm install twilio

二、构造列表消息请求

通过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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.05 17:16:10