Dialogflow 虚拟代理

(可选)您可以在 Dialogflow 虚拟客服与最终用户之间创建对话。虚拟客服会尝试先自行解析客户对话,然后再上报给人工客服。如果您在没有虚拟客服的情况下使用 Agent Assist,最终用户会直接发送给人工客服,而无需先与虚拟客服互动作为中间步骤。

准备工作

  1. 阅读 Dialogflow 基础知识
  2. 执行设置步骤
  3. 使用 Dialogflow ESDialogflow CX 创建代理。如果您打算使用 Agent Assist 模拟器测试虚拟客服,请注意虚拟客服必须是 Dialogflow ES 代理,并且还必须与您要用于 Agent Assist 控制台的 GCP 项目相关联。如果您不打算使用该模拟器测试虚拟客服,则虚拟客服可以是 ES 或 CX 代理,并且可以与任何 GCP 项目关联。

将示例文件导入代理

本指南中的步骤对您的代理进行了假设,因此您需要导入为本指南准备的代理。 导入时,这些步骤使用“恢复”(restore) 选项,该选项会覆盖所有代理设置、意图和实体。

如需导入文件,请按以下步骤操作:

  1. 下载 room-booking-agent.zip 文件。
  2. 转到 Dialogflow ES 控制台
  3. 选择您的代理。
  4. 点击代理名称旁边的设置 按钮。
  5. 选择导出和导入 (Export and Import) 标签页。
  6. 选择从 ZIP 文件恢复 (Restore from ZIP),然后按照说明恢复下载的 zip 文件。

配置 Dialogflow 代理

本部分介绍如何创建和配置对话配置文件。对话配置文件可配置一组参数,用于控制对话期间向客服人员提出的建议。

创建对话配置文件

您必须先创建对话配置文件,然后才能创建对话。对话配置文件用于为对话配置代理和关联的服务。以下步骤将使用 API 通过我们在上述步骤中创建的 Dialogflow 代理来创建对话配置文件。作为替代方案,您可以使用 Agent Assist 控制台创建对话配置文件。

REST 和命令行

如需创建对话配置文件,请对 ConversationProfile 资源调用 create 方法。

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

  • PROJECT_ID:您的 GCP 项目 ID

HTTP 方法和网址:

POST https://dialogflow.googleapis.com/v2/projects/PROJECT_ID/conversationProfiles

请求 JSON 正文:

{
  "displayName": "My Contact Center Solution",
  "automatedAgentConfig": {
    "agent": "projects/PROJECT_ID/agent/environments/-"
  }
}

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

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

{
  "name": "projects/PROJECT_ID/conversationProfiles/CONVERSATION_PROFILE_ID",
  "displayName": "My Contact Center Solution",
  "automatedAgentConfig": {
    "agent": "projects/PROJECT_ID/agent/environments/-"
  }
}

conversationProfiles 后面的路径段包含新对话配置文件 ID。

在运行时处理对话

创建对话

当最终用户与人工或虚拟客服之间开始对话时,您需要创建对话如需查看建议,您还必须创建最终用户参与者,并将其添加到对话中。以下部分将引导您完成此过程。

REST 和命令行

如需创建对话,请对 conversations 资源调用 create 方法。

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

  • PROJECT_ID:您的 GCP 项目 ID
  • CONVERSATION_PROFILE_ID:您在创建对话配置文件时收到的 ID

HTTP 方法和网址:

POST https://dialogflow.googleapis.com/v2/projects/PROJECT_ID/conversations

请求 JSON 正文:

{
  "conversationProfile": "projects/PROJECT_ID/conversationProfiles/CONVERSATION_PROFILE_ID",
}

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

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

{
  "name": "projects/PROJECT_ID/conversations/CONVERSATION_ID",
  "lifecycleState": "IN_PROGRESS",
  "conversationProfile": "projects/PROJECT_ID/conversationProfiles/CONVERSATION_PROFILE_ID",
  "startTime": "2018-11-05T21:05:45.622Z"
}

conversations 后面的路径段包含新对话 ID。

创建参与者

现在,您需要向对话添加参与者。最终用户是您需要添加到对话中的唯一参与者。

REST 和命令行

如需创建参与者,请对 participants 资源调用 create 方法。

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

  • PROJECT_ID:您的 GCP 项目 ID
  • CONVERSATION_ID:您的对话 ID

HTTP 方法和网址:

POST https://dialogflow.googleapis.com/v2/projects/PROJECT_ID/conversations/CONVERSATION_ID/participants

请求 JSON 正文:

{
  "role": "END_USER",
}

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

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

{
  "name": "projects/PROJECT_ID/conversations/CONVERSATION_ID/participants/PARTICIPANT_ID",
  "role": "END_USER"
}

participants 后面的路径段包含新参与者 ID。

分析内容并获取自动响应

创建最终用户参与者后,您可以将该最终用户的输入发送到 API。API 将输入发送到检测意图请求并返回响应。

REST 和命令行

如需发送文本,请对 participants 资源调用 analyzeContent 方法。

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

  • PROJECT_ID:您的 GCP 项目 ID
  • CONVERSATION_ID:您的对话 ID
  • PARTICIPANT_ID:最终用户参与者 ID

HTTP 方法和网址:

POST https://dialogflow.googleapis.com/v2/projects/PROJECT_ID/conversations/CONVERSATION_ID/participants/PARTICIPANT_ID:analyzeContent

请求 JSON 正文:

{
  "textInput": {
    "text": "I want to book a room",
    "languageCode": "en-US"
  }
}

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

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

{
  "replyText": "I can help with that. Where would you like to reserve a room?",
  "automatedAgentReply": {
    "detectIntentResponse": {
      "responseId": "38e5d378-12e5-453b-9c37-ac6828b86673",
      "queryResult": {
        "queryText": "I want to book a room",
        "action": "room.reservation",
        "parameters": {
          "date": "",
          "duration": "",
          "guests": "",
          "location": "",
          "time": ""
        },
        "fulfillmentText": "I can help with that. Where would you like to reserve a room?",
        "fulfillmentMessages": [
          {
            "text": {
              "text": [
                "I can help with that. Where would you like to reserve a room?"
              ]
            }
          }
        ],
        "intent": {
          "name": "projects/PROJECT_ID/agent/intents/e8f6a63e-73da-4a1a-8bfc-857183f71228",
          "displayName": "room.reservation"
        },
        "intentDetectionConfidence": 0.8,
        "languageCode": "en-us"
      },
      "webhookStatus": {}
    }
  }
}

完成对话

对话完成后,请结束对话,确保它被标记为 done。一段时间后,已完成的对话将被清理。

REST 和命令行

如需结束对话,请对 conversations 资源调用 complete 方法。

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

  • PROJECT_ID:您的 GCP 项目 ID
  • CONVERSATION_ID:您在创建对话时收到的 ID

HTTP 方法和网址:

POST https://dialogflow.googleapis.com/v2/projects/PROJECT_ID/conversations/CONVERSATION_ID:complete

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

您应会收到如下所示的 JSON 响应:

{
  "name": "projects/PROJECT_ID/conversations/CONVERSATION_ID",
  "lifecycleState": "COMPLETED",
  "conversationProfile": "projects/PROJECT_ID/conversationProfiles/CONVERSATION_PROFILE_ID",
  "startTime": "2018-11-05T21:05:45.622Z",
  "endTime": "2018-11-06T03:50:26.930Z"
}