仅使用 Dialogflow 对助手列表中的选项提供不同的响应?
Provide different responses to options in an Assistant List using only Dialogflow?
我有一个包含两个选项的助手列表的意图,苹果和奶酪。我想对每个选择的选项提供不同的响应。
我的第一次尝试是对每个项目使用后续意图,但是当我这样做时,我在 tapping/choosing 项目时收到“不理解”的消息。在阅读更多内容后,我了解到这是因为 actions_intent_OPTION
事件已被触发并且没有处理它的意图。
我的第二次尝试是将 actions_intent_OPTION
事件处理程序添加到我的每个后续意图中。当我这样做时,每次只调用 Cheese 意图。我明白这是因为 actions_intent_OPTION
只能由一个意图处理。
所以我的结论是,我可以为助手列表中的不同项目提供不同响应的唯一方法是使用 webhook 处理此事件,并且单独使用 Dialogflow 是不可能的。如果没有,任何人都可以确认或指出正确的方向吗?
遵循这个理想的方法:
- 删除后续意图
- 添加事件设置为
actions_intent_OPTION
的新意图
- 为新 intent 启用 webhook
- 在 webhook 中提取 selected 选项
- 根据 selected 选项,传递所需的响应
如果您只想使用 Dialogflow,那是行不通的!这是因为,当您 select 一个选项时,输出上下文和生成的事件都将与 2 个意图相同 - 奶酪和苹果。 AI 引擎将无法决定应该触发哪个 Intent。无论哪个意图在先,它都会被每次调用。
我试图重新创建你所做的所有 Dialogflow,甚至将奶酪和苹果作为 2 个意图的训练短语,只是为了给 AI 引擎提供一些差异化,但它仍然只 selected 一个意图。
正如所怀疑的那样,答案是您不能纯粹在 Dialogflow 中使用助手列表,您必须在 fulfilment 中添加一个处理函数,该函数在事件 actions_intent_OPTION
上触发。例如:
const option = conv.arguments.get('OPTION');
if (!option) {
conv.ask('No choice made');
} else if (option === 'optionA') {
// Do something
} else if (option === 'optionB') {
// Do something else
}
我有一个包含两个选项的助手列表的意图,苹果和奶酪。我想对每个选择的选项提供不同的响应。
我的第一次尝试是对每个项目使用后续意图,但是当我这样做时,我在 tapping/choosing 项目时收到“不理解”的消息。在阅读更多内容后,我了解到这是因为 actions_intent_OPTION
事件已被触发并且没有处理它的意图。
我的第二次尝试是将 actions_intent_OPTION
事件处理程序添加到我的每个后续意图中。当我这样做时,每次只调用 Cheese 意图。我明白这是因为 actions_intent_OPTION
只能由一个意图处理。
所以我的结论是,我可以为助手列表中的不同项目提供不同响应的唯一方法是使用 webhook 处理此事件,并且单独使用 Dialogflow 是不可能的。如果没有,任何人都可以确认或指出正确的方向吗?
遵循这个理想的方法:
- 删除后续意图
- 添加事件设置为
actions_intent_OPTION
的新意图
- 为新 intent 启用 webhook
- 在 webhook 中提取 selected 选项
- 根据 selected 选项,传递所需的响应
如果您只想使用 Dialogflow,那是行不通的!这是因为,当您 select 一个选项时,输出上下文和生成的事件都将与 2 个意图相同 - 奶酪和苹果。 AI 引擎将无法决定应该触发哪个 Intent。无论哪个意图在先,它都会被每次调用。
我试图重新创建你所做的所有 Dialogflow,甚至将奶酪和苹果作为 2 个意图的训练短语,只是为了给 AI 引擎提供一些差异化,但它仍然只 selected 一个意图。
正如所怀疑的那样,答案是您不能纯粹在 Dialogflow 中使用助手列表,您必须在 fulfilment 中添加一个处理函数,该函数在事件 actions_intent_OPTION
上触发。例如:
const option = conv.arguments.get('OPTION');
if (!option) {
conv.ask('No choice made');
} else if (option === 'optionA') {
// Do something
} else if (option === 'optionB') {
// Do something else
}