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 |
Добавляет дочерний диалоговое окно или запрос к компонентам внутренних DialogSet. |
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
Значение свойства
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>
Параметры
Контекст диалогового окна для текущей очереди беседы.
Возникает событие.
Возвращаемое значение
Promise<boolean>
Значение True, если событие обрабатывается текущим диалогом, а пузырьк должен остановиться.
унаследованоот диалогового окна DialogContainer.onDialogEvent