如何使用 sdk v4 for node js 重新启动与机器人的连接

Posted

技术标签:

【中文标题】如何使用 sdk v4 for node js 重新启动与机器人的连接【英文标题】:how to restart a connection to the bot using sdk v4 for node js 【发布时间】:2019-05-19 13:43:48 【问题描述】:

我正在为节点 js 使用 sdk v4 开发一个机器人,我想在用户单击按钮时结束当前对话并开始新的对话。我尝试await this.conversationState.clear(turnContext) 清除对话数据,但对话 ID 没有变化。请建议如何触发对话更新活动以重新启动与机器人的连接。

【问题讨论】:

请问您希望完成什么或期望发生什么?您希望从 UI 中删除频道的聊天记录吗?你想重置机器人的对话数据吗?您只是想生成一个新的对话 ID 吗?您能否通过清除对话框堆栈并开始一个新对话框来实现您的目标,就好像用户正在开始一个新对话一样? 你还在做这个吗? @KyleDelaney 我正在尝试在机器人框架模拟器中实现“重新启动对话”等功能,其中聊天历史记录将被删除并生成新的对话 ID。我可以删除 UI 中的聊天记录。当用户单击 bot.js 中的按钮并且我没有在我的机器人中使用 botbuilder-dialogs 时,我想生成新的对话 ID。 删除用户界面中的聊天记录是频道的能力,而不是机器人。你为哪个频道制作机器人?我认为这只能在网络聊天或您自己的自定义 Direct Line 客户端中实现。 @KyleDelaney 我正在使用 Direct Line。 【参考方案1】:

机器人模拟器和 Azure 门户网络聊天都包含一种重新启动按钮,用于清除对话历史记录并生成新的对话 ID。这是通过刷新网络聊天来完成的。

每次将密钥交换为令牌时,Direct Line 都会生成一个新的对话 ID。如果您将 Direct Line secret 直接传递给 Web Chat 并让 Web Chat 将其交换为令牌,则生成新对话 ID 所要做的就是refresh the page or frame。

如果您将秘密存储在私密位置(推荐)并自己将其交换为令牌并将令牌传递给网络聊天,那么只需再次执行此操作以生成新的对话 ID。 p>

【讨论】:

以上是关于如何使用 sdk v4 for node js 重新启动与机器人的连接的主要内容,如果未能解决你的问题,请参考以下文章

AWS Lambda 导出类在 node.js v6.4 中有效,但在 node.js v4.3 中无效,如何解决这个问题? [复制]

如何从适用于 Node.js 的 Azure blob v12 SDK 中删除 blob

如何使用 node.js 在重定向 url 中获取元素

EasyStreamClient对接海康流媒体V4.X——SDK 结构体定义说明

如何使用 Facebook PHP SDK v4 访问 GraphObject 中的用户语言

如何在Node.js / Express中进行重定向(301)?