仅使用 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 }