Dialogflow Fulfillment:将多项选择题分解为单个问题

Dialogflow Fulfillment: Breaking multiple choice questions into single questions

我对 Dialogflow 比较陌生,我正在尝试创建一个医疗保健诊断语音聊天机器人,其工作方式如下。

用户体验

  1. 用户调用系统并受到聊天机器人的欢迎。
  2. Chatbot 开始询问与分类相关的问题(例如,"do you have a history of chronic kidney disease?")。
  3. 用户会回答问题并最终收到某种建议(例如,自我隔离,或打电话给医生接受 XYZ 检测)。

系统设置

  1. Dialogflow 代理欢迎用户,说明我们将提出一系列问题,并提示第一个问题 ("How old are you?")。
  2. 一个不同的意图匹配用户的响应(例如,"I'm 40 years old")并向我的 webhook 服务器发送一个 webhook 请求。
  3. 我的 webhook 服务器收到请求,这会触发对第三方医疗 API 提供商的 REST API 请求。
  4. 第三方 API 提供者以多项选择题 ("Please select all statements that apply to you") 回复。这就是事情对我来说变得复杂的地方。

问题

将多项选择题分解为单个 "yes/no" 问题的最佳方法是什么?鉴于我正在处理一个语音聊天机器人,我不能连续向呼叫者播放 10 个问题并期望他们正确回答。我必须一次向来电者发送一个问题。

我最初的想法是我需要在我的 webhook 服务器中创建某种会话管理,以便它可以一次发送一个 question/response 并跟踪他们的回答。但是,鉴于 Dialogflow 已经在进行会话管理,这听起来有些多余。我的偏好是让我的 webhook 服务器保持无状态并从 webhook 请求的上下文对象中提取我需要的所有数据。

我不想将所有可能的分类问题硬编码为意图内的“必需参数”。相反,出于显而易见的原因,我希望第三方 API 提供商处理 content/questions。

一个理想的解决方案是,如果我的实现 webhook 服务器有办法在每个会话的基础上为意图提供所需参数的动态列表。换句话说,webhook 响应将包括所需参数列表和每个参数的 question/text。然后,Intent 将使用此列表一次提示呼叫者一个问题。

我不认为这是可能的,但我想尝试一下也没什么坏处...最有可能的是,我将不得不在我的 webhook 服务器中进行一些会话管理和提示流控制。不过,我愿意接受您可能有的任何新想法或建议。

你走在正确的轨道上。虽然您无法动态创建 Dialogflow 询问的提示,但您 可以 将您需要询问的信息存储在上下文中,并且当他们回答上一个问题时,检查上下文是否还有其他内容你需要问问清单上的下一个问题。

这个方案可能看起来像这样:

  1. 当您进行到需要提出分类问题的面试部分时,您将进行 API 调用,获取要问的问题列表,并将它们存储在 "triage" 上下文在 "questions" 参数下具有很长的生命周期。
  2. 然后你问第一个问题,把它放在 "current" 参数中,这样你就知道回答的是哪个问题。
  3. 您将拥有一个将 "triage" 作为输入上下文并具有 "yes"、"no" 和 "I don't know" 等响应作为训练实体的 Intent短语。此 Intent 将触发您的 webhook。
  4. 当你的 webhook 被调用时,你将从参数中得到响应,从 "current" 上下文参数中得到被问到的问题,并将这两个存储在 "answers" 参数中相同的上下文。 (或者使用不同的上下文。没关系。)
  5. 然后您将从上下文中的 "questions" 参数中提取下一个问题,将其设为 "current",并将其作为下一个问题提出。
  6. 然后每次使用相同的 Intent 重复步骤 3-5,直到所有问题都有答案。

您的服务器保持无状态 - 下一个问题所需的所有状态都在 "triage" 上下文中