通过


Dialog class

所有对话的基类。 对话是 BotBuilder 框架的核心组件。 机器人使用对话来管理与用户任意复杂的对话。

扩展

方法

addDialogTrigger(ActionSet, string)

为库中的每个对话调用一次,使对话有机会将其 triggerAction() 添加到库全局操作集。 这些触发器映射到满足触发器条件时启动对话框的 beginDialogAction()

begin<T>(Session, T)

启动新的对话会话时调用。

beginDialogAction(string, string, IBeginDialogActionOptions)

将操作绑定到将在每次触发对话时启动另一个对话的对话框。 新对话框将推送到堆栈上,因此它不会自动结束当前任务。 新对话框结束后,将继续当前任务。 内置提示会在发生这种情况后自动重新提示用户,但通过在调用内置提示时设置 promptAfterAction 标志来禁用该行为。

cancelAction(string, TextOrMessageType, ICancelActionOptions)

将操作绑定到将在每次触发对话时取消该对话的对话框。 取消后,将恢复对话父级,恢复 代码,指示 已取消

clone(ActionSet)

返回现有 ActionSet 的克隆。

customAction(IDialogActionOptions)

将自定义操作绑定到将在触发时调用传入的 onSelectAction 处理程序的对话框。

dialogInterrupted(Session, string, any)

当根对话被另一个对话中断时调用。 这样,对话框就有机会在从堆栈中删除自定义逻辑之前运行自定义逻辑。 对话本身负责清除对话堆栈并启动新对话。

dialogResumed<T>(Session, IDialogResult<T>)

子对话已结束,当前对话正在恢复。

endConversationAction(string, TextOrMessageType, ICancelActionOptions)

绑定一个操作,该操作将在触发时结束与用户的会话。

findActionRoutes(IRecognizeDialogContext, (err: Error, results: IRouteResult[]) => void)

Library.findRoutes() 期间调用 堆栈上每个对话的调用,以确定用户话语是否触发了任何对话操作。

recognize(IRecognizeDialogContext, (err: Error, result: IRecognizeResult) => void)

分析用户话语,并分配 0.0 - 1.0 的分数,指示对话理解用户话语的自信程度。 始终为堆栈上的活动对话框调用此方法。 分数为 1.0 表示完美匹配并终止任何进一步识别。 当评分小于 1.0 时,堆栈上的每个对话都将调用其 recognizeAction() 方法,以查看是否有任何已命名操作绑定到对话,以便更好地匹配用户话语。 还将评估在机器人级别注册的全局操作。 如果对话框的分数更高,则任何绑定操作都会调用 dialogs replyReceived() 方法,并将使用从 recognize() 调用返回的结果对象调用。 这样,对话框就可以将识别阶段收集的其他数据传递给 replyReceived() 方法进行处理。

如果某个操作的分数较高,则会调用该操作的对话框,而不是 dialogs replyReceived() 方法。 对话将保留在堆栈上,如果操作调用新对话,可能会在某些时候恢复,因此对话应为 dialogResumed()的意外调用做好准备。

reloadAction(string, TextOrMessageType, IBeginDialogActionOptions)

将操作绑定到对话,该操作将导致对话在触发时重新加载。 这可用于实现处理用户话语(如“开始”)的逻辑。

replyReceived(Session, IRecognizeResult)

从用户收到新的回复消息时调用。 派生类应实现此操作来处理从用户接收的消息。

selectActionRoute(Session, IRouteResult)

为话语选择具有最高置信度分数的路由。

triggerAction(ITriggerActionOptions)

将操作绑定到对话,该对话将在每次触发时将其设置为活动对话。 默认行为是通过清除堆栈并在堆栈根处启动对话来插插任何现有对话。 中断的对话可以通过将自定义 onInterrupted 处理程序添加到其触发器操作选项来截获此中断。 此外,还可以通过向触发器操作选项提供自定义 onSelectAction 处理程序来自定义触发对话框的启动方式。

方法详细信息

addDialogTrigger(ActionSet, string)

为库中的每个对话调用一次,使对话有机会将其 triggerAction() 添加到库全局操作集。 这些触发器映射到满足触发器条件时启动对话框的 beginDialogAction()

function addDialogTrigger(actions: ActionSet, dialogId: string)

参数

actions
ActionSet

库全局操作集。

dialogId

string

要触发的对话框的完全限定 ID。

begin<T>(Session, T)

启动新的对话会话时调用。

function begin<T>(session: Session, args?: T)

参数

session
Session

当前会话的会话对象。

args

T

(可选)由其父级传递给对话框的参数。

beginDialogAction(string, string, IBeginDialogActionOptions)

将操作绑定到将在每次触发对话时启动另一个对话的对话框。 新对话框将推送到堆栈上,因此它不会自动结束当前任务。 新对话框结束后,将继续当前任务。 内置提示会在发生这种情况后自动重新提示用户,但通过在调用内置提示时设置 promptAfterAction 标志来禁用该行为。

function beginDialogAction(name: string, id: string, options?: IBeginDialogActionOptions)

参数

name

string

用于分配操作的唯一名称。

id

string

要启动的对话框的 ID。

options
IBeginDialogActionOptions

(可选)用于配置操作的选项。 如果指定 匹配,操作将侦听用户说出触发操作的单词或短语,否则需要使用 CardAction.dialogAction() 绑定到按钮以触发该操作。 还可以使用 dialogArgs 将其他参数传递给正在启动的对话。

返回

cancelAction(string, TextOrMessageType, ICancelActionOptions)

将操作绑定到将在每次触发对话时取消该对话的对话框。 取消后,将恢复对话父级,恢复 代码,指示 已取消

function cancelAction(name: string, msg?: TextOrMessageType, options?: ICancelActionOptions)

参数

name

string

用于分配操作的唯一名称。

msg
TextOrMessageType

(可选)在取消对话框之前发送用户的消息。

options
ICancelActionOptions

(可选)用于配置操作的选项。 如果指定 匹配,操作将侦听用户说出触发操作的单词或短语,否则需要使用 CardAction.dialogAction() 绑定到按钮以触发该操作。

返回

clone(ActionSet)

返回现有 ActionSet 的克隆。

function clone(copyTo?: ActionSet)

参数

copyTo
ActionSet

(可选)要将当前对象复制到的实例。 如果缺少新实例,则会创建。

返回

customAction(IDialogActionOptions)

将自定义操作绑定到将在触发时调用传入的 onSelectAction 处理程序的对话框。

function customAction(options: IDialogActionOptions)

参数

options
IDialogActionOptions

用于配置操作的选项。 如果指定 匹配,该操作将侦听用户说出触发操作的单词或短语。 可以使用 onFindAction提供自定义匹配逻辑。

返回

dialogInterrupted(Session, string, any)

当根对话被另一个对话中断时调用。 这样,对话框就有机会在从堆栈中删除自定义逻辑之前运行自定义逻辑。 对话本身负责清除对话堆栈并启动新对话。

function dialogInterrupted(session: Session, dialogId: string, dialogArgs: any)

参数

session
Session

当前会话的会话对象。

dialogId

string

应启动的对话框的 ID。

dialogArgs

any

应传递给新对话框的参数。

dialogResumed<T>(Session, IDialogResult<T>)

子对话已结束,当前对话正在恢复。

function dialogResumed<T>(session: Session, result: IDialogResult<T>)

参数

session
Session

当前会话的会话对象。

result

IDialogResult<T>

子对话返回的结果。

endConversationAction(string, TextOrMessageType, ICancelActionOptions)

绑定一个操作,该操作将在触发时结束与用户的会话。

function endConversationAction(name: string, msg?: TextOrMessageType, options?: ICancelActionOptions)

参数

name

string

用于分配操作的唯一名称。

msg
TextOrMessageType

(可选)消息,用于在结束对话之前发送用户。

options
ICancelActionOptions

(可选)用于配置操作的选项。 如果指定 匹配,操作将侦听用户说出触发操作的单词或短语,否则需要使用 CardAction.dialogAction() 绑定到按钮以触发该操作。

返回

findActionRoutes(IRecognizeDialogContext, (err: Error, results: IRouteResult[]) => void)

Library.findRoutes() 期间调用 堆栈上每个对话的调用,以确定用户话语是否触发了任何对话操作。

function findActionRoutes(context: IRecognizeDialogContext, callback: (err: Error, results: IRouteResult[]) => void)

参数

context
IRecognizeDialogContext

传入消息的上下文以及评估的对话的 dialogData

callback

(err: Error, results: IRouteResult[]) => void

用于使用最候选路由调用的函数。。

recognize(IRecognizeDialogContext, (err: Error, result: IRecognizeResult) => void)

分析用户话语,并分配 0.0 - 1.0 的分数,指示对话理解用户话语的自信程度。 始终为堆栈上的活动对话框调用此方法。 分数为 1.0 表示完美匹配并终止任何进一步识别。 当评分小于 1.0 时,堆栈上的每个对话都将调用其 recognizeAction() 方法,以查看是否有任何已命名操作绑定到对话,以便更好地匹配用户话语。 还将评估在机器人级别注册的全局操作。 如果对话框的分数更高,则任何绑定操作都会调用 dialogs replyReceived() 方法,并将使用从 recognize() 调用返回的结果对象调用。 这样,对话框就可以将识别阶段收集的其他数据传递给 replyReceived() 方法进行处理。

如果某个操作的分数较高,则会调用该操作的对话框,而不是 dialogs replyReceived() 方法。 对话将保留在堆栈上,如果操作调用新对话,可能会在某些时候恢复,因此对话应为 dialogResumed()的意外调用做好准备。

function recognize(context: IRecognizeDialogContext, callback: (err: Error, result: IRecognizeResult) => void)

参数

context
IRecognizeDialogContext

请求的上下文。

callback

(err: Error, result: IRecognizeResult) => void

使用识别结果调用的函数。

reloadAction(string, TextOrMessageType, IBeginDialogActionOptions)

将操作绑定到对话,该操作将导致对话在触发时重新加载。 这可用于实现处理用户话语(如“开始”)的逻辑。

function reloadAction(name: string, msg?: TextOrMessageType, options?: IBeginDialogActionOptions)

参数

name

string

用于分配操作的唯一名称。

msg
TextOrMessageType

(可选)消息,用于在重新加载对话框之前发送用户。

options
IBeginDialogActionOptions

(可选)用于配置操作的选项。 如果指定 匹配,操作将侦听用户说出触发操作的单词或短语,否则需要使用 CardAction.dialogAction() 绑定到按钮以触发该操作。 还可以使用 dialogArgs 在重新加载时将其他参数传递给对话。

返回

replyReceived(Session, IRecognizeResult)

从用户收到新的回复消息时调用。 派生类应实现此操作来处理从用户接收的消息。

function replyReceived(session: Session, recognizeResult: IRecognizeResult)

参数

session
Session

当前会话的会话对象。

recognizeResult
IRecognizeResult

从之前调用对话返回的结果 recognize() 方法。

selectActionRoute(Session, IRouteResult)

为话语选择具有最高置信度分数的路由。

function selectActionRoute(session: Session, route: IRouteResult)

参数

session
Session

当前会话的会话对象。

triggerAction(ITriggerActionOptions)

将操作绑定到对话,该对话将在每次触发时将其设置为活动对话。 默认行为是通过清除堆栈并在堆栈根处启动对话来插插任何现有对话。 中断的对话可以通过将自定义 onInterrupted 处理程序添加到其触发器操作选项来截获此中断。 此外,还可以通过向触发器操作选项提供自定义 onSelectAction 处理程序来自定义触发对话框的启动方式。

function triggerAction(options: ITriggerActionOptions)

参数

options
ITriggerActionOptions

用于配置操作的选项。

返回