DialogContext class
与特定 DialogSet相关的当前对话轮次的上下文。
注解
这包括轮次上下文、有关对话集的信息以及对话堆栈的状态。
从集中对话外部的代码,使用 DialogSet.createContext 创建对话上下文。 然后使用对话上下文的方法来管理集中对话的进度。
实现对话时,对话上下文是可用于替代或实现的各种方法的参数。
例如:
const dc = await dialogs.createContext(turnContext);
const result = await dc.continueDialog();
构造函数
Dialog |
创建 DialogContext 类的新实例。 |
Dialog |
创建 DialogContext 类的新实例。 |
属性
active |
|
child | |
context | 获取轮次的上下文对象。 |
dialog |
|
dialogs | 获取可以直接从此上下文调用的对话。 |
parent | 此对话上下文的父对话上下文;如果此上下文没有父上下文,则 |
services | 获取此对话上下文的上下文的服务集合。 |
stack | 获取当前对话框堆栈。 |
state | 获取管理所有内存范围的视图的 DialogStateManager。 |
方法
begin |
启动对话实例并将其推送到对话堆栈。 创建对话的新实例,并将其推送到堆栈上。 |
cancel |
取消对话堆栈上的所有对话,并清除堆栈。 |
continue |
通过将此对话上下文传递给其 Dialog.continueDialog 方法,继续执行活动对话(如果有)。 |
emit |
搜索具有给定 ID 的对话框。 |
end |
结束一个对话框,并将其从堆栈中弹出。 将可选结果返回到对话框的父级。 |
find |
搜索具有给定 ID 的对话框。 |
get |
在 DialogContext 中获取 CultureInfo。 |
prompt(string, string | Partial<Activity> | Prompt |
帮助程序函数,用于简化用于调用提示对话框的选项的格式设置。 |
prompt(string, string | Partial<Activity> | Prompt |
帮助程序函数,用于简化用于调用提示对话框的选项的格式设置。 |
replace |
结束活动对话,并在其位置启动一个新对话。 |
reprompt |
请求活动对话框以重新提示用户输入。 |
构造函数详细信息
DialogContext(DialogSet, DialogContext, DialogState)
创建 DialogContext 类的新实例。
new DialogContext(dialogs: DialogSet, contextOrDC: DialogContext, state: DialogState)
参数
- contextOrDC
- DialogContext
机器人当前轮次的 TurnContext 对象。
- state
- DialogState
用于读取和写入 DialogState 存储的状态对象。
注解
传入 DialogContext 实例将克隆对话上下文。
DialogContext(DialogSet, TurnContext, DialogState)
创建 DialogContext 类的新实例。
new DialogContext(dialogs: DialogSet, contextOrDC: TurnContext, state: DialogState)
参数
- contextOrDC
-
TurnContext
机器人当前轮次的 TurnContext 对象。
- state
- DialogState
用于读取和写入 DialogState 存储的状态对象。
注解
传入 DialogContext 实例将克隆对话上下文。
属性详细信息
activeDialog
DialogInstance | undefined activeDialog
属性值
DialogInstance | undefined
对话堆栈顶部的对话的状态信息,或者当堆栈为空时 undefined
。
child
context
获取轮次的上下文对象。
context: TurnContext
属性值
TurnContext
dialogManager
警告
现已弃用此 API。
This property serves no function.
DialogManager dialogManager
属性值
当前对话管理器实例。 此属性已弃用。
dialogs
parent
此对话上下文的父对话上下文;如果此上下文没有父上下文,则 undefined
。
parent: DialogContext | undefined
属性值
DialogContext | undefined
注解
尝试启动对话时,对话上下文在其 对话框中搜索 Dialog.id。 如果在此对话上下文中找不到要启动的对话,它会在其父对话上下文中搜索,依此类此类地搜索。
services
获取此对话上下文的上下文的服务集合。
services: TurnContextStateCollection
属性值
TurnContextStateCollection
stack
state
方法详细信息
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();