Twilio Serverless Functions发送WhatsApp模板后如何延续Studio Flow?
解决Twilio Studio Flow无法延续原会话处理快速回复的问题
核心问题原因
你用Serverless Function发送快速回复模板时,这个函数没有Studio组件自带的“发送并等待”关联机制,导致用户回复后Twilio将其识别为新会话,启动了新的Flow执行,而非回到原Flow实例。
推荐解决方案(优先选用,最省心)
直接改用Studio自带的发送消息组件替代Serverless Function:
- 删除原来调用Function的组件,拖入“发送消息”组件到Flow流程中
- 在组件配置里,选择你通过Content API创建的WhatsApp快速回复模板
- 开启组件的「等待回复」选项,设置合理的超时时间(比如5分钟)
- 在该组件后添加「拆分基于用户回复」组件,根据用户选择的快速回复内容,设置对应的分支逻辑即可
这个方案是Studio原生支持的,会自动处理会话关联,用户回复后直接回到当前Flow实例继续执行分支。
若必须使用Serverless Function的解决方法
需要手动给消息添加会话关联逻辑,让用户回复能指向原Flow执行实例:
- 传递执行ID到Function:在Studio调用Function的组件中,添加参数
executionSid,值填写{{flow.executionSid}}(这是Studio内置的当前Flow执行实例ID) - 修改Function代码:发送消息时指定
statusCallback,将回复事件导向原Flow的执行实例,示例代码如下:
exports.handler = function(context, event, callback) { const twilioClient = context.getTwilioClient(); const flowSid = '你的Studio Flow SID'; const executionSid = event.executionSid; twilioClient.messages.create({ to: event.To, from: event.From, contentSid: '你的Content API模板SID', // 把回复回调指向原Flow的执行事件接口 statusCallback: `https://studio.twilio.com/v2/Flows/${flowSid}/Executions/${executionSid}/Events`, statusCallbackMethod: 'POST' }) .then(message => callback(null, { success: true })) .catch(err => callback(err)); };
- 配置Flow的回复处理:确保你的WhatsApp号码的Webhook指向Studio Flow的入口,且Flow内有接收回复的逻辑,通过
executionSid关联到原实例继续执行。
备选方案:用Sync Service跟踪会话状态
如果上述方法都不适用,可借助Twilio Sync存储用户会话状态:
- 在Function发送消息时,将用户手机号和当前
executionSid存入Sync的Map对象 - 用户回复时,先触发一个前置Function,从Sync中取出该用户对应的
executionSid - 调用Twilio Studio API,将用户的回复事件发送到对应的Flow执行实例,继续原流程
内容的提问来源于stack exchange,提问作者Gavz22
相关产品推荐
相关产品推荐

