【问题标题】:Clear the existing dialog清除现有对话框
【发布时间】:2019-09-30 23:09:05
【问题描述】:

当我输入“reset”命令时,我想重新开始对话并清除之前的所有对话,请问怎么做?我坚持了2天。 提前致谢。

这里是我的源代码。

bot.dialog('/reset', (session) => {
    session.endDialog();

    var msg = new builder.Message(session)
        .addAttachment(welcomecard_1.welcomeCard());

    session.send(msg);
})
.triggerAction({
    matches: /^reset$/i
});

我输入“reset”或“/reset”后 先前的对话 [红色] 将从对话框中删除,并且该频道正在使用直线。

更新: 我试过这段代码,但不行。

bot.use(builder.Middleware.dialogVersion({ version: 1.0, resetCommand: /^reset/i }));

【问题讨论】:

  • 我可以知道您连接的是哪个频道吗?
  • @MdFaridUddinKiron 直达专线
  • 我用过这个方法,但是没用。 docs.microsoft.com/en-us/azure/bot-service/nodejs/…
  • 管理状态数据与频道客户端中的对话历史无关。这是在 UI 中呈现的视觉元素。清除对话历史记录将是客户端应用程序的责任。您是否自己构建了 Direct Line 客户端?
  • 您说的是机器人的代码方面,我说的是您与机器人交互的渠道。在这里,您要求清理 UI 上的对话,重点是……这个 UI 是什么? Directline 不是 UI,它是通信(由 Webchat UI 使用,由自定义 UI 使用......)。正如凯尔所说,“清除对话历史记录将是客户端应用程序的责任”,所以你必须告诉我们这个客户端应用程序是什么

标签: javascript node.js botframework


【解决方案1】:

您可以使用session.clearDialogStack()session.endConversation()session.reset() 清除对话框堆栈。以下是它们之间的区别:

session.clearDialogStack()

  • 什么都不做

session.endConversation()

  • 可选择向用户发送消息
  • 清除conversationDataprivateConversationData
  • 向频道发送endOfConversation 事件

session.reset()

  • 开始一个新的对话

【讨论】:

  • 你的意思是问如何从频道客户端清除对话历史记录?
  • 是的。我的意思是。
  • @EngSoonCheah - Md Farid Uddin Kiron 的回答可以接受吗?
  • 没有。 @凯尔德莱尼
  • 我曾经使用过这种方法docs.microsoft.com/en-us/azure/bot-service/nodejs/…,但它不起作用。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2012-09-03
  • 1970-01-01
  • 2013-11-07
  • 1970-01-01
  • 1970-01-01
  • 2022-08-13
  • 1970-01-01
相关资源
最近更新 更多