你当前正在访问 Microsoft Azure Global Edition 技术文档网站。 如果需要访问由世纪互联运营的 Microsoft Azure 中国技术文档网站,请访问 https://docs.azure.cn。
自适应对话中的事件和触发器
适用于: SDK v4
有关本主题的简介,请参阅 Composer 文档中的触发器概念文章。
识别器事件触发器
注意
Azure AI QnA Maker 将于2025年3月31日停用。 从 2022 年 10 月 1 日开始,您将无法创建新的 QnA Maker 资源或知识库。 问答功能的较新版本现已作为 Azure AI 语言的一部分提供。
自定义问答是 Azure AI 语言服务的一项功能,是 QnA Maker 服务的更新版本。 有关 Bot Framework SDK 中的问答支持的详细信息,请参阅 自然语言理解。
事件原因 | 触发器名称 | 基本事件 | 说明 |
---|---|---|---|
选择意向 | OnChooseIntent |
ChooseIntent |
当在 CrossTrainedRecognizerSet 的多个识别器中的意向之间检测到歧义时,将运行此触发器。 |
已识别意向 | OnIntent |
RecognizedIntent |
已识别指定的意向时要执行的操作。 |
QnAMatch 意向 | OnQnAMatch |
RecognizedIntent |
当 QnAMakerRecognizer 返回了 QnAMatch 意向时,将运行此触发器。 实体 @answer 将具有 QnAMaker 答案。 |
已识别未知意向 | OnUnknownIntent |
UnknownIntent |
无法识别用户输入或在任何 OnIntent 触发器中找不到匹配项时要执行的操作。 还可以将此用作根对话中的第一个触发器来代替 OnBeginDialog ,在对话首次启动时执行任何所需的任务。 |
OnIntent
触发器允许处理 recognizedIntent
事件。 recognizedIntent
事件由识别器引发。 除了QnA Maker 识别器之外,所有 Bot Framework SDK 内置识别器会在成功标识用户输入时发出此事件,以便机器人可以做出相应响应。
recognizedIntent
事件未由任何其他触发器捕获和处理时,请使用 OnUnknownIntent
触发器来捕获和响应。 这意味着,任何未经处理的意向(包括“none”)都可能导致它触发,但前提是当前没有针对对话框执行任何操作。 使用 OnUnknownIntent
触发器在发生“none”意向时捕获和响应。 OnIntent
使用触发器处理“none”意向可能会产生意外的结果。
对话事件触发器
对话触发器处理与对话的生命周期相关的对话特定事件。 Bot Framework SDK 中目前有 6 个对话触发器,它们都派生自 OnDialogEvent
类。
提示
这些触发器并不像普通中断事件处理程序(子操作将在处理程序操作完成后继续运行)。 对于下面的所有事件,机器人将运行一组新操作,一旦完成这些操作,就会结束轮次。
触发器名称 | 基本事件 | 说明 |
---|---|---|
OnBeginDialog |
BeginDialog |
此对话开始时要执行的操作。 若要仅与子对话一起使用,而不是在根对话中使用,请使用 OnUnknownIntent 执行对话初始化活动。 |
OnCancelDialog |
CancelDialog |
使用此事件可以防止由于执行 CancelAllDialogs 操作的子对话而取消当前对话。 |
OnEndOfActions |
EndOfActions |
处理完所有操作和歧义事件后发生此事件。 |
OnError |
Error |
发生 Error 对话事件时要执行的操作。 此事件与 OnCancelDialog 类似,因为在这种情况下,由于子对话中的错误,将阻止当前对话结束。 |
OnRepromptDialog |
RepromptDialog |
发生 RepromptDialog 事件时要执行的操作。 |
OnDialog |
DialogEvents.VersionChanged |
活动事件触发器
通过活动触发器可以将操作与来自客户端的任何传入活动关联,例如,当新用户加入,并且机器人开始新对话时。 有关活动的其他信息,请参阅 Bot Framework Activity 架构。
所有活动事件都具有 ActivityReceived
的基本事件,并通过其活动类型进行进一步优化。 所有活动触发器派生自的基类是 OnActivity
。
事件原因 | ActivityType | 触发器名称 | 说明 |
---|---|---|---|
Greeting | ConversationUpdate |
OnConversationUpdateActivity |
当机器人或用户加入或离开对话时,接收活动时 conversationUpdate 要执行的操作。 |
已结束对话 | EndOfConversation |
OnEndOfConversationActivity |
收到 endOfConversation 的活动时要执行的操作。 |
已接收事件 | Event |
OnEventActivity |
收到 event 的活动时要执行的操作。 |
提交给人 | Handoff |
OnHandoffActivity |
收到为 handOff 的活动时要执行的操作。 |
已调用对话 | Invoke |
OnInvokeActivity |
收到为 invoke 的活动时要执行的操作。 |
用户正在键入 | Typing |
OnTypingActivity |
收到为 typing 的活动时要执行的操作。 |
消息事件触发器
通过消息事件触发器可以对任何消息事件做出响应,例如,当消息被更新 (MessageUpdate
) 或被删除 (MessageDeletion
) 或有人对消息做出响应 (MessageReaction
) 时(例如,某些常见消息反应包括赞、爱心、大笑、吃惊、悲伤和生气)。
消息事件是一种活动事件,因此,所有消息事件都具有 ActivityReceived
的基本事件,并通过活动类型进行进一步优化。 所有消息触发器派生自的基类是 OnActivity
。
事件原因 | ActivityType | 触发器名称 | 说明 |
---|---|---|---|
收到的消息 | Message |
OnMessageActivity |
收到类型为 MessageReceived 的活动时要执行的操作。 |
已删除消息 | MessageDeletion |
OnMessageDeleteActivity |
收到类型为 MessageDelete 的活动时要执行的操作。 |
消息回应 | MessageReaction |
OnMessageReactionActivity |
收到类型为 MessageReaction 的活动时要执行的操作。 |
已更新消息 | MessageUpdate |
OnMessageUpdateActivity |
收到类型为 MessageUpdate 的活动时要执行的操作。 |
自定义事件触发器
可以通过将 EmitEvent 操作添加到任何触发器来发出自己的事件,然后可以通过定义自定义事件触发器,在机器人的任何对话中的任何触发器中处理该自定义事件。 自定义事件触发器是在将 Event
属性设置为与 EmitEvent 的 EventName
属性相同的值时,实际上会成为自定义触发器的 OnDialogEvent
触发器。
提示
可以通过将 EmitEvent 的 BubbleEvent
属性设置为 true,允许机器人中的其他对话处理自定义事件。
事件原因 | 触发器名称 | 基类 | 说明 |
---|---|---|---|
自定义事件 | OnDialogEvent |
OnCondition |
检测到自定义事件时要执行的操作。 使用发出自定义事件操作引发自定义事件。 |