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)

搜索具有给定 ID 的对话。

endDialog(any)

结束对话框并将其从堆栈中弹出。 将可选结果返回给对话框的父级。

findDialog(string)

搜索具有给定 ID 的对话框。

getLocale()

在 DialogContext 中获取 CultureInfo。

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

要启动的对话框的 ID。

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)

搜索具有给定 ID 的对话。

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)

搜索具有给定 ID 的对话框。

function findDialog(dialogId: string): Dialog | undefined

参数

dialogId

string

要搜索的对话框的 ID。

返回

Dialog | undefined

提供的 ID 的对话框。

注解

如果在与此对话上下文关联的 DialogSet 中找不到要启动的对话,它将尝试在其父对话上下文中查找该对话框。

另请参阅

getLocale()

在 DialogContext 中获取 CultureInfo。

function getLocale(): string

返回

string

区域设置字符串。

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

帮助程序函数,用于简化用于调用提示对话框的选项的格式设置。

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

参数

dialogId

string

要启动的提示对话框的 ID。

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

要启动的提示对话框的 ID。

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

要启动的对话框的 ID。

options

object

可选。 启动时要传递到新对话的参数。

返回

Promise<DialogTurnResult>

解析为对话轮次结果的承诺。

注解

这对于创建循环或重定向到另一个对话特别有用。

返回对象的 状态 描述此方法完成后对话框堆栈的状态。

此方法类似于结束当前对话并立即启动新对话。 但是,父对话既不会恢复,也不会以其他方式通知。

另请参阅

repromptDialog()

请求活动对话框以重新提示用户输入。

function repromptDialog(): Promise<void>

返回

Promise<void>

注解

这会调用活动对话的 repromptDialog 方法。

例如:

await dc.repromptDialog();