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'));

若要与集对话框交互,可以使用当前 TurnContext调用 createContext () 。 这将创建一个 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');
}

构造函数

DialogSet(StatePropertyAccessor<DialogState>)

创建新的 DialogSet 实例。

属性

telemetryClient

为此对话集设置遥测客户端,并将其应用于所有当前对话。 为此对话集设置遥测客户端,并将其应用于所有当前对话。 添加到集内的未来对话也将继承此客户端。

方法

add<T>(T)

将新的对话框或提示添加到集中。

createContext(TurnContext)

创建可用于处理集中对话的对话上下文。

find(string)

查找以前使用 add () 添加到集的对话框。

getDialogs()

获取集的 Dialogs。

getVersion()

返回集中所有 Dialog.version 值的 32 位哈希。

构造函数详细信息

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>

表示异步操作的承诺。

find(string)

查找以前使用 add () 添加到集的对话框。

function find(dialogId: string): Dialog | undefined

参数

dialogId

string

对话框的 ID 或查找提示。

返回

Dialog | undefined

如果找到对话框,则为 ;否则为 undefined。

注解

此示例查找名为“greeting”的对话框:

const dialog = dialogs.find('greeting');

getDialogs()

获取集的 Dialogs。

function getDialogs(): Dialog[]

返回

Dialog[]

对话框数组。

getVersion()

返回集中所有 Dialog.version 值的 32 位哈希。

function getVersion(): string

返回

string

当任何子对话版本更改时将更改的版本。

注解

此哈希将持久保存到状态存储中,并用于检测对对话框集的更改。