我对Botbuilder-timeout模块的使用有一个问题。我尝试将它添加到我的机器人,以触发对话结束,如果机器人在一段时间内不活动。我按照链接"https://www.npmjs.com/package/botbuilder-timeout“的步骤操作。它可以很好地处理非活动状态。但是,如果我的对话以用户操作成功结束,那么也会触发超时。例如,我将setconversiontimeout设置为30秒。因此,对于任何给定的点,机器人会话在30秒内处于非活动状态,它将触发超时操作。但是,如果对话正常进行,机器人以用户操作结束,就像我结束聊天一样。并且我的代码触发了session.endConversation();但是超时函数不能识别这个end转换,并且仍然询问用户他是否仍然是there.and结束已经结束的会话。
我不确定哪里出了问题。
你能帮我做点什么吗?我如何准确地结束对话,以便这个计时器可以识别它,而不是结束已经结束的对话。
发布于 2018-03-28 15:00:32
实际上,这个模块中有一个bug,请参考https://github.com/User1m/botbuilder-timeout/blob/master/src/timeout.ts#L51上的源代码,这里的源代码是:_this.clearTimeoutHandlers(event);,它将event对象传递给函数。
但是,函数定义是需要event.address.conversation.id的private clearTimeoutHandlers(convoId: string)。
因此,您可以直接将位于botbuilder-timeout/dist/timeout.js的第39行的资源修改为:_this.clearTimeoutHandlers(convoId);。
我已经在https://github.com/User1m/botbuilder-timeout/pull/3向这个仓库申请了一个拉取请求,如果通过了,你就可以更新这个模块了。
https://stackoverflow.com/questions/49525845
复制相似问题