在另一个意图结束时触发一个意图
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 应该是您要触发的意图中定义的事件名称。
为简洁起见删除了一些代码
抱歉 - 非常新手的问题。我有许多单独的意图(我们称它们为 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 应该是您要触发的意图中定义的事件名称。
为简洁起见删除了一些代码