我对Botbuilder-timeout模块的使用存在问题。 我尝试将它添加到我的Bot中,以便在机器人处于非活动状态一段时间后触发对话结束。我按照链接" https://www.npmjs.com/package/botbuilder-timeout"进行了操作。 它适用于不活动。但如果我的对话成功结束用户操作,那么也会超时触发。 所以 例如, 我已将setconversiontimeout设置为30秒。因此,对于任何给定点,机器人对话在30秒内处于非活动状态,它将触发超时操作。 但如果谈话正常进行,僵尸程序会因用户操作而结束,就像聊天一样。我的代码触发session.endConversation(); 但超时功能无法识别此结束转换,仍会询问用户是否仍在那里。并结束已经结束的对话。
我不确定出了什么问题。
你能帮忙做点什么吗?我如何准确地结束对话,以便这个计时器可以识别它并且不会结束已经结束的对话。答案 0 :(得分:0)
实际上,此模块中存在错误,请参阅https://github.com/User1m/botbuilder-timeout/blob/master/src/timeout.ts#L51的源代码,其中源代码为:
_this.clearTimeoutHandlers(event);
将event
对象传递给功能区。
但是,函数定义为private clearTimeoutHandlers(convoId: string)
,需要event.address.conversation.id
。
因此,您可以直接将第39行的botbuilder-timeout/dist/timeout.js
资源修改为:
_this.clearTimeoutHandlers(convoId);
。
我已经在https://github.com/User1m/botbuilder-timeout/pull/3向此存储库应用了拉取请求,如果通过,您可以更新此模块。