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'));
Конструкторы
| Component |
Создает новый экземпляр класса Dialog . |
Свойства
| id | Уникальный идентификатор диалогового окна. Задает уникальный идентификатор диалогового окна. |
| telemetry |
Задайте клиент телеметрии, а также примените его ко всем дочерним диалогам. Будущие диалоги, добавленные в компонент, также наследуют этот клиент. Получите текущий клиент телеметрии. |
Унаследованные свойства
| dialogs | Набор диалоговых окон контейнеров. |
| End |
Возвращает результат конца по умолчанию. |
Методы
| add |
Добавляет дочернее диалоговое окно или запрос к компонентам внутреннего набора диалоговых окон. |
| begin |
Вызывается при запуске диалогового окна и отправке в стек диалоговых окон родительского элемента. По умолчанию этот метод вызывает метод Dialog.BeginDialogAsync(DialogContext, object, CancellationToken) начального диалогового окна компонента, как определено InitialDialogId. Переопределите этот метод в производном классе для реализации логики прерываний. |
| continue |
Вызывается при продолжении диалогового окна, где он является активным, а пользователь отвечает с новым действием. Если этот метод не переопределен, диалоговое окно автоматически заканчивается, когда пользователь отвечает. |
| create |
Создает контекст внутреннего диалога |
| end |
Вызывается, когда диалоговое окно заканчивается. |
| reprompt |
Вызывается, когда диалоговое окно должно повторно запрашивать ввод пользователем. |
| resume |
Вызывается, когда дочерний диалог в стеке диалоговых окон родительского элемента завершился этот поворот, возвращая элемент управления этому компоненту диалогового окна. |
Наследуемые методы
| configure(Record<string, unknown>) | Метод Fluent для настройки объекта. |
| find |
Находит дочернее диалоговое окно, которое ранее было добавлено в контейнер. |
| get |
|
| get |
Кодированная строка, используемая для обнаружения изменений бота при повторном развертывании. |
| on |
Вызывается при возникновении события, используя |
Сведения о конструкторе
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>
Параметры
Контекст диалогового окна для текущей очереди беседы.
Возникает событие.
Возвращаемое значение
Promise<boolean>
Значение True, если событие обрабатывается текущим диалогом, а пузырьк должен остановиться.
Унаследовано отDialogContainer.onDialogEvent