如何在Twilio中创建支持多选的list picker template?
在Twilio中实现多选列表选择器方案
Twilio原生的List Picker Template确实仅支持单选,但可以通过以下两种方案实现多选需求(比如选择两种喜爱的颜色,最终输出Red,Green这类格式):
方案一:使用Multi-Select交互式组件(推荐,支持主流IM渠道)
针对WhatsApp、Facebook Messenger等支持交互式消息的渠道,可以直接使用Twilio的Multi-Select组件,它允许用户选择多个选项,还能限制选择数量。
示例代码(Python)
from twilio.rest import Client # 替换为你的Twilio账号信息 account_sid = 'your_account_sid' auth_token = 'your_auth_token' client = Client(account_sid, auth_token) message = client.messages.create( from_='whatsapp:+14155238886', to='whatsapp:+15005550006', content={ "type": "template", "template": { "name": "color_selection", "language": {"code": "zh"}, "components": [ { "type": "body", "parameters": [{"text": "请选择两种喜爱的颜色:"}] }, { "type": "action", "action": { "type": "multi_select", "options": [ {"id": "red", "title": "Red"}, {"id": "black", "title": "Black"}, {"id": "blue", "title": "Blue"}, {"id": "green", "title": "Green"} ], "max_selected": 2, # 限制最多选2个 "min_selected": 2 # 可选:强制用户必须选2个 } } ] } } ) print(message.sid)
结果处理
用户提交选择后,Twilio会将选中的选项以逗号分隔的形式(比如red,green)发送到你配置的Webhook。你可以直接从request.Body或请求参数的SelectedOptions字段中提取数据,转换成你需要的格式(比如将ID替换为标题Red,Green)。
方案二:分步单选(适配SMS等不支持Multi-Select的渠道)
如果目标渠道不支持交互式组件(比如普通SMS),可以通过两次单选的方式实现多选:
- 第一步:发送单选列表,让用户选择第一个喜爱的颜色
- 第二步:用户选择后,发送排除已选颜色的单选列表,让用户选择第二个颜色
- 最后将两次选择的结果拼接成
Red,Green格式
注意点
这种方式需要维护用户的会话状态:你可以用Twilio的Session Storage存储用户已选的第一个颜色,或者在自己的数据库中记录用户会话的进度,确保第二次发送列表时排除已选选项。
关键注意事项
- 先确认目标通信渠道是否支持Multi-Select组件(WhatsApp、Messenger等支持,SMS通常不支持)
- 使用模板时,需要先在Twilio Console中创建包含Multi-Select组件的模板并通过平台审核
- Webhook接收数据时,不同渠道的参数结构可能略有差异,需要根据实际返回调整解析逻辑
内容的提问来源于stack exchange,提问作者Abd-Elrahman Elsayed
相关产品推荐
相关产品推荐

