如何为Twilio Studio的WhatsApp消息设置实时详细状态回调?
我正在尝试设置一个Webhook回调,希望Twilio Studio在消息发送流程的每个阶段调用该回调,并将活动状态发送到我设置的Webhook。
我当前使用的Studio创建方法:
client.studio \ .v2 \ .flows(TwilioConstants.TWILIOFLOW_PROXY) \ .executions \ .create( to=f'whatsapp:{user_number}', from_=f'whatsapp:{TwilioConstants.BASENUMBER}', parameters={ 'name': data.customer.name, 'user_email': data.customer.email} )
该create方法仅接受3个参数:
create(self, to, from_, parameters=values.unset):
但messages.create方法支持包括status_callback在内的多个参数。
我曾尝试在“WhatsApp Sender -> Status callback URL”中设置Webhook,但它似乎仅返回非常基础的数据,且仅在用户交互消息时触发(目前尚未测试消息超时或错误情况)。我希望Webhook能收到类似“Monitor -> Messaging -> Message Details”中的详细信息。
解决方法
为Studio Flow中的每个Send Message组件单独配置状态回调
进入你的Studio Flow编辑页面,找到每个发送WhatsApp消息的「Send Message」组件,在组件的配置面板中找到「Status Callback」选项,填入你的Webhook地址。这个配置会让该组件发出的每一条消息,在其生命周期的每个阶段(排队、发送、送达、已读、失败、未送达等)都向指定Webhook推送完整的状态数据,包含的字段和你在Twilio控制台「Monitor -> Messaging -> Message Details」里看到的完全一致,比如MessageSid、Status、ErrorCode、ErrorMessage等核心信息。全局状态回调增强(可选)
若希望所有WhatsApp号码发送的消息都默认启用详细状态回调,可在Twilio控制台进入「Messaging > Senders > WhatsApp Senders」,选择对应的号码进入编辑页,设置「Status Callback URL」,同时在「Callback Events」中勾选所有状态事件(包括sent、delivered、read、failed、undelivered等)。注意,Studio组件的单独配置优先级高于全局设置,若组件已设置回调,会以组件配置为准。验证Webhook接收内容
Twilio会以POST请求推送状态数据,你可以打印请求体来确认字段,关键数据字段包括:MessageSid: 消息唯一标识Status: 消息当前状态ErrorCode: 错误状态对应的代码(仅失败/未送达时存在)ErrorMessage: 错误详情(仅失败/未送达时存在)From/To: 消息的收发号码DateCreated/DateUpdated: 消息的创建和更新时间戳
内容的提问来源于stack exchange,提问作者dazfaz

