【问题标题】:How to jump from one intent to another in LuisActionDialog passing context如何在 LuisActionDialog 传递上下文中从一个意图跳转到另一个意图
【发布时间】:2017-06-02 14:52:06
【问题描述】:

我正在使用 Microsoft Bot Framework、LUIS 和 LUISActionBinding 开发一个机器人。

在我的 LUIS 应用中,我有 3 个主要意图:BuyXFindAFindB。该机器人的主要目标是帮助用户购买 X,但他们可能希望先通过一些过滤器搜索 A 或 B,或者直接去购买 X。

我使用必填和可选字段为每个意图设置了动作,一切正常,我能够接收我的意图处理程序返回的对象。

在 FindA 处理程序中,我帮助用户选择一个 A,在 FindB 处理程序中,我帮助用户选择一个 B。在 BuyX 中,我需要来自 A 和 B 的信息才能继续。但是,如果用户使用 FindA 或 FindB 对话框,我想重用我得到的东西。

我的问题是如何从 Intent FindA 触发 Intent BuyX,以便代码到达我的 BuyXAction 类 根据我从 FindA action+intent 中获取的内容已经分配了一些属性.

这样,用户不必输入任何他想购买 X 的内容,也不必重复他在 FindA 对话框中已经做过/选择的内容。

提前致谢。

【问题讨论】:

    标签: c# botframework azure-language-understanding


    【解决方案1】:

    我相信 SubActions 的概念可能会对您有所帮助。看看这个documentation topic,了解更多关于它的工作原理和一些代码亮点。

    触发没有先前上下文的上下文动作(即从 划痕)

    用户可以提供将触发上下文操作的输入 (没有当前上下文)。该框架通过以下方式支持此场景 提供一种为其实例化上下文链的方法(即 提供的父操作链将提供整个上下文), 最后执行请求。

    【讨论】:

    • 这个概念是我选择使用 ActionBinding 的原因之一。我的想法是为 BuyX 创建子操作,例如 BuyX_ChangeY、BuyX_ChangeZ 等。但那些 Y 和 Z 不一定是我的 A 和 B。你是否建议我应该让 FindA 和 FindB 扩展 BaseLuisContextualAction
    • 是的,我会试试的。
    • 在我的 FindActions 中,我从服务中获取数据并根据用户输入进行过滤,并将对象列表返回给相应的意图处理程序。在那里,我使用列表向用户显示卡片,并提供获取更多信息或选择一个选项的选项。使用这种方法,我必须将 FindA/B 意图处理程序中的所有代码移动到 BuyX 意图处理程序,对吗?
    • 另外,上下文操作返回的对象会发生什么情况?如果它们不是字符串,它们是否会被丢弃?我的代码到达here,但我需要返回一个对象列表。也许我需要在 BuyX 操作中为这些列表创建新属性?
    • 是的,如果上下文操作返回的对象不是字符串,则它们将被丢弃。我相信您应该调整这些子操作的父上下文。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2015-07-11
    • 2019-01-25
    • 1970-01-01
    • 2023-03-22
    • 1970-01-01
    • 1970-01-01
    • 2012-11-21
    相关资源
    最近更新 更多