通过 API 进行互动

将 API 用于 CX 与将 API 用于 ES 的方法类似。不同之处在于为了适应新类型、方法和字段而修改了某些资源路径和方法。

您的系统需要处理以下任务:

  • Dialogflow CX 尚不支持任何集成,因此您的系统必须提供一个界面来直接与最终用户互动。
  • 您还必须为每轮对话调用 Dialogflow API,才能将最终用户输入发送到该 API。
  • 除非您的代理响应是完全静态的(不常见),否则您需要托管网络钩子服务,才能处理启用了网络钩子的 fulfillment

下图显示了会话中进行一轮对话需要完成的步骤。

API 流图。

  1. 最终用户输入或说出某些内容(称为“最终用户输入”)。
  2. 您的界面系统会收到输入,并在检测意图请求中将其转发到 Dialogflow API。
  3. Dialogflow API 会接收检测意图请求。它会将输入与意图或表单参数相匹配,根据需要设置参数,并更新会话状态。如果 Dialogflow API 需要调用启用了网络钩子的 fulfillment,它会向网络钩子服务发送网络钩子请求,否则将转到第 6 步。
  4. 您的网络钩子服务会收到网络钩子请求。您的服务会执行所有必要的操作,例如调用外部 API、查询或更新数据库等。
  5. 您的网络钩子服务构建一个响应,并将网络钩子响应发送回 Dialogflow。
  6. Dialogflow 会创建一个检测意图响应。如果调用了网络钩子,它将使用网络钩子响应中提供的响应。如果未调用网络钩子,则它将使用代理中定义的静态响应。Dialogflow 会将检测意图响应发送到您的界面系统。
  7. 您的界面系统会收到检测意图响应,并将文本或音频响应转发给最终用户。
  8. 最终用户看到或听到响应。

向 CX API 发送最终用户输入以进行处理与 ES API 非常相似。以下示例调用 Sessions 资源的 detectIntent 方法。

REST 和命令行

在使用下面的请求数据之前,请先进行以下替换:

  • project-id:您的 GCP 项目 ID
  • agent-id:您的代理 ID
  • session-id:您的会话 ID
  • end-user-input:最终用户输入

HTTP 方法和网址:

POST https://dialogflow.googleapis.com/v3beta1/projects/project-id/locations/us/agents/agent-id/sessions/session-id:detectIntent

请求 JSON 正文:

{
  "queryInput": {
    "text": {
      "text": "end-user-input"
    },
    "languageCode": "en"
  },
  "queryParams": {
    "timeZone": "America/Los_Angeles"
  }
}

如需发送您的请求,请展开以下选项之一:

您应该收到类似以下内容的 JSON 响应:

{
  "responseId": "89dd432b-1df4-48c4-be6b-d6550c3422b0",
  "queryResult": {
    "text": "I want to ask about data plans for international travel.",
    "languageCode": "en",
    "responseMessages": [
      {
        "text": {
          "text": [
            "Sure! I can help with that. "
          ]
        }
      },
      {
        "text": {
          "text": [
            "I need to ask a few questions before I can find the best option for you."
          ]
        }
      },
      {
        "text": {
          "text": [
            "What's your name?"
          ]
        }
      }
    ],
    "currentPage": {
      "name": "projects/project-id/locations/us/agents/027ac861-f275-45ed-a879-92aeb554df4e/pages/48d4352f-c995-4e46-8857-999709882959",
      "displayName": "Collect Customer Info"
    },
    "intent": {
      "name": "projects/project-id/locations/us/agents/027ac861-f275-45ed-a879-92aeb554df4e/intents/d48acf76-10f6-491f-be0c-cb58e1ce74d6",
      "displayName": "Data Plan Intent"
    },
    "intentDetectionConfidence": 1
  }
}