【问题标题】:What is the difference between a Dialog and a Conversation in Microsoft Bot Framework?Microsoft Bot Framework 中的对话框和对话有什么区别?
【发布时间】:2016-11-08 12:10:53
【问题描述】:

对我个人而言,对话和对话是一回事。然而,该框架区分了这两个术语,我不太明白有什么区别。此外,我在文档中的某处找不到准确、可理解的定义。

【问题讨论】:

  • 这是一个关于具有新框架的特定术语的有效问题。要将其关闭为“广泛”,您应该具有该框架的经验并确定这两个术语不是实际的技术术语或功能
  • 事实上,我认为在自然语言/语音处理中,对话是开放式的,而对话是明确定义的,例如银行烦人的语音响应系统。我认为 Windows Speech API 中的区别也很明确

标签: .net bots botframework azure-language-understanding


【解决方案1】:

C# Dialogs documentation 的概述很好地解释了这些概念:

对话模拟对话过程,其中机器人和用户之间的消息交换是与外界交互的主要渠道。 每个对话框都是一个抽象,它将自己的状态封装在实现 IDialog 的 C# 类中。对话可以与其他对话组合以最大限度地重用,对话上下文维护对话中活动的对话堆栈。 由对话组成的对话可以跨机器移植,从而可以扩展机器人实现。此对话状态(活动对话的堆栈和每个对话的状态)存储在与机器人连接器交换的消息中,使机器人实现在请求之间无状态。 (很像一个不在 Web 服务器内存中存储会话状态的 Web 应用程序。)

另外,来自Dialogs Node.js documentation:

要理解对话框,最容易将它们视为等价物 网站的路线。所有机器人都至少有一个根“/” 对话框就像所有网站通常至少有一个根'/' 路线。当框架收到来自用户的消息时,它将 路由到这个根“/”对话框进行处理。

【讨论】:

  • 1.所以基本上一个对话框总是代表一个“主题”?例如,关于汽车的问题将是 CarDialog。关于食物的问题将是 FoodDialog 并且所有这些对话框都可以组合吗? 2.“由对话组成的对话可以跨机器移植,从而可以扩展机器人实现”=>这是否意味着您可以将它与 Skype 等一起使用? 3.“此对话状态存储在消息中......” => 所以一个对话中的所有消息都在该 DialogState 字段中(一些加密值??)
  • 1) 这取决于你如何编码。没有什么能阻止您进行汽车和食品的对话。 Dialog 只是您必须实现的接口 (docs.botframework.com/sdkreference/csharp/dd/d5e/…)。 3) 是的,此对话状态(活动对话堆栈和每个对话的状态)存储在与 Bot 连接器交换的消息中,从而使 bot 实现在请求之间无状态。 (很像一个不将会话状态存储在 Web 服务器内存中的 Web 应用程序。)
  • 关于 2)我想说的是,由于对话框是可序列化的,所以它是可移植的,并且允许您扩展
  • 感谢您的回答。但是我仍然不太明白何时创建不同的对话框。在这种情况下,文档对我没有帮助。我需要一个示例,例如... foreach Entity in a class diagram 您在 .NET 中为实体框架创建一个新类。
  • 对,没有像 EF 那样的规则。您的对话会收到一条消息,您可以根据收到的消息执行操作。如果无法处理该消息,您的根对话框可以启动子对话框。最简单的例子可能是一个对话框,它可以做一些事情,但需要对用户进行身份验证。因此根对话框将检查用户是否有令牌,如果没有则启动 authdialog。让我们换一种方式。你想让你的机器人做什么?
猜你喜欢
  • 1970-01-01
  • 2017-04-27
  • 2020-02-25
  • 1970-01-01
  • 2017-07-18
  • 1970-01-01
  • 1970-01-01
  • 2018-02-26
  • 1970-01-01
相关资源
最近更新 更多