如何在DOTNET版Bot Framework Composer中设置用户响应超时计时器
DOTNET版Bot Framework Composer 用户响应超时功能实现方案
前置配置
首先在你存放提问逻辑的对应对话中,新增2个对话级别的状态变量:
conversation.userResponseReceived:布尔类型,默认值为false,用于标记用户是否已经回复当前提问conversation.timeoutReminderSent:布尔类型,默认值为false,用于标记是否已经发送过第一次超时提醒
核心步骤实现
1. 提问节点后配置超时触发逻辑
在你发送「请问您的姓名是什么?」消息的动作之后,依次添加以下逻辑:
- 先重置两个状态变量:将
conversation.userResponseReceived设为false,conversation.timeoutReminderSent设为false - 添加第一个
延迟动作:延迟时长设为300000(单位为毫秒,对应5分钟),延迟结束后执行条件判断:当
conversation.userResponseReceived == false时,执行两个动作:- 发送消息「您还在吗?」
- 将
conversation.timeoutReminderSent设为true
- 添加第二个
延迟动作:延迟时长设为600000(单位为毫秒,对应提问后10分钟),延迟结束后执行条件判断:当
conversation.userResponseReceived == false时,执行两个动作:- 发送消息「本次对话已结束,感谢您的咨询!」
- 调用
EndConversation内置动作,直接结束当前对话
2. 配置用户回复拦截逻辑
在当前对话的触发器列表中,新增一个OnMessageReceived触发器,设置触发范围为当前提问对话生效,触发后执行以下逻辑:
- 将
conversation.userResponseReceived设为true,终止所有未执行的超时判断逻辑 - 后续正常走用户姓名接收、校验的业务流程即可
注意事项
- 若生产环境部署在云服务中,请开启对应应用服务的常驻运行配置,避免应用休眠导致延迟触发出现偏差
- 若存在多个需要超时判断的提问场景,可将该逻辑封装为对话模板复用,无需重复配置
内容的提问来源于stack exchange,提问作者info
相关产品推荐
相关产品推荐

