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


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)

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

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

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

Комментарии

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

унаследован от диалогового окна.EndOfTurn

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

addDialog(Dialog)

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

function addDialog(dialog: Dialog): this

Параметры

dialog
Dialog

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

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

this

ComponentDialog после завершения операции.

Комментарии

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

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

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