通过


WaterfallDialog class

允许创建基于瀑布的自定义对话。

扩展

构造函数

WaterfallDialog(IDialogWaterfallStep | IDialogWaterfallStep[])

创建新的瀑布对话。

方法

addDialogTrigger(ActionSet, string)

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

begin<T>(Session, T)

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

beginDialogAction(string, string, IBeginDialogActionOptions)

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

cancelAction(string, TextOrMessageType, ICancelActionOptions)

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

clone(ActionSet)

返回现有 ActionSet 的克隆。

createHandler(IDialogWaterfallStep[])

创建可驱动瀑布的函数。 每次调用函数时,都会通过调用瀑布的下一步来推动瀑布向前。 该函数使用 session.dialogData 来保存瀑布当前步骤。 若要推动瀑布向前,传递给处理程序的 args 参数应具有 args.resumed = builder.ResumeReason.completed。 到达瀑布图的末尾后,它将自动调用 session.endDialogWithResult(args) 返回传入的参数。 如果缺少 args 参数,则瀑布将直接开始调用第一步 resumed 字段。

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() 期间调用 堆栈上每个对话的调用,以确定用户话语是否触发了任何对话操作。

onBeforeStep((session: Session, step: number, args: any, next: (step: number, args: any) => void) => void)

注册将在瀑布图的每个步骤之前调用的处理程序。 处理程序 next() 函数将执行链中的下一个处理程序或瀑布步骤本身。 此处理程序允许开发人员跳过步骤并处理传递给下一步的参数。 可以注册多个处理程序,并且将在链中的其他任何处理程序之前执行正在注册的处理程序。

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)

处理从用户收到的消息。 由对话框系统调用。

selectActionRoute(Session, IRouteResult)

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

triggerAction(ITriggerActionOptions)

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

构造函数详细信息

WaterfallDialog(IDialogWaterfallStep | IDialogWaterfallStep[])

创建新的瀑布对话。

new WaterfallDialog(steps: IDialogWaterfallStep | IDialogWaterfallStep[])

参数

steps

IDialogWaterfallStep | IDialogWaterfallStep[]

应按顺序调用的函数序列。

方法详细信息

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

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

返回

createHandler(IDialogWaterfallStep[])

创建可驱动瀑布的函数。 每次调用函数时,都会通过调用瀑布的下一步来推动瀑布向前。 该函数使用 session.dialogData 来保存瀑布当前步骤。 若要推动瀑布向前,传递给处理程序的 args 参数应具有 args.resumed = builder.ResumeReason.completed。 到达瀑布图的末尾后,它将自动调用 session.endDialogWithResult(args) 返回传入的参数。 如果缺少 args 参数,则瀑布将直接开始调用第一步 resumed 字段。

static function createHandler(steps: IDialogWaterfallStep[])

参数

steps

IDialogWaterfallStep[]

要执行的瀑布步骤。

返回

(session: Session, args?: any) => void

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

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

onBeforeStep((session: Session, step: number, args: any, next: (step: number, args: any) => void) => void)

注册将在瀑布图的每个步骤之前调用的处理程序。 处理程序 next() 函数将执行链中的下一个处理程序或瀑布步骤本身。 此处理程序允许开发人员跳过步骤并处理传递给下一步的参数。 可以注册多个处理程序,并且将在链中的其他任何处理程序之前执行正在注册的处理程序。

function onBeforeStep(handler: (session: Session, step: number, args: any, next: (step: number, args: any) => void) => void)

参数

handler

(session: Session, step: number, args: any, next: (step: number, args: any) => void) => 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)

处理从用户收到的消息。 由对话框系统调用。

function replyReceived(session: Session)

参数

session
Session

当前会话的会话对象。

selectActionRoute(Session, IRouteResult)

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

function selectActionRoute(session: Session, route: IRouteResult)

参数

session
Session

当前会话的会话对象。

triggerAction(ITriggerActionOptions)

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

function triggerAction(options: ITriggerActionOptions)

参数

options
ITriggerActionOptions

用于配置操作的选项。

返回