BotBuilder Python - 处理多个对话框和意图。

问题描述 投票:0回答:1

我有以下代码来处理多个意图。

编码

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
        )

问题

  1. 问候意向工作正常
  2. 移动意图正确地进入了配置好的对话框,但在向用户询问了几个输入之后,当用户输入他们的值时,它要么回到问候意图,要么无处可去,因为意图是 None

谁能帮助一下如何用对话框处理多个意图?

如果能得到任何帮助,将不胜感激!我有以下代码来处理多个意图,代码async def on_message_activity(self, turn_context: TurnContext)

python botframework bots luis
1个回答
1
投票

这里是使用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等。

自定义动作--由开发者创建或来自第三方库的动作。

© www.soinside.com 2019 - 2024. All rights reserved.