ComponentDialog class

Базовый класс для диалогового окна, содержащего другие дочерние диалоги.

Extends

Комментарии

Диалоговые окна компонентов позволяют разбить логику бота на компоненты, которые могут быть добавлены в качестве диалогового окна в другой ComponentDialog или DialogSet. Компоненты также можно экспортировать как часть пакета узла и использовать в других ботах.

Чтобы определить новый компонент, наследуемый класс из ComponentDialog, и добавить дочерние диалоги в конструктор классов:

const { ComponentDialog, WaterfallDialog, TextPrompt, NumberPrompt } = require('botbuilder-dialogs');

class FillProfileDialog extends ComponentDialog {
    constructor(dialogId) {
        super(dialogId);

        // Add control flow dialogs
        this.addDialog(new WaterfallDialog('start', [
            async (step) => {
                // Ask user their name
                return await step.prompt('namePrompt', `What's your name?`);
            },
            async (step) => {
                // Remember the users answer
                step.values['name'] = step.result;

                // Ask user their age.
                return await step.prompt('agePrompt', `Hi ${step.values['name']}. How old are you?`);
            },
            async (step) => {
                // Remember the users answer
                step.values['age'] = step.result;

                // End the component and return the completed profile.
                return await step.endDialog(step.values);
            }
        ]));

        // Add prompts
        this.addDialog(new TextPrompt('namePrompt'));
        this.addDialog(new NumberPrompt('agePrompt'))
    }
}
module.exports.FillProfileDialog = FillProfileDialog;

Затем можно добавить новые экземпляры компонента в другой DialogSet или ComponentDialog:

const dialogs = new DialogSet(dialogState);
dialogs.add(new FillProfileDialog('fillProfile'));

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

ComponentDialog(string)

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

Свойства

id

Уникальный идентификатор диалогового окна. Задает уникальный идентификатор диалогового окна.

telemetryClient

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

Унаследованные свойства

dialogs

Набор диалоговых окон контейнеров.

EndOfTurn

Возвращает результат конца по умолчанию.

Методы

addDialog(Dialog)

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

beginDialog(DialogContext, O)

Вызывается при запуске диалогового окна и отправке в стек диалоговых окон родительского элемента. По умолчанию этот метод вызывает метод Dialog.BeginDialogAsync(DialogContext, object, CancellationToken) начального диалогового окна компонента, как определено InitialDialogId. Переопределите этот метод в производном классе для реализации логики прерываний.

continueDialog(DialogContext)

Вызывается при продолжении диалогового окна, где он является активным, а пользователь отвечает с новым действием. Если этот метод не переопределен, диалоговое окно автоматически заканчивается, когда пользователь отвечает.

createChildContext(DialogContext)

Создает контекст внутреннего диалога

endDialog(TurnContext, DialogInstance, DialogReason)

Вызывается, когда диалоговое окно заканчивается.

repromptDialog(TurnContext, DialogInstance)

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

resumeDialog(DialogContext, DialogReason, any)

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

Наследуемые методы

configure(Record<string, unknown>)

Метод Fluent для настройки объекта.

findDialog(string)

Находит дочернее диалоговое окно, которое ранее было добавлено в контейнер.

getConverter(string)
getVersion()

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

onDialogEvent(DialogContext, DialogEvent)

Вызывается при возникновении события, используя DialogContext.emitEvent()текущее диалоговое окно или диалоговое окно, запущенное текущим диалогом.

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

ComponentDialog(string)

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

new ComponentDialog(dialogId?: string)

Параметры

dialogId

string

Необязательный. уникальный идентификатор диалогового окна.

Сведения о свойстве

id

Уникальный идентификатор диалогового окна. Задает уникальный идентификатор диалогового окна.

string id

Значение свойства

string

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

Комментарии

Это будет автоматически создано, если не указано.

telemetryClient

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

BotTelemetryClient telemetryClient

Значение свойства

BotTelemetryClient

BotTelemetryClient, используемый для ведения журнала.

Сведения об унаследованном свойстве

dialogs

Набор диалоговых окон контейнеров.

dialogs: DialogSet

Значение свойства

Наследуется отDialogContainer.dialogs

EndOfTurn

Возвращает результат конца по умолчанию.

static EndOfTurn: DialogTurnResult

Значение свойства

Комментарии

Этот результат указывает, что диалоговое окно (или логический шаг в диалоговом окне) завершило обработку текущего шага, по-прежнему активно и ожидает дополнительных входных данных.

Наследуется отDialog.EndOfTurn

Сведения о методе

addDialog(Dialog)

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

function addDialog(dialog: Dialog): this

Параметры

dialog
Dialog

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

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

this

КомпонентDialog после завершения операции.

Комментарии

Dialog.id первого дочернего элемента, добавленного в компонент, будет назначено свойству initialDialogId.

beginDialog(DialogContext, O)

Вызывается при запуске диалогового окна и отправке в стек диалоговых окон родительского элемента. По умолчанию этот метод вызывает метод Dialog.BeginDialogAsync(DialogContext, object, CancellationToken) начального диалогового окна компонента, как определено InitialDialogId. Переопределите этот метод в производном классе для реализации логики прерываний.

function beginDialog(outerDC: DialogContext, options?: O): Promise<DialogTurnResult>

Параметры

outerDC
DialogContext

Родительский dialogContext для текущей очереди беседы.

options

O

Необязательные, начальные сведения для передачи в диалоговое окно.

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

Promise<DialogTurnResult>

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

Комментарии

Если задача выполнена успешно, результат указывает, активен ли диалог после обработки в диалоговом окне.

continueDialog(DialogContext)

Вызывается при продолжении диалогового окна, где он является активным, а пользователь отвечает с новым действием. Если этот метод не переопределен, диалоговое окно автоматически заканчивается, когда пользователь отвечает.

function continueDialog(outerDC: DialogContext): Promise<DialogTurnResult>

Параметры

outerDC
DialogContext

Родительский dialogContext для текущей очереди беседы.

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

Promise<DialogTurnResult>

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

Комментарии

Если задача выполнена успешно, результат указывает, активен ли диалог после обработки в диалоговом окне. Результат также может содержать возвращаемое значение.

createChildContext(DialogContext)

Создает контекст внутреннего диалога

function createChildContext(outerDC: DialogContext): DialogContext

Параметры

outerDC
DialogContext

контекст внешнего диалогового окна

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

Созданный контекст диалогового окна.

endDialog(TurnContext, DialogInstance, DialogReason)

Вызывается, когда диалоговое окно заканчивается.

function endDialog(context: TurnContext, instance: DialogInstance, reason: DialogReason): Promise<void>

Параметры

context

TurnContext

Объект TurnContext для этого поворота.

instance
DialogInstance

Сведения о состоянии, связанные с экземпляром этого компонента Dialog в стеке диалоговых окон родительского элемента.

reason
DialogReason

Причина окончания диалога .

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

Promise<void>

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

Комментарии

При вызове этого метода из контекста родительского диалогового окна диалоговое окно компонента отменяет все диалоговые окна во внутреннем стеке диалогов перед окончанием.

repromptDialog(TurnContext, DialogInstance)

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

function repromptDialog(context: TurnContext, instance: DialogInstance): Promise<void>

Параметры

context

TurnContext

Объект TurnContext для этого поворота.

instance
DialogInstance

Сведения о состоянии этого диалогового окна.

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

Promise<void>

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

resumeDialog(DialogContext, DialogReason, any)

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

function resumeDialog(outerDC: DialogContext, _reason: DialogReason, _result?: any): Promise<DialogTurnResult>

Параметры

outerDC
DialogContext

DialogContext для текущей очереди беседы.

_reason
DialogReason

Причина возобновления диалога.

_result

any

Необязательное значение, возвращаемое из вызываемого диалогового окна. Тип возвращаемого значения зависит от дочернего диалогового окна.

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

Promise<DialogTurnResult>

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

Комментарии

Если задача выполнена успешно, результат указывает, активен ли этот диалог после обработки этого диалогового окна. Как правило, дочерний диалог был запущен с вызовом beginDialog(DialogContext, object) в контексте родительского элемента. Однако если вызывается метод DialogContext.replaceDialog(string, object), логический дочерний диалог может отличаться от исходного. Если этот метод не переопределен, диалоговое окно автоматически вызывает его RepromptDialog(ITurnContext, DialogInstance), когда пользователь отвечает.

Сведения о наследуемом методе

configure(Record<string, unknown>)

Метод Fluent для настройки объекта.

function configure(config: Record<string, unknown>): this

Параметры

config

Record<string, unknown>

Параметры конфигурации для применения.

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

this

Настраиваемое после завершения операции.

Наследуется отConfigurable.configure

findDialog(string)

Находит дочернее диалоговое окно, которое ранее было добавлено в контейнер.

function findDialog(dialogId: string): Dialog | undefined

Параметры

dialogId

string

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

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

Dialog | undefined

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

Наследуется отDialogContainer.findDialog

getConverter(string)

function getConverter(_property: string): Converter | ConverterFactory

Параметры

_property

string

Ключ конфигурации условного селектора.

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

Преобразователь конфигурации селектора.

Наследуется отConfigurable.getConverter

getVersion()

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

function getVersion(): string

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

string

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

Комментарии

По умолчанию возвращается идентификатор диалогов, но его можно переопределить, чтобы обеспечить более точную логику обнаружения изменений. Любое диалоговое окно в стеке с изменением версии приведет к versionChanged возникновению события. Если это событие не обрабатывается ботом, возникает ошибка, в результате чего выполняется логика обработчика ошибок ботов.

Возврат пустой строки отключит отслеживание версий для компонента вместе.

Наследуется отDialog.getVersion

onDialogEvent(DialogContext, DialogEvent)

Вызывается при возникновении события, используя DialogContext.emitEvent()текущее диалоговое окно или диалоговое окно, запущенное текущим диалогом.

function onDialogEvent(dc: DialogContext, e: DialogEvent): Promise<boolean>

Параметры

dc
DialogContext

Контекст диалогового окна для текущей очереди беседы.

e
DialogEvent

Возникает событие.

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

Promise<boolean>

Значение True, если событие обрабатывается текущим диалогом, а пузырьк должен остановиться.

Унаследовано отDialogContainer.onDialogEvent