Поделиться через


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

Конструкторы

DialogSet(StatePropertyAccessor<DialogState>)

Создает новый экземпляр DialogSet.

Свойства

telemetryClient

Задайте клиент телеметрии для этого набора диалогов и примените его ко всем текущим диалогам. Задайте клиент телеметрии для этого набора диалогов и примените его ко всем текущим диалогам. Будущие диалоги, добавленные в набор, также наследуют этот клиент.

Методы

add<T>(T)

Добавляет новое диалоговое окно или запрос в набор.

createContext(TurnContext)

Создает контекст диалога, который можно использовать для работы с диалогами в наборе.

find(string)

Находит диалоговое окно, которое ранее было добавлено в набор с помощью add().

getDialogs()

Возвращает диалоговые окна набора.

getVersion()

Возвращает 32-разрядный хэш всех Dialog.version значений в наборе.

Сведения о конструкторе

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

Диалоговое окно или запрос на добавление. Если в наборе диалоговых окон присутствует телеметрия, он будет добавлен в каждое диалоговое окно.

Возвращаемое значение

this

Диалоговое окно после завершения операции.

Комментарии

Если добавленный Dialog.id уже существует в наборе, идентификатор диалогов будет обновлен, чтобы включить суффикс, который делает его уникальным. Таким образом, добавление 2 диалоговых окон с именем "дубликат" в набор приведет к тому, что первая из них имеет идентификатор "дубликата" и второй имеет идентификатор "дубликата2".

createContext(TurnContext)

Создает контекст диалога, который можно использовать для работы с диалогами в наборе.

function createContext(context: TurnContext): Promise<DialogContext>

Параметры

context

TurnContext

Контекст для текущего шага беседы с пользователем.

Возвращаемое значение

Promise<DialogContext>

Обещание, представляющее асинхронную операцию.

find(string)

Находит диалоговое окно, которое ранее было добавлено в набор с помощью add().

function find(dialogId: string): Dialog | undefined

Параметры

dialogId

string

Идентификатор диалогового окна или запроса на поиск.

Возвращаемое значение

Dialog | undefined

При обнаружении диалогового окна; в противном случае не определено.

Комментарии

В этом примере находится диалоговое окно с именем "приветствие":

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

getDialogs()

Возвращает диалоговые окна набора.

function getDialogs(): Dialog[]

Возвращаемое значение

Dialog[]

Массив диалогового окна.

getVersion()

Возвращает 32-разрядный хэш всех Dialog.version значений в наборе.

function getVersion(): string

Возвращаемое значение

string

Версия, изменяющаяся при изменении любой из дочерних диалоговых окон.

Комментарии

Этот хэш сохраняется в хранилище состояний и используется для обнаружения изменений в наборе диалоговых окон.