Teams Bot 开发中的对话概念
Concept of Conversations in Teams Bot development
我正在使用 NodeJS v4 Bot Framework 开发 Microsoft Teams Bot。这是我第一次去开发一个机器人,在我看来它缺少一个核心概念,对话/以前的消息上下文。当机器人问我进展如何并且我在下一条消息和后续消息中回答 "good" 时,它似乎没有将我的进展情况存储在对象中。
我通过将答案推送到数组中来解决这个问题,但之前的消息上下文尚未实现似乎很奇怪...我是否遗漏了什么?
我认为您可能缺少对 Bot state management 的理解。此 link 概述了 类型 状态(用户与对话)以及可以 store 状态的位置(例如内存、Azure blob 存储等)。请注意,本文中提出的 Cosmos DB 可能是一个昂贵的选择,因为机器人的高读取状态(每轮都会导致读取,这是 Cosmos 定价所基于的一部分),因此 MongoDB例如可能是另一种可能的选择。
"state" 的另一种方法是 "dialogs" 的概念,其中用户可能会经历一个特定的 "guided conversation"。例如,在航班预订场景中,您需要出发地点、目的地、日期、时间等,因此这是一个多回合 "mini conversation" 并且对话框在此上下文中进行自己的状态管理。参见“Dialogs within the Bot Framework”。
顺便说一句,您采用的 "array" 方法有点类似于内存中状态选项,但它需要您 100% 地管理事物,它不容易扩展(使用内置状态的东西,很容易将内存切换到另一个选项),并且它可能不是多用户安全的(取决于你如何使用数组,如果你为每个用户保存一个左右)。
希望对您有所帮助
我正在使用 NodeJS v4 Bot Framework 开发 Microsoft Teams Bot。这是我第一次去开发一个机器人,在我看来它缺少一个核心概念,对话/以前的消息上下文。当机器人问我进展如何并且我在下一条消息和后续消息中回答 "good" 时,它似乎没有将我的进展情况存储在对象中。
我通过将答案推送到数组中来解决这个问题,但之前的消息上下文尚未实现似乎很奇怪...我是否遗漏了什么?
我认为您可能缺少对 Bot state management 的理解。此 link 概述了 类型 状态(用户与对话)以及可以 store 状态的位置(例如内存、Azure blob 存储等)。请注意,本文中提出的 Cosmos DB 可能是一个昂贵的选择,因为机器人的高读取状态(每轮都会导致读取,这是 Cosmos 定价所基于的一部分),因此 MongoDB例如可能是另一种可能的选择。
"state" 的另一种方法是 "dialogs" 的概念,其中用户可能会经历一个特定的 "guided conversation"。例如,在航班预订场景中,您需要出发地点、目的地、日期、时间等,因此这是一个多回合 "mini conversation" 并且对话框在此上下文中进行自己的状态管理。参见“Dialogs within the Bot Framework”。
顺便说一句,您采用的 "array" 方法有点类似于内存中状态选项,但它需要您 100% 地管理事物,它不容易扩展(使用内置状态的东西,很容易将内存切换到另一个选项),并且它可能不是多用户安全的(取决于你如何使用数组,如果你为每个用户保存一个左右)。
希望对您有所帮助