对话流(API.ai)中的数据上下文在哪里

2024-01-06

我一直在阅读有关对话流的内容,但有一件事我仍然不清楚。我将尝试举一个例子。

我想实现如下转换:

User: Hello Google, what are some interesting cities?
Bot:  Hello there! Sydney, New York and Berlin are nice.
User: Could you tell more about the second city?
Bot:  Sure. New York is amazing. In New York, you can ...

如您所见,我正在构建一个数据上下文。在第一个问题之后,我们应该记住我们回答了Sydney, New York and Berlin,所以我们明白了什么the second city实际上就是第二个问题中的意思。

我们应该将此数据存储在 webhook 服务中还是存储在对话流的上下文中?如果我们必须将这些数据存储在 webhook 服务中,我们如何区分不同的正在进行的对话?


将其存储在 Dialogflow 上下文中是一个理想的解决方案 - 这正是上下文的用途!您使用相同的术语来表达您的问题,这并非巧合。

从概念上讲,您可以通过如下设置来执行此操作:

User: What are some interesting cities?

Dialogflow sees no contexts and matches an Intent asking for cities.

Agent replies: Sydney, New York, and Berlin are nice.
Agent sets context "cities" with parameter "cities" -> "Sydney, New York, Berlin"

User: Tell me more about the second one?

Dialogflow has an Intent that expects an incoming context of "cities" with a text pattern like "Tell me more about the (number index) one?" It sends the request to that Intent along with the currently active contexts.

Agent get a parameter with the index and the context "cities". It looks up the parameter for it, turns the string into an array, and gets the city based on the index. 
Agent replies: New York is a fun place to visit!
Agent sets context "city" with parameter "current" -> "New York"

User: Tell me more!

Dialogflow matches this phrase and that the "city" context is still active and sends it to an event that reports more.

Agent says: More awesome stuff about New York.

User: Tell me about that first city instead.

Dialogflow matches it against the same intent as before.

Agent says: Sydney is pretty cool.
Agent changes the "city" context so the parameter "current" -> "Sydney" and "previous" -> "New York".

您现在可以创建其他意图来处理“比较这两个”或“告诉我有关另一个的更多信息”等短语。

Update

此设置在 Dialogflow 的优势(解析消息并确定对话的当前状态)和 Webhook 的优势(确定这些问题的最佳答案)之间取得了良好的平衡。

You could可能在 Dialogflow 中完成大部分工作,但它很快就会开始变得非常非常混乱。您需要创建多个 Intent 来单独处理每个值的结果,这无法扩展。您还需要为每个城市创建一个上下文(因此您将有一个“city_ny”和“city_sydney”上下文),因为您只能匹配上下文的存在,而不是它可能具有的参数。

使用 webhook(甚至是我们现在拥有的内置履行系统)可能会效果更好。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

对话流(API.ai)中的数据上下文在哪里 的相关文章

随机推荐

  • 如果我在 Android 应用程序中包含 Java 8,这会影响它在哪些设备上运行吗?

    我刚刚开始尝试使用新的 Java Date Time API 但是当我导入如下所示的类时 我得到了无法解析符号 import java time LocalDate 经过一番检查后 我发现我需要启用 java 8 请参阅下面的链接 http
  • PublishSubject 和 TestScheduler 出现问题,未发出项目

    我一直面临主题和测试调度程序的问题 如果我使用 Trampoline 调度程序 我的测试会通过 但由于某种原因 如果我使用 TestScheduler 测试会失败 这是我的示例测试和相关课程 RunWith MockitoJUnitRunn
  • 如何使用 LINQ 选择最新且不同的记录?

    我正在尝试使用 LINQ 从状态历史记录中获取记录的最新状态 我的订单出现问题 或者可能我完全偏离了目标 My Code Dim LatestStatusTable From RecordHistoryTable In db RecordH
  • 从字符串中删除重复项

    我正在尝试从 Java 中的字符串中删除重复项 这是我尝试过的 public void unique String s put your code here char newArray s toCharArray Set
  • 如何删除jsPlumb连接

    我正在玩jsplumb http jsplumb org jquery demo html 但我无法删除只有一个 div 的 id 的两个 div 之间的连接 要删除连接 请使用以下代码 jsPlumb deleteConnection c
  • 这是预期的行为吗

    如果这是一个模糊的问题 我很抱歉 因为我是 R 新手 在尝试 R 时 我发现了一个奇怪的行为 当我创建一个像这样的函数时 myfunction lt function a b print a b 并这样称呼它 myfunction b 10
  • 在 C++ 中以正确的编码获取字符串

    我之前问过类似的问题 但我仍然在 C 编码方面遇到麻烦 我尝试尽可能地描述问题 我有一个 C 客户端 通过 TCP 与 C 服务进行通信 现在我需要在消息框 Win32 API 中显示来自服务的消息 C 服务发送的字节采用 UTF 8 编码
  • 如何包含另一个文件夹中的文件?

    在我当前的项目中 我已将类文件和头文件分开 我的项目结构目前如下所示 Project Source src 类1 cpp 类2 cpp main cpp Header include class1 h class2 h 我的问题是我不知道如
  • 如何从 WMV 文件中提取特定帧? [关闭]

    就目前情况而言 这个问题不太适合我们的问答形式 我们希望答案得到事实 参考资料或专业知识的支持 但这个问题可能会引发辩论 争论 民意调查或扩展讨论 如果您觉得这个问题可以改进并可能重新开放 访问帮助中心 help reopen questi
  • 如何在 HomeVC 中快速赋予 xib 单元按钮操作

    我已经创建了 xib collectionview 单元 并且我能够在 HomeVC 中使用它的所有值 如下所示 class HomeVC UIViewController UICollectionViewDelegate UICollec
  • 如何在 CodeIgniter 中从另一个模型继承模型

    我在我的项目中使用 codeigniter 我有一个类模型 我称之为 Genesis 如下所示 class Genesis model extends CI Model function construct parent construct
  • 返回 LINQ 结果时何时调用 ToList 的经验规则

    我正在寻找通话的经验法则ToList ToArray MemoizeAll Rx on IEnumerables 而不是返回时返回查询本身IEnumerable东西 我经常发现最好只返回查询并让调用者决定是否需要列表 但有时由于 linq
  • Spark 2.x + Tika:java.lang.NoSuchMethodError:org.apache.commons.compress.archivers.ArchiveStreamFactory.detect

    我正在尝试解决 Apache Tika gt v 1 14 解析作业的 Spark submit 类路径运行时问题 问题似乎涉及 Spark Submit 类路径与我的 uber jar 平台 CDH 5 15 Spark 2 3 通过 C
  • 如何通过Kafka流式传输大文件?

    我正在将基于 ACID 的整体架构迁移到基于事件的微服务架构 在单体应用中 潜在的大文件存储在数据库中 我想与微服务共享此信息 包括文件内容 我的方法是将文件分割成编号块并发送多条消息 例如 1FileCreatedMessage带有元数据
  • 有人可以证实我对 ASP.NET 生命周期的理解吗?

    我的目标是找到一种方法在创建页面之前的最后一刻更新页面标题 我有一个母版页和一个内容占位符 它们始终包含具有特定属性的页面 该属性可以在代码中的任何位置更新 但我希望该标记的最终值是 html 标题 该页面的预渲染事件是设置标题的最佳位置吗
  • 带时区的 Strptime

    我有一个我解析的字符串DateTime strptime 字符串中日期的时区是 CET 但 Ruby 创建了一个 UTC DateTime 对象 当然它有 2 小时的偏移量 目前我正在解决这个问题DateTime strptime chan
  • 服务生成器改造

    有人可以帮助我理解createService下面代码中的方法 我需要了解方法的参数 Class 是什么S以及下面的深入代码 public class ServiceGenerator public static final String A
  • IE 中表格的 jQuery UI 性能问题

    我在让 UI 代码在 IE 中正常运行时遇到问题 我有一个表 值矩阵 每个单元格可以为空或包含项目列表 我希望用户能够在单元格之间拖动项目 所以我的 HTML 看起来像这样 table tr td td th col 1 th th col
  • 运行 HCatalog 时出错

    A LOAD eventnew txt USING HCatalogLoader 2015 07 08 19 56 34 875 主要 错误 org apache pig tools grunt Grunt 错误 1070 无法使用导入解析
  • 对话流(API.ai)中的数据上下文在哪里

    我一直在阅读有关对话流的内容 但有一件事我仍然不清楚 我将尝试举一个例子 我想实现如下转换 User Hello Google what are some interesting cities Bot Hello there Sydney