DialogSet class
一组可以相互调用的相关对话。
注解
对话集的构造函数应传递一个状态属性,该属性将用于保存集的对话框堆栈:
const { ConversationState, MemoryStorage, ActivityTypes } = require('botbuilder');
const { DialogSet, Dialog, DialogTurnStatus } = require('botbuilder-dialogs');
const convoState = new ConversationState(new MemoryStorage());
const dialogState = convoState.createProperty('dialogState');
const dialogs = new DialogSet(dialogState);
机器人可以使用 add() 方法向集添加对话框或提示:
class GreetingDialog extends Dialog {
async beginDialog(dc, options) {
await dc.context.sendActivity(`Hi! I'm a bot.`);
return await dc.endDialog();
}
}
dialogs.add(new GreetingDialog('greeting'));
若要与集对话进行交互,可以调用 createContext() 与当前 TurnContext
。 这将创建一个可用于启动或继续执行集对话框的 DialogContext
:
// Create DialogContext for the current turn
const dc = await dialogs.createContext(turnContext);
// Try to continue executing an active multi-turn dialog
const result = await dc.continueDialog();
// Send greeting if no other dialogs active
if (result.status == DialogTurnStatus.empty && dc.context.activity.type == ActivityTypes.Message) {
await dc.beginDialog('greeting');
}
构造函数
Dialog |
创建新的 DialogSet 实例。 |
属性
telemetry |
设置此对话框集的遥测客户端,并将其应用到所有当前对话。 设置此对话框集的遥测客户端,并将其应用到所有当前对话。 添加到集中的未来对话也将继承此客户端。 |
方法
add<T>(T) | 将新的对话框或提示添加到集。 |
create |
创建可用于处理集中对话的对话框上下文。 |
find(string) | 使用 add()查找以前添加到集中的对话框。 |
get |
获取集的对话框。 |
get |
返回集中所有 |
构造函数详细信息
DialogSet(StatePropertyAccessor<DialogState>)
创建新的 DialogSet 实例。
new DialogSet(dialogState?: StatePropertyAccessor<DialogState>)
参数
- dialogState
-
StatePropertyAccessor<DialogState>
(可选)用于保存设置对话框堆栈的状态属性。
注解
如果未传入 dialogState
属性,则调用 createContext() 将返回错误。 需要手动为集创建 DialogContext
,并传入自己的状态对象来保存集对话框堆栈:
const dc = new DialogContext(dialogs, turnContext, state);
属性详细信息
telemetryClient
设置此对话框集的遥测客户端,并将其应用到所有当前对话。 设置此对话框集的遥测客户端,并将其应用到所有当前对话。 添加到集中的未来对话也将继承此客户端。
BotTelemetryClient telemetryClient
属性值
BotTelemetryClient
要用于日志记录的 BotTelemetryClient。
方法详细信息
add<T>(T)
将新的对话框或提示添加到集。
function add<T>(dialog: T): this
参数
- dialog
-
T
要添加的对话或提示。 如果对话集中存在 telemetryClient,则会将其添加到每个对话。
返回
this
作完成后设置的对话。
注解
如果正在添加的 Dialog.id
已存在于集中,对话 ID 将更新为包含一个后缀,使其唯一。 因此,向集中添加 2 个名为“duplicate”的对话框将导致第一个对话框的 ID 为“duplicate”,第二个对话框的 ID 为“duplicate2”。
createContext(TurnContext)
创建可用于处理集中对话的对话框上下文。
function createContext(context: TurnContext): Promise<DialogContext>
参数
- context
-
TurnContext
与用户的当前会话轮次的上下文。
返回
Promise<DialogContext>
表示异步作的 promise。
find(string)
使用 add()查找以前添加到集中的对话框。
function find(dialogId: string): Dialog | undefined
参数
- dialogId
-
string
要查找的对话框或提示的 ID。
返回
Dialog | undefined
如果找到,则为对话框;否则为未定义。
注解
此示例查找名为“greeting”的对话框:
const dialog = dialogs.find('greeting');
getDialogs()
getVersion()
返回集中所有 Dialog.version
值的 32 位哈希。
function getVersion(): string
返回
string
当任何子对话版本发生更改时,将更改的版本。
注解
此哈希持久保存到状态存储中,用于检测对对话框集的更改。