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 方法,传递结束对话返回的结果。 如果没有父对话,轮次结束,结果通过返回对象的 结果 属性提供给机器人。

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

通常,你将从特定对话的逻辑中调用它,以向对话上下文发出信号,该对话已完成,对话应从堆栈中删除,父对话应恢复。

例如:

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();