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


DialogContext class

Контекст для текущего поворота диалогового окна относительно определенного DialogSet.

Комментарии

Сюда входит контекст шага, сведения о наборе диалогов и состояние стека диалогов.

В коде за пределами диалогового окна в наборе используйте DialogSet.createContext для создания контекста диалога. Затем используйте методы контекста диалога для управления развитием диалогов в наборе.

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

Например:

const dc = await dialogs.createContext(turnContext);
const result = await dc.continueDialog();

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

DialogContext(DialogSet, DialogContext, DialogState)

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

DialogContext(DialogSet, TurnContext, DialogState)

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

Свойства

activeDialog
child
context

Возвращает объект контекста для шага.

dialogManager
dialogs

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

parent

Родительский контекст диалога для этого контекста диалога или undefined значение , если у этого контекста нет родительского контекста.

services

Возвращает коллекцию служб, которая является контекстной для данного контекста диалога.

stack

Возвращает текущий стек диалогов.

state

Возвращает DialogStateManager, который управляет представлением всех областей памяти.

Методы

beginDialog(string, object)

Запускает экземпляр диалога и помещает его в стек диалогов. Создает новый экземпляр диалогового окна и помещает его в стек.

cancelAllDialogs(boolean, string, any)

Отменяет все диалоги в стеке диалогов и очищает стек.

continueDialog()

Продолжает выполнение активного диалога, если таковой имеется, передав этот контекст диалога в метод Dialog.continueDialog .

emitEvent(string, any, boolean, boolean)

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

endDialog(any)

Завершает диалоговое окно и выводит его из стека. Возвращает необязательный результат родительскому диалогу.

findDialog(string)

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

getLocale()

Получите CultureInfo в DialogContext.

prompt(string, string | Partial<Activity> | PromptOptions)

Вспомогательная функция для упрощения форматирования параметров вызова диалогового окна запроса.

prompt(string, string | Partial<Activity> | PromptOptions, string | Choice[])

Вспомогательная функция для упрощения форматирования параметров вызова диалогового окна запроса.

replaceDialog(string, object)

Завершает активный диалог и начинает новый диалог на его месте.

repromptDialog()

Запрашивает активное диалоговое окно для повторного запроса ввода данных у пользователя.

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

DialogContext(DialogSet, DialogContext, DialogState)

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

new DialogContext(dialogs: DialogSet, contextOrDC: DialogContext, state: DialogState)

Параметры

dialogs
DialogSet

Объект DialogSet, для которого создается контекст диалога.

contextOrDC
DialogContext

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

state
DialogState

Объект состояния, используемый для чтения и записи DialogState в хранилище.

Комментарии

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

DialogContext(DialogSet, TurnContext, DialogState)

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

new DialogContext(dialogs: DialogSet, contextOrDC: TurnContext, state: DialogState)

Параметры

dialogs
DialogSet

Объект DialogSet, для которого создается контекст диалога.

contextOrDC

TurnContext

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

state
DialogState

Объект состояния, используемый для чтения и записи DialogState в хранилище.

Комментарии

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

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

activeDialog

DialogInstance | undefined activeDialog

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

DialogInstance | undefined

Сведения о состоянии диалога в верхней части стека диалогов или undefined значение , если стек пуст.

child

DialogContext | undefined child

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

DialogContext | undefined

Контекст диалога для дочернего элемента, если активный диалог является контейнером.

context

Возвращает объект контекста для шага.

context: TurnContext

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

TurnContext

dialogManager

Предупреждение

Теперь этот API является нерекомендуемым.

This property serves no function.

DialogManager dialogManager

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

Текущий экземпляр диспетчера диалогов. Это свойство использовать не рекомендуется.

dialogs

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

dialogs: DialogSet

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

parent

Родительский контекст диалога для этого контекста диалога или undefined значение , если у этого контекста нет родительского контекста.

parent: DialogContext | undefined

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

DialogContext | undefined

Комментарии

При попытке запустить диалог контекст диалога ищет Dialog.id в его диалоговых окнах. Если открываемая диалоговое окно не найдена в этом контексте диалога, выполняется поиск в родительском контексте диалога и т. д.

services

Возвращает коллекцию служб, которая является контекстной для данного контекста диалога.

services: TurnContextStateCollection

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

TurnContextStateCollection

stack

Возвращает текущий стек диалогов.

stack: DialogInstance[]

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

state

Возвращает DialogStateManager, который управляет представлением всех областей памяти.

state: DialogStateManager

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

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

beginDialog(string, object)

Запускает экземпляр диалога и помещает его в стек диалогов. Создает новый экземпляр диалогового окна и помещает его в стек.

function beginDialog(dialogId: string, options?: object): Promise<DialogTurnResult>

Параметры

dialogId

string

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

options

object

Необязательный элемент. Аргументы, которые передаются в диалоговое окно при его запуске.

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

Promise<DialogTurnResult>

обещание, разрешающееся в результате поворота диалога.

Комментарии

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

Состояние возвращаемого объекта описывает состояние стека диалогов после завершения этого метода.

Этот метод создает исключение, если запрошенный диалог не найден в этом контексте диалога или его предках.

Например:

const result = await dc.beginDialog('greeting', { name: user.name });

См. также:

cancelAllDialogs(boolean, string, any)

Отменяет все диалоги в стеке диалогов и очищает стек.

function cancelAllDialogs(cancelParents?: boolean, eventName?: string, eventValue?: any): Promise<DialogTurnResult>

Параметры

cancelParents

boolean

Необязательный элемент. Если true все родительские диалоги также будут отменены.

eventName

string

Необязательный элемент. Имя настраиваемого события, которое будет вызываться при отмене диалоговых окон. По умолчанию используется значение cancelDialog.

eventValue

any

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

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

Promise<DialogTurnResult>

обещание, разрешающееся в результате поворота диалога.

Комментарии

Это вызывает метод Dialog.endDialog каждого диалога перед удалением диалога из стека.

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

В этом примере перед запуском диалогового окна bookFlight очищается стек dcдиалогов.

await dc.cancelAllDialogs();
return await dc.beginDialog('bookFlight');

См. также:

continueDialog()

Продолжает выполнение активного диалога, если таковой имеется, передав этот контекст диалога в метод Dialog.continueDialog .

function continueDialog(): Promise<DialogTurnResult>

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

Promise<DialogTurnResult>

обещание, разрешающееся в результате поворота диалога.

Комментарии

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

Состояние возвращаемого объекта описывает состояние стека диалогов после завершения этого метода.

Как правило, вы вызываете его из обработчика шагов бота.

Например:

const result = await dc.continueDialog();
if (result.status == DialogTurnStatus.empty && dc.context.activity.type == ActivityTypes.message) {
    // Send fallback message
    await dc.context.sendActivity(`I'm sorry. I didn't understand.`);
}

emitEvent(string, any, boolean, boolean)

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

function emitEvent(name: string, value?: any, bubble?: boolean, fromLeaf?: boolean): Promise<boolean>

Параметры

name

string

Имя порождаемого события.

value

any

Необязательный элемент. Значение, отправляемое вместе с событием.

bubble

boolean

Необязательный элемент. Флаг, определяющий, следует ли передать событие в родительский объект, если оно не обрабатывается локально. По умолчанию имеет значение true.

fromLeaf

boolean

Необязательный элемент. Указывает, создается ли событие из конечного узла.

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

Promise<boolean>

true Значение , если событие было обработано.

Комментарии

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

endDialog(any)

Завершает диалоговое окно и выводит его из стека. Возвращает необязательный результат родительскому диалогу.

function endDialog(result?: any): Promise<DialogTurnResult>

Параметры

result

any

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

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

Promise<DialogTurnResult>

обещание, разрешающееся в результате поворота диалога.

Комментарии

Родительский диалог — это следующий диалог в стеке диалогов, если он есть. Этот метод вызывает родительский метод Dialog.resumeDialog , передав результат, возвращаемый конечным диалогом. Если родительского диалогового окна нет, то очередь заканчивается, и результат будет доступен боту через свойство result возвращаемого объекта.

Состояние возвращаемого объекта описывает состояние стека диалогов после завершения этого метода.

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

Например:

return await dc.endDialog(returnValue);

См. также:

findDialog(string)

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

function findDialog(dialogId: string): Dialog | undefined

Параметры

dialogId

string

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

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

Dialog | undefined

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

Комментарии

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

См. также:

getLocale()

Получите CultureInfo в DialogContext.

function getLocale(): string

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

string

строка языкового стандарта.

prompt(string, string | Partial<Activity> | PromptOptions)

Вспомогательная функция для упрощения форматирования параметров вызова диалогового окна запроса.

function prompt(dialogId: string, promptOrOptions: string | Partial<Activity> | PromptOptions): Promise<DialogTurnResult>

Параметры

dialogId

string

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

promptOrOptions

string | Partial<Activity> | PromptOptions

Текст начального запроса для отправки пользователю, действие, отправляемое в качестве начального запроса, или объект, с помощью которого нужно отформатировать диалоговое окно запроса.

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

Promise<DialogTurnResult>

Комментарии

Этот вспомогательный метод форматирует объект для использования в options качестве параметра, а затем вызывает beginDialog для запуска указанного диалогового окна запроса.

return await dc.prompt('confirmPrompt', `Are you sure you'd like to quit?`);

prompt(string, string | Partial<Activity> | PromptOptions, string | Choice[])

Вспомогательная функция для упрощения форматирования параметров вызова диалогового окна запроса.

function prompt(dialogId: string, promptOrOptions: string | Partial<Activity> | PromptOptions, choices: string | Choice[]): Promise<DialogTurnResult>

Параметры

dialogId

string

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

promptOrOptions

string | Partial<Activity> | PromptOptions

Текст начального запроса для отправки пользователю, действие , отправляемое в качестве начального запроса, или объект, с помощью которого нужно отформатировать диалоговое окно запроса.

choices

string | Choice[]

Необязательный элемент. Массив вариантов выбора для пользователя для использования с ChoicePrompt.

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

Promise<DialogTurnResult>

Комментарии

Этот вспомогательный метод форматирует объект для использования в options качестве параметра, а затем вызывает beginDialog для запуска указанного диалогового окна запроса.

return await dc.prompt('confirmPrompt', `Are you sure you'd like to quit?`);

replaceDialog(string, object)

Завершает активный диалог и начинает новый диалог на его месте.

function replaceDialog(dialogId: string, options?: object): Promise<DialogTurnResult>

Параметры

dialogId

string

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

options

object

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

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

Promise<DialogTurnResult>

обещание, разрешающееся в результате поворота диалога.

Комментарии

Это особенно полезно для создания цикла или перенаправления в другой диалог.

Состояние возвращаемого объекта описывает состояние стека диалогов после завершения этого метода.

Этот метод аналогичен завершению текущего диалога и немедленному началу нового. Однако родительский диалог не возобновляется и не уведомляется иным образом.

См. также:

repromptDialog()

Запрашивает активное диалоговое окно для повторного запроса ввода данных у пользователя.

function repromptDialog(): Promise<void>

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

Promise<void>

Комментарии

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

Например:

await dc.repromptDialog();