0

我正在尝试通过 Google Assistant 创建自定义操作。我有由用户定义的自定义用户数据,我希望用户向我询问有关此数据的信息,通过提供其名称来确定他们想要了解的数据。

例如:用户说“告诉我有关 Fred 的情况”助手回复“Fred 是红色的”

[
  {
    "name":"Fred",
    "info":"Fred is red"
  }
]

我遇到的问题是如何添加培训短语或在用户提供不存在的名称时重新提示用户使用。

前任:

用户说“告诉我有关 Greg 的信息”,助理回复“我找不到‘Greg’。你想知道谁?”

[
  {
    "name":"Fred",
    "info":"Fred is red"
  }
]

我尝试添加仅包含“名称”参数的培训响应,但是如果用户说“告诉我有关 Fred”,“名称”参数设置为“告诉我有关 Fred”而不是“Fred” ,这意味着它忽略了我设置的其他培训响应。

有谁能成为我的欧比旺克诺比?

编辑: 我在同一个项目中使用了 Alexa,并向 Alexa 发送了一个 elicitSlot 指令。可以实现类似的东西吗?

4

1 回答 1

0

在这种情况下,没有真正等效于elicitSlot指令的指令(至少不是我通常看到的使用方式),但它确实提供了几种工具来完成您想要做的事情。

一般的方法是,在发送回复时,您还可以为回复设置一个输出上下文。您可以将要保留的任何信息(您提示的值以及您可能已经收集的其他状态)设置为 Context 的参数。

然后,您可以将此上下文设置为输入上下文的 Intent。只有在上下文处于活动状态时,才会匹配意图。此 Intent 可以匹配@sys.any,或者在这种情况下可能适用的任何其他实体类型。

这种方法的一个优点是它允许用户以更对话的方式回复,或者将他们的回复从您刚刚提出的提示性问题中转移出来。它允许用户在上下文中回答,或者通过您已经为其他目的设置的其他意图。

于 2019-02-07T01:55:41.313 回答