何时在 Dialogflow 中使用用户实体?

When to use user entities in Dialog Flow?

中,我询问了如何保留用户特定的数据。例如,用户请求一个城市列表,webhook 服务随机选择三个。如果您稍后想引用此列表中的城市,则需要以某种方式存储它。 issue中的回答是可以在上下文中来回传递。

现在我在文档中阅读了有关用户实体的内容。这对我来说是一个未知的概念。我现在的问题是:我们是否也可以将用户实体用于此类流程?例如:

  1. 用户要求 3 个城市。
  2. Webhook 被调用并随机选择了 3 个城市。此时,webhook 服务还通过 REST API 为正在进行的会话创建了一个用户实体 @user-cities。我们甚至可以将 SQL 标识符作为键,将城市名称作为可能的同义词。
  3. 在后面的意图中,我们将 @user-cities 称为参数。当根据他之前的城市列表向 webhook 服务提供有效城市时,将提供标识符。然后,webhook 服务可以使用此标识符来提供有关城市的其他信息。

示例流程:

User:  Please provide me some interesting cities.
Agent: What about New York, Berlin and Barcelona?
User:  Please tell me more about Barcelona!
Agent: Sure, Barcelona is ...

我还没有尝试过,但我想知道这是否是一个很好的用户实体应用程序?后续问题是:何时使用用户实体以及何时将数据保留在上下文中?

虽然这会起作用……有点……但它并不是用户实体的良好应用。最大的问题是您现在正在调用 API 来为 "this" 或 "that" 或 "that first one" 等术语创建别名。而且您不断更改这些实体定义,包括删除旧别名和设置新别名。

用户实体最适合您所了解的与其他用户不同的用户信息。以您的城市为例,您可以使用用户实体来存储一个人最喜欢的城市或他们对这些城市的任何昵称。用户登录后,您将设置 @user_cities 并且他们的城市昵称现在可用。

更新 再举一个例子,还是用你的城市框架。

您可以在选择特定城市后更改其特征和别名的用户实体。因此,如果用户选择 "Sydney",您可能会创建一个 @feature 用户实体,其中包含歌剧院或海滩的条目,但不包含任何关于钟楼的条目。而对于 "London",我们可能会添加有关塔和桥的实体,但不会添加海滩。

重点在于您希望从用户那里听到的内容与您希望记住的内容。