在另一个意图结束时触发一个意图

Trigger one intent at the end of another

抱歉 - 非常新手的问题。我有许多单独的意图(我们称它们为 intent1、intent2、intent3 等),它们构成了一个基本的 FAQ 聊天机器人。

我希望用户能够独立触发这些,但我也想引导他们从一个到下一个。所以我希望能够在响应 intent1 的最后问“你想听听 intent2 还是问另一个问题”并做出适当的回应。

到目前为止,我还没有弄乱节点后端等,所以答案可能就在那里。

如果你想建立对话链,没有几个选择。

  • 槽位填充

    在这里您需要将您的问题添加为提示,您可以将其设为可选,这样如果用户想要进行对话,他们可以通过回答该问题来继续。 Example

  • 上下文

    后续问题可以设置上下文,Example

  • 事件

    事件是您发送当前问题的回复后可以从网络挂钩触发的事件, 要触发事件,Example

POST Authorization: Bearer <AccessToken>
https://dialogflow.googleapis.com/v2/projects/<ProjectID>/agent/sessions/<SessionID>:detectIntent
{
        "queryInput": {
                "event": {
                        "name": "event-name",
                        "parameters": {
                                "parameter-name-1": "parameter-value-1",
                                "parameter-name-2": "parameter-value-2",
                                ...
                        },
                        "languageCode": "en-US"
                }
        }
}

不需要使用 fulfillment webhook,但它确实让事情变得更容易。

首先,请记住 Intents 处理 用户说的,而不是你用它做的。 Dialogflow 的回复似乎表明他们这样做了,但是一旦你进入更复杂的交互(用户的两个不同的事物需要以相同的方式响应),你会发现响应部分变得不那么有用,你应该将你的响应存储在代码中.

这些回答应该包括关于下一个问题的提示。

在履行期间,您还应该设置一个 Context(并可能清除旧的上下文)以跟踪您接下来向他们建议的问题。

这样 - 下一个响应将由两个可能的 Intent 触发:

  • 直接提问的

    在这些情况下,您将使用 Intent 或操作名称来确定提出的问题,并提供答案(和后续提示)。

  • 一个回复"yes".

    为此,您将获得包含有关您提示他们的问题的信息的上下文,并提供该答案(和后续提示)。

虽然 "Followup Intent" 功能 听起来 很诱人,但它可能不是您想要使用的,因为它不允许通过多种方式访问​​它并且强制执行一个非常窄路.

您可能还希望查看 Thinking For Voice: Design Conversations, Not Logic 以了解有关设计对话的更多信息(以及如何在后续文章中的 Dialogflow 中对其进行建模)。

好吧,我来晚了!是的,事件是可能的。我最近做了这个。

function helloIntent(agent){
  agent.add("Hi, how are you ?");
  agent.setFollowupEvent({ name: 'NextIntentEvent', parameters: {} }); // this will do the trick
}    

app.js

    let intentMap = new Map();
    intentMap.set("Hello Intent", helloIntent);

NextIntentEvent 应该是您要触发的意图中定义的事件名称。

为简洁起见删除了一些代码