我有以下代码来处理多个意图。
编码
async def on_message_activity(self, turn_context: TurnContext):
recognizer_result = await self.luis.recognize(self.recognizer, turn_context)
intent = self.luis.get_top_intent(recognizer_result)
await self.process_intent(turn_context, recognizer_result, intent)
async def process_intent(self, turn_context: TurnContext, recognizer_result, intent):
if intent == 'Greeting_Wishes':
await greeting_wishes(turn_context, user_info)
elif intent == 'Greeting_Question':
await greeting_question(turn_context)
elif intent == 'Movement':
dialog = Movement(recognizer_result)
await DialogHelper.run_dialog(
dialog,
turn_context,
self.dialog_state
)
问题
None
谁能帮助一下如何用对话框处理多个意图?
如果能得到任何帮助,将不胜感激!我有以下代码来处理多个意图,代码async def on_message_activity(self, turn_context: TurnContext)
这里是使用python的代码示例。https:/github.commicrosoftBotBuilder-Samplestreemastersamplespython。SDK提供了标准的对话框实现,开发者可以将其作为构建模块来帮助创建自己的对话框。
输入对话框--用于询问简单值类型的对话框,如数字、日期、确认、选择等。
QnAMakerDialog--使用QnA Maker知识库来回答常见问题的对话框。
WaterfallDialog - 简单的对话框模型,用于询问一系列的问题。
AdaptiveDogial - 丰富的事件、流程、槽位填充和歧义解决的组成式对话框。
SkillDialog--技能对话框为机器人提供了调用远程机器人作为技能的能力。
AdaptiveDialog。AdaptiveDialog是我们创建的一种新的对话框类型,它封装了以可组合、可扩展和事件驱动的方式构建对话框的最佳实践,从而从根本上提高了自定义对话框的表达能力和编写效率。自适应对话是
基于对话应用模型--围绕对话应用模型构建,并为识别器和生成器提供标准插件,允许每个对话框定义这些资产。AdaptiveDialog使用这些来实现一个标准的执行流程,从识别器=>;触发器评估=>;响应生成。
100%声明式--通过代码或.dialog json文件。
基于事件--自适应对话将对话建模为事件。这使得对任何事件的反应建模变得更加容易,这在静态流程中是很难做到的。
触发器--自适应对话框有称为触发器的规则,它定义了对系统中任何条件事件的响应行动。这允许对所需的行为进行更多的动态描述,并让你 "脱离 "静态流风格对话框的轨道。
槽位填充--自适应对话框自动具有内置的复杂的实体到属性的映射。它发射事件,然后让开发人员控制映射的分辨率。
计划--自适应对话框保持着一个行动计划,它可以被检查和修改,让你更容易地模拟未来需要做的事情。例如,把一句 "订一张去罗马的机票,哦,我需要一家酒店 "变成计划 "BookAFlight",...,"BookAHotel"。当你到了预订酒店的时候,可以通过你所拥有的细节来驱动计划的执行结果来解决这个问题。
SDK包含了丰富的Trigger定义,让开发者有能力对事件做出动态反应。
对话框事件--对对话事件做出反应
OnBeginDialog,OnEndOfConversation,OnEvent,OnError等。
识别事件--由配置的识别器产生的事件。
OnIntent--定义了当识别到意图实体时要采取的动作。
活动事件--对外部活动作出反应
OnConversationUpdateActivity, OnTypingActivity, OnMessageActivity, OnEventActivity等。
槽位填充事件--自适应对话框会触发事件来解决映射实体到槽位的问题,开发者有触发器来对它们做出反应。
OnAssignEntity - AdaptiveDialog已经决定将实体=> slot映射,开发者可以在分配时处理实体。
OnChooseIntent - 化解多重意图的模糊性
OnChooseEntity--解决多个实体的模糊性问题=> 1个槽位。
OnChooseProperty - 解决1个实体=>多个槽的模糊性问题。
当触发器触发时,开发人员将对执行计划的修改定义为一系列要执行的对话框。SDK包含了一组丰富的原始对话框(称为Actions),这些对话框对于构建执行计划非常有用。
内存动作--操作内存SetProperty、DeleteProperty、EditArray等。
对话框动作--能够控制对话框,BeginDialog、RepeatDialog、GotoDialog、EndDialog等。
活动动作--能够与用户进行通信发送活动、更新活动、删除活动等。
流程动作--能够有条件地改变执行、IfCondition、SwitchCondition等。
自定义动作--由开发者创建或来自第三方库的动作。