【问题标题】:Give a variable response in Dialogflow without hardcoding in fulfillment在没有硬编码的情况下在 Dialogflow 中给出可变响应
【发布时间】:2020-03-09 23:45:21
【问题描述】:

我正在开发一个 Dialogflow 聊天机器人,我目前正在使用 agent.add() 提供硬编码的响应。但是,产品负责人希望能够修改措辞,而无需更改和重新部署代码。除了将响应存储在文件或数据库中之外,还有哪些选择?当您将其添加到 Dialogflow 控制台的响应部分中时,是否有办法在响应中包含变量,该变量是在执行中设置的,否则响应是根据控制台中的响应给出的?有没有办法从履行中选择从 Dialogflow 控制台中设置的响应中给出的响应?我正在使用 nodejs 实现库,而无需在 google 上进行操作。

【问题讨论】:

  • 解释少,问题多!如果您可以更具体地提供一些您想要实现的目标的示例,那就更好了。为什么不在 Dialogflow 的 Intents 下使用 Response?
  • 我想按照您的建议使用 Intents 下的 Response 作为 Dialogflow 控制台。我想知道是否可以在响应字符串中使用可以从履行中操纵的变量,或者从履行中列出的那些中选择一个响应。通常,这些响应之一是随机选择的。
  • 是的,这是可能的。您可以创建自定义参数和实体,并从后面的代码中访问它们。请记住,当您“为此意图启用 webhook 调用”时,如果您想在意图和实现中添加响应,则意图中的响应将充当备份。只有在执行响应失败时才会触发。

标签: dialogflow-es dialogflow-es-fulfillment


【解决方案1】:

我认为你有两个选择:

  1. 仅将一个意图与各种参数一起使用

    您可以在一个意图中拥有多种响应变体。这些将根据它们可以填充的最大参数进行优先级排序。例如,如果您使用 detectIntent API 向单个意图发送参数“a”,则会触发此处的第二个响应并显示给用户。

    This is a response1 without parameters
    This is a response1 with parameter $a This is a response1 with parameter $a and $b

    作为一个小技巧,如果你不想在后端生成任何参数,你也可以在这里发送一个空的 unicode space 字符。不太干净,但会工作。

  2. 使用从您的后端触发的事件

    在这种情况下,您的 webhook/后端会选择一个合适的 event 来调用。因此,您将有多个意图,每个意图都有一个独特的响应。您也可以将此方法与上述第一点结合使用。你可以阅读更多关于事件here

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2019-05-07
    • 1970-01-01
    • 1970-01-01
    • 2018-05-11
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多