自定义 CRM

自定义 CRM 解决方案允许公司在使用当前未与 CCAI Platform 标准集成的 CRM 时,利用 Contact Center AI 平台 (CCAI Platform) 门户。自定义 CRM 配置适用于自建 CRM 或任何非标准 CRM。

客服人员负责处理通话和聊天,主管可以使用 CCAI Platform 门户监控和提取报告。有关通话或聊天会话的所有详细信息都存储在会话元数据文件中。此文件可包含 20 多个数据点,包括会话信息、转接、处理时长、参与者、诊断信息等。会话元数据文件可以解析并用于会话后分析和跟踪。

会话元数据和消费者上传的媒体文件会被推送到外部存储服务,客服人员可以在会话期间直接在客服人员适配器中查看消费者上传的媒体文件。

自定义 CRM 解决方案通过以下组件的组合来实现。部分组件可能适用于您的配置,也可能不适用:

  • 为每个通话和聊天会话生成会话元数据文件

  • 将元数据和媒体文件推送到外部存储服务

  • 通用 API 集成

  • 自定义查询网址

  • 通过电子邮件更新 CRM 记录

  • 通过代理适配器查找账号或支持请求

前提条件

如需使用自定义 CRM 功能,您必须先设置外部存储。如需了解详情,请参阅自定义 CRM 解决方案的外部存储空间。

会话元数据

会话元数据文件包含有关会话的详细信息。此邮件会在会议结束 15 分钟后发送。如需了解详情,请参阅会话元数据文件。

自定义 CRM 互动和集成方法

Generic API 自定义网址
账号查找 是 是
支持请求查询 是
支持请求更新 是 否

Generic API

通用 API 集成方法可让您使用自定义 CRM 的 API 与 CCAI Platform 建立双向连接。这种无缝方法与开箱即用的 CRM 集成体验相同。客服人员无需采取任何操作即可为通话或聊天会话创建 CRM 记录,具体取决于独特的 API 配置。它可以实现无缝的记录查找和记录更新。

自定义网址

借助“自定义链接”选项,您的客服人员可以利用为每个会话创建的自定义链接与您的 CRM 系统进行交互。与标准 CRM 集成和通用 API 体验不同,客服人员需要采取行动才能创建 CRM 记录。在某些情况下,这可能只是启动一个包含会话中自定义链接的标签页,而在其他情况下,客服人员可能需要手动创建记录。

自定义查询网址详情和配置

该网址的基本功能是执行 CRM 查找,但根据您的 CRM,可以根据自定义网址内容触发更复杂的流程。自定义 CRM 的网址可以使用包含会话信息的变量进行配置,并且可以在会话期间在客服人员适配器中访问。访问该网址后,它会触发自定义 CRM 执行查找。通过此 CRM 查找,客服人员可以针对当前通话或聊天会话使用“工单弹出窗口”。自定义链接流程完全依赖于自定义 CRM 处理此链接并在必要时对其进行修改或重写的能力。

除非还利用了列出的电子邮件更新方法,否则外部存储的会话元数据、通话录音和其他文件不会与 CRM 记录关联。

在此配置中,客服人员将在不同的标签页中登录 CCAI Platform 门户和 CRM。通话和聊天将在 CCAI Platform 标签页中处理,工单详情将在 CRM 标签页中访问。

要使此配置正常运行,请执行以下操作:

  • 客服人员必须在浏览器中登录其 CRM

  • 客服人员必须在浏览器中登录 CCAI 平台门户

  • 必须预先配置自定义查询网址

  • 您的 CRM 需要处理自定义网址才能显示相关的 CRM 记录

自定义查询网址行为

  • CCAI Platform 只会在网址中添加不为空的参数。

  • 会话结束后,CCAI Platform 不会将包含 ANI/UID/电子邮件地址的生成网址存储在 CCAI Platform 数据库中。

自定义查询网址配置

由于唯一标识符以及 CRM 功能和行为各不相同,您需要创建 2 个不同的网址,一个用于 IVR/PSTN/短信会话,另一个用于 Web 和移动 SDK 会话。IVR/PSTN/短信会话将使用 ANI 作为唯一标识符,而 Web 和移动 SDK 可能会使用 CUID 和电子邮件。

以下变量可用于配置查询网址:

变量 值
{CUSTOMER_PHONE_NUMBER} 最终用户的手机号码
{ANI} 最终用户的手机号码。保留此字段是为了向后兼容。
{CUID} 自定义用户 ID
{EMAIL} 最终用户电子邮件地址
{MENU_PATH} 完整的队列菜单路径。
例如,“订单/订单确认/订单信息”。
{MENU_ID} 菜单 ID
{CHANNEL}

会话渠道。可能的值:

  • 聊天
  • voice_call
{TYPE}

会话类型。

通话的可能值:

  • Incoming_Call_(app)
  • Scheduled_Call_(app)
  • Incoming_Call_(web)
  • Scheduled_Call_(web)
  • Outbound_Call
  • Outbound_Call_(api)
  • Incoming_Call_(api)
  • IVR_Call
  • IVR_Call_(app)
  • 语音信息

对话的可能值:

  • 移动设备
  • Web
  • 短信
{SUPPORT_PHONE_NUMBER} 最终用户拨打的支持中心手机号码。
{OUTBOUND_NUMBER} 客服人员用于外拨手机的手机号码。
{SESSION_ID}

会话 ID。可能的值:

  • 通话 ID
  • Chat ID
  • 邮件 ID
{CUSTOM_AGENT_ID} user 对象中的可选代理 ID 字段。只有在会话建立并分配了客服人员之后,才能获取客服人员 ID。因此,请将实例配置为延迟创建通话或聊天记录,以便有时间定义此变量。您可以在设置 > 操作管理 > CRM 记录创建详情中延迟创建通话或聊天记录。如需了解详情,请参阅 CRM 记录创建详情。

CCAI Platform 门户配置

  1. 使用分配了管理员角色的账号登录 CCAI Platform 门户。

  2. 依次前往设置 > 开发者设置。

  3. 在“CRM”部分中,选择自定义 CRM。

  4. 在 CRM 查找下,输入您的自定义网址。

  5. 选择要在 CRM 请求中使用的电话号码格式。

  6. 点击保存更改。

  7. 如果您尚未配置外部存储服务,请进行配置。如需了解详情,请参阅外部存储。

通过电子邮件更新 CRM 记录

在自定义查询网址等配置中,会话完成后,需要在 CRM 中更新会话元数据。借助此功能,CCAI Platform 可以通过电子邮件自动发送会话数据。会话结束大约 15 分钟后,系统会向配置的位置发送一封电子邮件,并使用电子邮件内容更新 CRM 中的记录。此功能可以全局配置,也可以按队列配置。收到电子邮件后,您的 CRM 可能会配置为更新或创建会话的新 CRM 记录。

用电子邮件发送详细信息

  • 发件人:no-reply@ccaiplatform.com

  • 包含:

    • Subject line

    • 包含会话元数据的正文(采用 JSON 语法)

    • TXT 格式的附件,其中包含聊天记录(如适用)

  • CCAI 平台将在会话结束后等待 15 分钟,然后发送电子邮件。

  • 系统只会针对成功完成的会话发送电子邮件。对于失败或放弃的会话,系统不会发送此事件。

全局配置

  1. 使用分配了管理员角色的账号登录 CCAI Platform 门户。

  2. 依次前往设置 > 开发者设置。

  3. 在“CRM”部分,确保已选择自定义 CRM。

  4. 启用通过电子邮件发送会话结果。

  5. 输入您希望接收该电子邮件的邮箱。

  6. 点击保存更改。

按队列配置

  1. 使用分配了管理员角色的账号登录 CCAI Platform 门户。

  2. 前往设置 > 队列,然后选择任意子队列。

  3. 启用通过电子邮件发送会话结果。

  4. 输入您希望接收该电子邮件的邮箱。

    邮件配置显示

  5. 点击保存自定义 CRM 设置。

设置继承和覆盖

设置 行为
全局 = 未启用
队列 = 未启用
不为所有队列发送。
全局 = 未启用
队列 = 已启用
队列设置(即开启/关闭状态)会覆盖全局设置。
电子邮件会从给定队列发送到队列设置中定义的电子邮件地址。
全局 = 已启用
队列 = 未启用
队列设置(邮箱、开启/关闭状态)沿用全局设置。
系统会从给定队列向全局设置中定义的邮箱发送邮件。
全局 = 已启用
队列 = 已启用
队列设置(电子邮件地址)会覆盖全局设置。
电子邮件会从给定队列发送到队列设置中定义的电子邮件地址。
如果电子邮件地址为空,则不会发送电子邮件。

代理体验

CRM 记录查找

  1. 使用分配了客服人员角色的账号登录 CCAI Platform 门户。

  2. 打开通话或聊天适配器。

  3. 使用在新浏览器窗口中打开按钮触发查找。

  4. 使用复制链接按钮将查询网址复制到剪贴板。

代理显示

适用于自定义 CRM 解决方案的外部存储空间

借助 External Storage for Custom Solutions,您可以使用外部存储服务来存储和检索 CCAI Platform 会话元数据、通话录音、聊天记录和客户上传的媒体文件。这些文件存储在 CRM 之外。

如需配置外部存储空间,您必须拥有:

  • 一个有效的 CCAI Platform 账号,已分配管理员和客服人员角色,用于配置和测试

  • 外部存储服务

文件夹结构

以下文件夹结构将整理到外部存储空间的文件夹路径中:

  • ujet-chat-transcripts

  • ujet-media

  • ujet-metadata

  • ujet-voice-recordings

  • ujet-voicemails

文件格式和命名惯例

以下文件类型可以推送到外部存储服务。 文件在传输过程中使用 HTTPS 进行加密:

文件 名称
通话录音 - call-{id}.mp3
- call-{id}.wav
媒体文件 - call-{id}-photo-{photo-id}.jpg
- call-{id}-video-{video-id}.mp4
- chat-{id}-photo-{photo-id}.jpg
- chat-{id}-video-{video-id}.mp4
聊天转写文稿 - chat-{id}.txt
会话元数据 - call-{id}.json
- chat-{id}.json

客服人员和主管体验

在通话或聊天会话期间,消费者使用智能操作上传的照片和视频会显示在客服人员适配器中。

如果您将自定义网址 CRM 互动与会话元数据文件电子邮件更新方法结合使用,客服人员和主管可以使用您的外部服务器访问会话信息。

配置外部存储服务

请完成以下步骤,配置外部存储空间:

  1. 使用分配了管理员角色的账号登录 CCAI Platform 门户。

  2. 依次前往设置 > 开发者设置。

  3. 在“开发者设置”页面上,前往外部存储空间部分。

  4. 将开关切换到开启,以启用 CRM 服务器之外的信息存储,然后选择要存储的文件类型。

  5. 在“服务器设置”部分,选择存储类型并完成设置步骤:SFTP 服务器、Google Cloud 存储桶。

SFTP 服务器

  1. 输入 SFTP 主机(网址或 IP 地址)。

  2. 输入端口号。

  3. 输入 SFTP 登录用户 ID。

  4. 如果 SFTP 服务器要求使用密码进行身份验证,请在密码字段中输入密码。

  5. 如果 SFTP 服务器需要私钥进行身份验证,请选中 SSH 私钥复选框。

  6. 输入(复制并粘贴)SSH 私钥。

  7. 输入私钥口令。如果会话信息应存储在 SFTP 服务器上的特定文件夹中,请选中文件夹路径复选框,然后输入 SFTP 文件夹路径。

  8. 点击保存更改。

Cloud Storage

  1. 输入目标 Google Cloud 存储桶名称。

  2. 输入 Google Cloud 客户端 ID。

  3. 输入 Google Cloud 客户端密钥。

  4. 如果会话信息应存储在 Google Cloud 存储桶中的特定文件夹中,请选中文件夹路径复选框,然后输入Google Cloud 文件夹路径。

  5. 点击关联并保存。

测试外部存储配置

对于已有标准集成方案的 CRM:

  1. 登录您的 CRM。

  2. 使用分配了客服人员角色的 CCAI Platform 凭据在 CRM 中登录 CCAI Platform。

  3. 发起通话或聊天。系统会显示与会话关联的 CRM 记录。

  4. 会话结束后,转写文件应在几秒钟内上传。

  5. 直接前往外部服务器存储文件夹,验证文件是否存在。

正在将会话文件发送到 CRM

启用外部存储后,CRM 存储和外部存储网址开发者设置可让您发送会话文件,并决定使用哪个来源在代理适配器中显示文件。

如需查看这些设置,必须在设置 > 开发者设置 > 外部存储空间中启用外部存储空间。将启用在 CRM 服务器之外存储信息切换到开启。

CRM 存储空间

  1. 依次前往设置 > 开发者设置 > 外部存储空间 > CRM 存储空间。

  2. 选中同时将会话文件发送到 CRM 旁边的复选框,将会话文件(例如通话录音或聊天记录)发送到 CRM 和配置的外部存储空间。

  3. 点击保存更改。

如果选中该复选框,录音将同时存储在 CRM 和外部存储空间中。

外部存储空间网址

外部存储空间网址会在两个位置使用:

  • 智能体适配器。

  • 报告:在报告以及“设置”“通话”“已完成”等菜单中显示媒体网址。

  1. 依次前往设置 > 开发者设置 > 外部存储空间 > 外部存储空间网址

  2. 选择来源 CRM 网址或外部存储空间网址,以在客服人员适配器中显示文件。

  3. 点击保存更改。

CRM 存储空间

  • 如果未选中 CRM 存储复选框,录音将仅存储在外部存储空间中,并使用指向 CRM 的链接。

  • 如果选中该复选框,录音将同时存储在 CRM 和外部存储空间中。

外部存储空间网址

该网址会在两个位置使用:

  • 一种是在 CCAI Platform 适配器中显示媒体。外部存储或 CRM。

  • 另一个在报告中。我们会在报告以及“设置”“通话”“已完成”等菜单中显示媒体网址。

在 CCAI Platform 门户中显示自定义 CRM

将自定义 CRM 集成与您自己的自定义 CRM 搭配使用时,您可以在 CCAI Platform 门户中的专用页面上加载 CRM。启用后,CCAI Platform 门户中的 CRM 标签页会加载并显示您的自定义 CRM 页面。您可以在开发者设置 > CRM 中进行配置。

借助此功能,客服人员可以使用 CCAI Platform 通话和聊天适配器处理实时支持会话,同时还可以在自定义 CRM 中工作。这包括查看自动弹出的账号和记录详细信息,以及从移动应用或消费者传入的会话特定文件和数据,所有这些操作都使用 CCAI Platform 门户完成。

配置自定义 CRM 页面

如需配置自定义 CRM 页面,请按照以下步骤操作:

  1. 在 CCAI Platform 门户中,依次点击设置 > 开发者设置。如果您没有看到设置菜单,请点击 菜单。

  2. 在 CRM 窗格中,点击自定义 CRM。

  3. 点击 Display CRM in CCAI Platform portal(在 CCAI 平台门户中显示 CRM)切换开关,将其切换到开启位置。

  4. 在显示网址下,输入自定义 CRM 页面的网址,然后点击保存。

打开自定义网址屏幕弹窗

使用打开自定义网址可在系统中找不到联系人时显示自定义网址屏幕弹出窗口。使用临时账号 ID 创建 CRM 记录,并根据队列级配置触发带有参数的自定义链接。

按队列启用屏幕弹出功能

  1. 前往设置 > 队列 > IVR,点击要修改的队列。

  2. 在面板中,前往打开自定义网址。

  3. 输入网址以显示屏幕弹出窗口。

将变量参数 {ACCOUNT_ID} 和 {PHONE_NUMBER} 纳入网址中。

下面提供了一个示例。

  1. 点击保存。

自定义 CRM 通用 API 集成

通用 API 集成方法可让您使用 CRM 的 API 与 CCAI Platform 建立双向连接。这种无缝方法与开箱即用的 CRM 集成体验具有相同的感觉。

客服人员无需执行任何操作即可为通话或聊天会话创建 CRM 记录。根据独特的 API 配置,它可以实现无缝的记录查找和记录更新。

术语

期限

说明

账号

它用于指代 CRM 中的账号/联系人/客户/潜在客户实体。您的 CRM 系统可能对此实体有其他名称。

账号包含记录。

录制

它用于指代 CRM 中的支持请求/工单/对话/突发事件实体。您的 CRM 系统可能对此实体有其他名称。

记录属于账号。

备注

它用于指代 CRM 中的“评论/备注”实体。您的 CRM 可能会为此实体使用其他名称。

评论属于记录。

API 设置

本部分概述了自定义 CRM API 设置特有的设置。

身份验证方法

CCAI Platform 支持三种 CRM 身份验证方法:

  • 基本身份验证:配置身份验证凭据,包括用户名和密码。

  • 自定义标头:配置自定义标头键值对:字段键和字段值。您可以根据需要输入任意数量的键值对。

  • OAuth:CCAI Platform 支持业界标准授权协议 OAuth 2.0。如果您需要启用“将重定向网址作为授权网址和令牌网址的一部分”选项,请指定 OAuth 信息。

    配置以下值:

    • 授权网址(必填)

    • 令牌网址(必填)

    • 客户端 ID(必填)

    • 客户端密钥(必填)

    • 范围

    • 州

    • 访问类型

电话号码格式

选择要在 CRM 请求中使用的电话号码格式:

  • 自动:创建:+1 222 333 4444,搜索:*222*333*4444

  • E.164:+12223334444

  • 美国本地:2223334444

  • 美国本地标准:(111) 222-3333

  • 国际:+1 222 333 4444

API 请求超时

使用下拉菜单将 API 请求超时配置为 1-10 秒。此超时设置将应用于您配置的所有端点。

CRM 查找网址

指定查找网址,用于将客服人员引导至当前账号和记录。

输入在浏览器中打开账号或记录页面时,CRM 中显示的查找网址。

您还可以将 CRM 查找网址与 Web SDK 和移动 SDK 搭配使用。您可以配置 SDK,以查找 CRM 账号和记录信息,并在代理适配器中显示。如需查看 CRM 查找网址的完整列表,请参阅请求网址参数。

账号查询网址

使用 {ACCOUNT_ID} 变量插入实际账号 ID。

示例:

https://www.example.com/contact/{ACCOUNT_ID}

记录查询网址

使用 {RECORD_ID} 变量插入实际记录 ID。

示例:

https://www.example.com/record/{RECORD_ID}

API 端点

这是 Generic API 最重要的配置。

  1. 如需让您的代理可以使用账号查找功能,您必须配置查找账号和创建账号端点。

  2. 此外,您还可以设置查找记录和创建记录端点,以便为智能体启用记录查找或创建功能。为此,您需要完成上一步中的账号设置。

  3. 最后,如果您输入更新记录、上传文件和评论端点,系统将启用记录更新。为此,您需要完成上一步中的记录设置。

端点配置

进行以下设置:

  1. 请求网址:API 端点网址。

  2. 从 POST、GET、PUT 或 PATCH 中选择请求方法。

  3. 指定请求参数。您可以使用 CCAI Platform 定义的变量来传递所需信息(请参阅下表)。此外,您还可以输入纯文本或数字作为参数值。您可以根据需要添加任意数量的参数。

  4. 如果端点是 POST/PUT/PATCH,CCAI Platform 会提供更精细的控制,以便您控制请求的构建方式。从媒体资源或容器中选择请求数据格式。它指定请求 JSON 的格式。

    • Property 的实例。这表示当 CCAI Platform 根据参数构建请求正文时,请求对象是基本属性映射。

    • 容器。这表示要发送的请求对象数据需要嵌套在结构中。从映射或数组中选择容器类型。输入容器名称。在根据参数构建请求正文时,它用作父对象名称。

      • 示例:Map: { container_name : { …parameters } }

      • 示例:数组:{container_name : [ { …parameters } ] }

  5. 输入响应数据位置。它用于在 JSON 响应中定位目标响应对象。

请求网址参数

参数 变量 评论
代理 ID {AGENT_ID} 内部代理 ID。
代理自定义 ID {AGENT_CUSTOM_ID} 用户个人资料中的可选字段。
代理邮箱 {AGENT_EMAIL} 回答问题的客服人员的邮箱(如适用)。
最终用户的姓名 {NAME}
最终用户的名字 {FIRST_NAME} 拍摄于 Name
最终用户的姓氏 {LAST_NAME} 取自 Name,如果缺失,则默认为 --。
外部 ID {UJET_ID} CCAI Platform 最终用户 ID
电子邮件 {EMAIL}
通话类型/会话类型 {SESSION_TYPE}
最终用户手机号码 {PHONE_NUMBER} 已使用设置选项设置格式
通话 ID {Call_ID} CCAI 平台通话 ID。
Chat ID {Chat_ID} CCAI Platform 聊天 ID。
语言 {LANG}
自定义 UID {CUSTOM_USER_ID} 对于移动设备:位于电子邮件的左侧。例如,test.user3(来自 test.user3@test.co)
账号 ID {ACCOUNT_ID} 通过调用“查找/创建联系人”端点找到。
记录 ID {RECORD_ID} 通过调用“查找/创建记录”端点找到。
会话 ID {SESSION_ID} CCAI Platform 会话 ID
菜单路径 {MENU_PATH}
去电号码 {OUTBOUND_PHONE_NUMBER} 已使用设置选项设置格式
队列名称 {QUEUE_NAME}
队列 ID {QUEUE_ID} 内部队列 ID。
SDK 名称 {SDK_NAME} Web SDK 或移动 SDK 中指明的最终用户名称。
SDK 电子邮件 {SDK_EMAIL} Web SDK 或移动 SDK 中指明的最终用户电子邮件地址。
SDK 手机 {SDK_PHONE} Web SDK 或移动 SDK 中指明的最终用户手机号码。
SDK 标识符 {SDK_IDENTIFIER} 标识 Web 或移动 SDK 最终用户或账号。请勿在此属性中包含个人身份信息。创建账号时,请求中必须包含此标识符。
SmartAction 会话 ID {SMART_ACTION_SESSION_ID}
SmartAction:验证 (即将推出)
SmartAction:文本输入 (即将推出)
评分 {RATING} 仅在用户留下评价时可用
反馈消息 {FEEDBACK} 仅在用户留下评价时可用
通话时长 {CALL_DURATION} 格式为 mm:ss
保持时长 {HOLD_TIME} 格式为 mm:ss
等待时间 {WAIT_TIME} 格式为 mm:ss
通话后收尾工作时长 (即将推出)
设备类型 {DEVICE_TYPE}
断开连接者 {DISCONNECTED_BY}
渠道 {CHANNEL}
记录主题 {TICKET_SUBJECT} 用作记录标题
记录说明 {TICKET_DESCRIPTION}
记录说明 HTML {TICKET_DESCRIPTION_HTML} 与说明相同,只是格式为 HTML
备注正文 {COMMENT_BODY} 仅在添加评论的情况下可用(保存评分、结束通话/聊天、通话/聊天已开始)
文件数据 {FILE_DATA} 仅在上传文件端点中可用,但包含 base64 或多部分表单的数据。

请求网址参数函数

提供了一些函数来帮助处理动态 CCAI Platform 变量。 这些函数只能在端点设置的请求参数部分中使用。

通过函数创建的结果值将是一个字符串。如果函数未返回任何值,则在执行之前,系统会从请求中的参数列表中移除该参数。

函数 函数语法 说明
默认值 =DEFAULT_VALUE(val1, val2) 除非为 null 或空,否则值将使用 val1,并默认回退到 val2。
串联 Or =CONCAT_OR(val1, val2, val3) 使用 or 串联多个值。示例:'val1 or val2 or val3'
串联 And =CONCAT_AND(val1, val2, val3) 使用 and 串联多个值。示例:'val1 and val2 and val3'

示例

以下是请求网址参数函数的一些使用示例。

默认

以下示例在 Create a Record Endpoint 中使用 DEFAULT_VALUE。 代理设置的键和值使用默认函数,以便在代理电子邮件地址为空值时提供后备值。在创建记录时,客服人员电子邮件地址可能为空,原因有以下几种:客户可能在分配的客服人员接听来电之前结束了 IVR 通话;或者,对于聊天,系统会在客服人员接听之前创建记录。这样,在后续更新之前,必需参数可能会默认设置为安全值,或者在调用被放弃时设置。

修改字段

串联

以下示例在 Find an Account by Query 端点中使用 CONCAT_OR。此示例特定于 Zoho CRM,但展示了如何使用 CONCAT_OR。CONCAT_AND 遵循相同的规则,但使用 and 而不是 or 连接值。请参阅以下情况,了解执行时端点中存在的值以及作为请求参数传递的结果值。

存在密钥 结果值
ACCOUNT_ID (Id:equals:<uuid>)
ACCOUNT_ID,EMAIL (Id:equals:<uuid>) 或 (Email:equals:kim@example)
PHONE_NUMBER,EMAIL (Phone:equals:+12223334444) 或 (Email:equals:kim@example)

API 账号

API 账号端点支持与 CRM 中的账号集成。

对返回 400 错误的端点的调用会重试。返回其他错误的调用不会重试。重试会持续一周,并以指数级递减。如需了解 API 流程,请参阅自定义 CRM 通用 API:流程。

通过查询端点查找账号(以前称为“查找账号”端点)

此端点用于通过手机号码、邮箱或内部 CRM ID 查找账号。这是用于查找账号的默认端点。

示例响应:

{
  "id": 123,
  "name": "Kim",
  "phone": "11234567890",
  "email": "Kim@agents.co"
}

“按 ID 查找账号”端点

此端点用于按 ID 查找账号。通常,此 ID 将是网址的一部分。网址验证还会考虑网址是否未使用 ID 构成,如果是,则不会使用此端点。这将遵循 REST 标准。 如果查找失败并返回 404,则接下来会通过查询进行查找。

示例响应:

{
  "id": 123,
  "name": "Kim",
  "phone": "11234567890",
  "email": "Kim@agents.co"
}

创建账号端点

如果我们未找到账号,则会使用此端点创建账号。大多数 CRM 都要求将记录附加到账号。为了打造统一的流程,我们对所有 CRM 都强制执行此要求。

API 记录

API 记录端点提供了与 CRM 中的记录或案例集成的功能。

通过查询查找记录(以前称为“查找记录”端点)

此端点用于根据条件查找记录。通常,这用于查找与账号关联的记录。如果 CCAI Platform 配置为重复使用现有记录,则系统会使用找到的记录。这是用于查找记录的默认端点。

示例响应:

{
  "id": 456,
  "subject": "Record title",
  "status": "open", // enumerated status open/closed, or 1,2,3
  "contactId": 123, // contact attached to ticket
  "phone": "11234567890", // contact phone
}

创建记录端点

此端点用于创建记录。如果查找记录请求未找到记录,或者 CCAI Platform 配置为不重复使用现有记录,则会创建新记录。

示例请求:

{
  "id": 123,
  "subject": "Record title", 
  "description": "A longer description of the record, can be formatted in html",
  "phone": "11234567890", // can be saved in multiple formats
  "contactId": 123,
  "sourceType": "PHONE", // PHONE/CHAT
  "menu": "queue1",
  "direction": "outgoing",
  "rating": 5, // 1-5 scale
  "feedback": "the agent was great!" // description of rating
}

更新记录端点

此端点用于更新记录。它会更新记录的标题和说明。此端点还可以根据 CCAI Platform 事件(例如保存 CSAT 评分、通话或聊天结束事件、所选队列、验证用户等)更新记录。

上传文件端点

此端点用于上传附件。

为上传端点选择类型

  • Base64 编码形式

  • 多部分表单

选择要附加的文件

  • 通话录音

  • 聊天转写文稿

  • 语音信息

  • 相册

  • 视频

  • 会话元数据文件

从 ID 和附件网址中选择附件类型。它指定响应 JSON 的格式。

  • ID

  • 附件 ID。输入附件 ID 在 JSON 响应中的参数位置。此 ID 将作为 {ATTACHMENT_ID} 供附件构建器网址使用。

  • Attachment Builder 网址。输入用于下载文件附件的网址。RECORD_ID 和 ATTACHMENT_ID 是可用变量。

    例如:https://www.example.com/Accounts/{RECORD_ID}/Attachments/{ATTACHMENT_ID}

  • 附件网址

    输入文件下载网址在 JSON 响应中的参数位置。

如果您希望 CCAI 平台在上传文件时向记录添加评论,请选中向 CRM 记录添加评论复选框。这些评论将遵循 Comment 端点中的 Text Format 设置。

以下示例是使用 POST/PUT/PATCH 的多部分表单示例:

{
  "file": <file data>
  "id": 123, // optional, this can also just be part of the URL;
             // for example https://example-customer.com/upload/record/{RECORD_ID}
}

示例响应:

示例 A:存在下载网址

{
  "id": 123,
  "url": "https://some-hosted-url.com"
}

示例 B

在这种情况下,下载网址不存在,但有一个使用此 ID 的下载附件端点。例如 https://www.customer-api.com/record/{RECORD_ID}/Attachments/{ATTACHMENT_ID}。

{
  "id": 123
}
评论端点

此端点用于向记录添加评论。如果配置了端点,CCAI 平台将向包含以下事件的记录添加评论:

  • 通话或聊天开始

  • 通话或聊天结束

  • 客户满意度评分和评论

  • 自定义数据包

  • 转移评论

  • 处置代码和备注

  • 调查问卷的问题和回答

为评论选择文本格式。如果选中将文本转换为 HTML 复选框,则文本将采用 HTML 格式,否则将采用纯文本格式。

请求示例 POST/PUT/PATCH:

{
  "comment": "Some text",
 // string can also be formatted on CCAI Platform side as HTML).
  "id": 123,
 // optional, this can also just be part of the URL;
 // for example https://example-customer.com/comment/record/{RECORD_ID}
}

自定义 CRM 通用 API:流程

CCAI Platform 的自定义 CRM(通用 API)集成作为一组流程运行。在通话、聊天或语音信息开始时,平台会运行配置的账号和记录步骤,这些步骤会在 CRM 中查找或创建账号和记录(例如工单或案例)。在互动期间和之后,它还会执行评论、记录更新和文件上传等操作。以下流程图显示了每个步骤的运行时间以及运行该步骤必须配置的内容。

流运行时间

这些流程在互动中的不同时间点运行。在互动期间,系统会运行账号和记录步骤。录音、转写内容和语音信息会在互动结束后上传,同时上传的还有评论、更新记录和其他会话后操作。附件(照片、视频、文档和音频)会在互动期间分享时上传。在其中一个流程运行之前:

  • 触发操作的事件已发生,例如,有文件可供上传,或者通话、聊天或语音信息已结束。
  • 在自定义 CRM 设置中启用了相关操作。例如,文件类型已启用上传功能,或者 API Comment 或 API Update 端点已配置。
  • 对于写入 CRM 的任何操作(上传到记录、发布评论或更新记录),系统都会配置所需的端点,并且会话存在记录。如果尚未创建记录,平台会保留该操作,并在记录存在后自动运行该操作。

将文件上传到外部存储空间不需要记录。记录要求适用于 CRM 写入。

在某些配置中,账号会充当会话记录:当跳过记录创建并将会话数据推送到 CRM 账号时,系统会使用账号级评论、上传和更新端点,而不是记录级端点。在图表中,“记录”包括在启用该配置时充当会话记录的账号。

如需了解账号、记录和会话后排序、重试时间以及错误行为,请参阅自定义 CRM(通用 API)中的错误处理、重试和调用排序。

流程图

在这些流程图中,有三种结果反复出现:

结果 具体含义
已跳过 该操作已通过配置关闭,因此不会发送任何内容。
保全 该操作已配置,但会等待记录存在,然后自动运行。
配置不完整 缺少必需的端点,因此无法运行操作。

基本流程

互动会先运行账号步骤,然后运行记录步骤,最后运行任何会话后操作。只有在配置了每个步骤自己的设置和端点后,该步骤才会运行。外部存储上传操作无需记录即可运行;其他会话后操作会写入 CRM,并等待记录存在。此概览显示了会话后路径;互动期间共享的文件在可用后会立即遵循上传文件流程。

基本流程图

查找或创建账号

平台会根据提供的 ID、手机号码、邮箱或配置的匹配方法查找账号。如果未找到账号,并且账号创建功能已启用,系统会创建一个账号;如果没有任何身份识别详细信息,系统会创建一个匿名账号。然后,系统会将找到或创建的账号与会话相关联。

查找或创建账号流程

查找或创建记录

启用记录模式后,如果现有会话记录仍可使用,平台会重复使用该记录;否则,平台会创建新记录。记录 ID 可能随请求一起提供,也可能来自已与互动关联的记录。如果请求中提供了记录 ID,平台还会添加一条评论,说明是重复使用了该记录还是创建了新记录。

查找或创建记录流程

更新记录

记录存在后,平台会发送根据您配置的模板构建的更新请求。如果更新端点设置为占位值,则会跳过更新。

更新记录流程

会后操作

会话结束后,系统可以运行多项独立操作,每项操作都由各自的事件触发:通话、聊天或邮件结束;提交评分;回答调查问卷;或会话后录音、转写内容或语音信息可用。文件上传遵循“上传文件”流程;评论和更新操作会写入 CRM,并等待记录存在。

会后操作流程

评论

评论可以通过完成、评分、调查问卷或文件上传操作发布。它需要一个 API 评论端点和一条现有记录,并会等待该记录存在。评论会以 HTML 或纯文本形式发布,具体取决于您的评论设置。

评论流程

上传文件流程

外部存储空间是按文件类型启用的。如果为某种文件类型启用了此设置,则该类型的文件会存储到外部存储空间;否则,文件会存储到 CRM。此外,您还可以通过单独的设置,在将文件发送到外部存储空间后,再将其上传到 CRM。只有在记录存在后,系统才会向 CRM 写入内容(文件附件或评论)。

上传文件流程

智能体适配器

自定义 CRM 提供了一种将适配器(界面微件)集成到 CRM 系统的通用方法。CRM 系统必须能够处理适配器在其中激活和触发的方式。

为了集成界面适配器,通常需要 CRM 软件或应用。我们已经为 Salesforce、Kustomer、Zendesk 等多种 CRM 软件提供了此功能。

iFrame

通过使用 iFrame 标记,可以将智能体适配器无缝集成到 CRM 或任何其他工具中。如需详细了解 HTML iframe 标记,请参阅 HTML iframe 标记。

不过,CRM 需要处理如何向用户呈现适配器。例如,它可能具有界面按钮,用于显示和隐藏适配器。此外,适配器还可以设计为可拖动,以便客服人员根据需要将其在屏幕上重新定位。以下示例演示了网址格式。

通话适配器: https://tenant.loc.ccaiplatform.com/agent/?type=call&from=custom

Chat 适配器: https://tenant.loc.ccaiplatform.com/agent/?type=chat&from=custom

iframe 模板

通话适配器: html <iframe src="https://tenant.loc.ccaiplatform.com/agent/?type=call&from=custom" allow="microphone; camera; geolocation" width="290" height="600"></iframe>

Chat 适配器: html <iframe src="https://tenant.loc.ccaiplatform.com/agent/?type=chat&from=custom" allow="microphone; camera; geolocation" width="450" height="590"></iframe>

嵌入适配器时,请注意以下事项:

  • allow 属性是必需属性。通话适配器使用 WebRTC,需要 microphone;屏幕共享和位置感知功能需要 camera 和 geolocation。如果权限未委托给 iframe,浏览器会静默屏蔽这些权限,并且客服人员无法接听电话。

  • 每个 iframe 嵌入一个适配器。每个适配器都保持自己的实时连接,因此通话和聊天适配器是两个独立的 iframe,并独立发布事件。

  • 适配器会根据其父窗口位于不同来源这一事实来检测其是否已嵌入。通过您自己的网域(而非 CCAI Platform 租户网域)提供托管页面。

网址参数

网址参数可用于向软件提供其他信息,例如互动类型(通话或聊天)、互动来源(自定义)以及其他相关详细信息。

如果列表中没有租户 CRM 设置,则 From 参数必须始终设置为 Custom。

类型

  • 致电
  • 聊天

发件人

  • 自定义(必须与租户 CRM 设置一致)。对于列表以外的任何 CRM,此值必须始终为 custom。如果未设置 CRM,您可以跳过此参数。

代理适配器中的事件

代理适配器会发布可由 CRM 系统挂钩的事件,然后 CRM 系统会处理对 CRM 的更新。为此,CRM 需要监听来自父窗口的帖子并读取帖子数据。根据这些数据,它可以触发相应操作,例如为特定会话 ID 打开工单标签页。

通话适配器和聊天适配器都有特定的事件,可用于增强 CRM 功能。

调用适配器

  • 已发起新通话
  • 消费者已加入
  • 通话内容隐去功能已启动
  • 通话内容隐去功能已结束
  • 结束通话

Chat 适配器

  • 发起新对话
  • 进行中的对话
  • Chat Inbound Message
  • Chat 出站消息
  • 表单已发送
  • 表单已填写
  • 结束聊天
  • 已关闭聊天

两个适配器

  • 代理登录
  • 屏幕共享会话已开始
  • 屏幕共享会话远程控制已更改
  • 屏幕共享会话完整设备已更改
  • 屏幕共享会话已结束
  • 转移
  • 已添加派对
  • 客服人员连接到会话
  • 代理退出
  • 已添加 Agent Assist
  • 虚拟任务助理已加入
  • 虚拟任务助理已退出
  • 已收到虚拟任务辅助会话变量
  • CRM 记录弹出式窗口
  • 打开第三方页面

消息格式

每个事件都会通过浏览器的 window.postMessage() API 从适配器 iframe 发送到其直接父窗口 (window.parent)。父窗口会将其作为 MessageEvent 接收。

该消息具有以下特征:

  • event.data 是 JSON 字符串,而不是对象。请务必在读取 JSON.parse(event.data) 之前调用它。由于页面上的其他脚本也可能将 postMessage() 与非 JSON 载荷搭配使用,因此请将解析操作封装在 try/catch 中。

  • 解析后的对象正好有两个顶级键:

    {
      "type": "<event type>",
      "data": { ... }
    }
    

    type 是事件类型中列出的字符串之一。data 包含事件数据中介绍的事件字段。所有事件专用字段都位于 data 内,绝不会位于顶层。

  • 空字段会被忽略。在发布之前,适配器会移除 data 中值为 null、undefined 或空字符串的所有字段。将每个字段都视为可能不存在,并且不要依赖于具有 null 值的键。

  • 适配器会发布目标源为 * 的消息,因此消息会传递到嵌入 iframe 的任何页面。适配器不会限制哪些人可以接收事件。您的监听器应根据租户的主机(例如 https://tenant.loc.ccaiplatform.com)检查 event.origin,并忽略来自任何其他来源的消息,这样同一页面上的其他 iframe 就无法伪造适配器事件。

  • type 值区分大小写,且大小写不统一。大多数为 Title_Case(New_Call、End_Chat);少数为小写(call_redaction_started、call_redaction_ended、agent_assist_added)或驼峰式大小写 (openThirdPartyPage)。请与本文档中的确切字符串进行比较。

  • 只有在适配器嵌入(其父窗口是其他窗口)时,系统才会发布事件。如果适配器作为顶级页面打开,则不会发布任何内容。

以下示例展示了应用这些规则的最小监听器:

// Replace with the origin of your tenant.
const ADAPTER_ORIGIN = 'https://tenant.loc.ccaiplatform.com'

window.addEventListener('message', (event) => {
  if (event.origin !== ADAPTER_ORIGIN) {
    return
  }

  let message
  try {
    message = JSON.parse(event.data)
  } catch (e) {
    // Not an agent adapter event; another script on the page posted it.
    return
  }

  const { type, data = {} } = message
  switch (type) {
    case 'New_Call':
      // data.call_id, data.agent_id, data.queue_id, ...
      break
    case 'New_Chat':
      // data.chat_id, data.agent_id, data.queue_id, ...
      break
    case 'CRM_Record_Pop':
      // data.recordUrl
      break
    default:
      // Ignore event types you don't handle; new types may be added over time.
      break
  }
}, false)

发送给智能体适配器的消息

通信大多是单向的(适配器到主机),但主机页面可以使用 postMessage() 向通话适配器发送一小组命令。这些消息是具有以下架构的普通对象(而非 JSON 字符串):

iframe.contentWindow.postMessage({
  channel: '<channel name>',
  eventType: '<event type>'
}, ADAPTER_ORIGIN)

api:redaction 渠道支持以下命令。它们用于从托管页面暂停和恢复录音,以便进行通话内容隐去。

eventType 说明
start_call_redaction 暂停录制当前通话,以开始隐去内容。
stop_call_redaction 恢复当前通话的录音,以停止隐去。

请注意以下几点:

  • 只有在为租户启用了通话内容隐去功能且有正在进行的通话时,系统才会执行这些命令。否则,适配器会记录消息已被忽略,并且不执行任何操作。

  • 当适配器对命令执行操作时,它会将匹配的 call_redaction_started 或 call_redaction_ended 事件发布回主机,以便您确认录制状态是否确实发生了变化。

  • 始终将租户源作为第二个参数传递给 postMessage(),而不是 *,这样,如果 iframe 被导航,命令就无法传递到其他页面。

  • 为了向后兼容,自定义 CRM 适配器仍接受具有 redact_call:start 和 redact_call:stop 事件类型的早期 crm:authority 渠道,但新的集成应使用 api:redaction。

如需了解详情,请参阅通话内容隐去。

事件数据

  • call_id:这是带有 IVR(交互式语音响应)的语音呼入电话的标识符。

  • chat_id:这是消息传递呼入电话(网页或移动聊天)的标识符。

  • cobrowse_session_id:这是屏幕共享会话的标识符。屏幕共享会话可以在通话或聊天会话中发起。

  • session_type:这是会话类型,例如语音、聊天或消息。

  • va_data_parameters:队列中配置的所有要发送到虚拟客服的变量。只有涉及虚拟客服的事件才需要此字段。可选。

  • session_variable:在载荷中发送到 CCAI Platform 的虚拟客服中的所有变量。可选。

  • custom_sip_headers:此设置可让来自传入 SIP 通话的自定义 SIP 标头显示在 POST 事件日志中。仅在使用自定义 SIP 标头时才需要。可选。

  • custom_data_secured:包含来自服务器的已签名自定义数据。 可选。

  • custom_data_not_secured:包含来自网页的未签名自定义数据。如需了解详情,请参阅聊天未签名自定义数据。可选。

代理 ID

  • agent_id:这是智能体的标识符。
  • from_agent_id:在将通话或聊天从一个代理路由到另一个代理时使用,用于指示发起代理。
  • to_agent_id:在将通话或聊天从一个客服人员转接到另一个客服人员时使用,用于指示目标客服人员。
  • agent_custom_id:这是用户个人资料中的代理 ID(如果已在个人资料中输入)。可选。
  • from_agent_custom_id:在将通话或聊天从一个代理转接到另一个代理时使用,用于指示发起代理。
  • to_agent_custom_id:在将通话或聊天从一个客服人员转接到另一个客服人员时使用,用于指示目标客服人员。
  • agent_email:这是代理的邮箱。
  • from_agent_email:在将通话或聊天从一个代理路由到另一个代理时使用,用于指示发起代理。
  • to_agent_email:在将通话或聊天从一个代理路由到另一个代理时使用,用于指示目标代理。

虚拟代理 ID

  • virtual_agent_id:这是分配给特定虚拟代理的 ID 号。

队列 ID

  • queue_id:这是 CCAI 平台队列的标识符,仅当通话源自队列时才存在。
  • from_queue_id:在将通话或聊天从一个队列转接到另一个队列时使用,用于指示发起队列。
  • to_queue_id:在将通话或聊天从一个队列路由到另一个队列时使用,用于指示目标队列。
  • queue_path:这是 CCAI 平台队列的路径,仅在通话源自队列时存在。
  • from_queue_path:在将通话或聊天从一个队列转接到另一个队列时使用,用于指示发起队列。
  • to_queue_path:在将通话或聊天从一个队列路由到另一个队列时使用,用于指示目标队列。

Campaign ID

  • campaign_id:CCAI Platform 广告系列 ID。仅当调用类型为广告系列调用时,才会包含这些字段。
  • campaign_name:CCAI Platform 宣传活动名称。仅当调用类型为广告系列调用时,才会包含这些字段。

消息

  • message:表示收到新消费者消息的事件,以及消息内容。

会话类型

  • session_type:CCAI Platform 会话类型。
  • cobrowse_session_remote_control:表示请求的远程控制屏幕共享会话的状态。值:off、requested、rejected、on。
  • cobrowse_session_full_device:表示完整设备屏幕共享会话的状态。值:off、requested、rejected、on。

参与者

  • type:参与者类型 - end_user;agent;(来自 /api/v1/calls 或 /api/v1/chats 响应的 participants.type)。

  • cobrowse_session_requested_by:指明谁发起了屏幕共享会话。 可能的值为 agent 或 end_user。

  • cobrowse_session_ended_by:指明是谁结束了屏幕共享会话。可能的值为 agent、end_user 或 api。

  • end_user_id:participants.end_user_id、/api/v1/calls 或 /api/v1/chats 响应。仅当 type 为 end_user 时,此字段才会显示。

互动/会话类型

通话类型

  • 语音入站:标准 PSTN 通话。
  • 语音入站(使用移动设备的 IVR):从移动 SDK 发起的后备 PSTN 通话。
  • 语音入站(移动设备):由消费者使用已安装的移动 SDK 发起。
  • 语音回拨(Web):从 Web SDK 发起。
  • 语音入站(API):使用 API 发起。
  • 语音预定(移动设备):使用已安装的移动 SDK 预定。
  • 语音预约(网页):使用已安装的 Web SDK 预约。
  • 语音出站:由客服人员通过拨号发起。
  • Voice Outbound (API):使用 API 发起的通话。
  • 语音广告系列:使用外拨拨号器(广告系列)发起。

对话类型

  • 即时通讯 (WhatsApp):使用 WhatsApp 发起。
  • 入站消息 (SMS)
  • 外发消息 (SMS)
  • Messaging Outbound(使用 API 发送短信)
  • Messaging (Web):使用已安装的 Web SDK 发起。
  • 消息(移动设备):使用已安装的移动 SDK 发起。

通话或聊天类型

  • 屏幕共享会话:由客服人员或最终用户在通话或聊天期间发起。

事件类型

以下是代理适配器发布的事件类型。type 列是邮件的 type 字段中显示的确切字符串(区分大小写)。

事件 type 适配器
代理登录 Agent_Login 两者
发起新通话 New_Call 致电
消费者加入 Consumer_Joined 致电
结束通话 End_Call 致电
已开始对通话内容进行隐去处理 call_redaction_started 致电
通话内容隐去功能已结束 call_redaction_ended 致电
发起新对话 New_Chat 聊天
结束聊天 End_Chat 聊天
活跃对话 Active_Chat 聊天
Chat 入站消息 Chat_Inbound_Message 聊天
Chat 出站消息 Chat_Outbound_Message 聊天
表单已发送 Form_Sent 聊天
已填写表单 Form_Completed 聊天
已关闭的对话 Dismissed_Chat 聊天
屏幕共享会话已开始 Cobrowse_Session_Started 两者
屏幕共享会话远程控制已更改 Cobrowse_Session_Remote_Control_Changed 两者
屏幕共享会话完整设备已更改 Cobrowse_Session_Full_Device_Changed 两者
屏幕共享会话已结束 Cobrowse_Session_Ended 两者
转移 Transfer_Call,Transfer_Chat 两者
已添加当事人 Party_Added 两者
客服人员连接到会话 Agent_Joined_Call,Agent_Joined_Chat 两者
代理退出 Agent_Logout 两者
已添加 Agent Assist agent_assist_added 两者
虚拟任务助理已加入 Task_VA_Joined 两者
虚拟任务助理已退出 Task_VA_Left 两者
收到的虚拟任务辅助会话变量 Task_VA_Variables_Received 两者
CRM 记录弹出式窗口 CRM_Record_Pop 两者
打开第三方页面 openThirdPartyPage 致电

您的监听器应忽略其无法识别的 type 值。随着时间的推移,可以添加新的事件类型,并且适配器还会发布不属于此协定的其他 CCAI Platform 界面(例如,当它托管在 CCAI Platform 代理桌面中时)的消息。

代理登录

当代理登录适配器时,会发生代理登录事件。

下面是一个 Agent_Login 事件示例:

{
  "type": "Agent_Login",
    "data": {
    "agent_id": 1,
    "agent_custom_id": "007",
    "agent_email": "Kim@example.com",
  }
}

以下是事件数据字段的说明:

  • agent_id:代理标识符

  • 可选:agent_custom_id:代理的自定义标识符(如果在代理的个人资料中输入了该标识符)。

  • agent_email:与代理账号关联的邮箱。

发起新通话

当客服人员接听电话时,系统会触发新的通话事件。此事件包含通话开始时间、处理通话的客服人员以及通话发起位置等信息。

下面是一个 New_Call 事件示例:

{
  "type": "New_Call",
  "data": {
    "agent_id": 1,
    "agent_custom_id": "007",
    "agent_email": "Kim@example.com",
    "queue_id": 8469,
    "queue_path": "Developers / Kim",
    "campaign_id": 1432,
    "campaign_name": "Survey Movie",
    "call_id": 103646,
    "session_type": "Voice Campaign (UJET)"
  }
}

以下是事件数据字段的说明:

  • agent_id:代理标识符

  • agent_custom_id:代理的自定义标识符(如果在代理的个人资料中输入了该标识符)。可选。

  • agent_email:与代理账号关联的邮箱

  • queue_id:发起调用的队列的标识符。当调用源自队列时,会包含此字段。可选。

  • queue_path:调用来源队列的路径。如果通话源自队列,则会包含此字段。可选。

  • campaign_id:广告系列的标识符。此字段包含在广告系列调用中。可选。

  • campaign_name:广告系列的名称。此字段包含在广告系列调用中。可选。

  • call_id:调用标识符

  • session_type:会话类型

  • virtual_agent_id:虚拟客服标识符。对于涉及虚拟客服的事件,此字段会包含在内。可选。

  • va_data_parameters:在队列中配置的要发送到虚拟客服的变量。对于涉及虚拟客服的事件,此字段会包含在内。可选。

  • session_variable:从虚拟客服发送到 CCAI Platform 的所有变量。可选。

  • custom_sip_headers:允许来自传入 SIP 通话的自定义会话发起协议 (SIP) 标头显示在 POST 事件日志中。如果使用自定义 SIP 标头,则会包含此字段。可选。

  • custom_data_secured:包含来自服务器的已签名自定义数据。可选。

  • custom_data_not_secured:包含来自网页的未签名自定义数据。如需了解详情,请参阅聊天未签名客户数据。可选。

消费者已加入

当消费者的记录被解析且包含列表广告系列管理器 (LCM) 键时,广告系列(出站拨号器)通话中会发生消费者加入事件。这样,宿主页面就可以在其余通话数据到达之前,在其自己的系统中查找拨打的联系人。此事件仅针对联系人具有 LCM 密钥的广告系列通话发布。

下面是一个 Consumer_Joined 事件示例:

{
  "type": "Consumer_Joined",
  "data": {
    "lcmKey": "acqueon:12345",
    "custom_sip_headers": {
      "X-Account-Id": "A-100"
    },
    "va_data_parameters": {
      "param1": "one"
    },
    "session_variable": {
      "key_one": "value"
    }
  }
}

以下是事件数据字段的说明:

  • lcmKey:所拨打联系人的列表广告系列经理键

  • custom_sip_headers:通话中的自定义 SIP 标头。如果使用自定义 SIP 标头,则会包含此字段。可选。

  • va_data_parameters:在队列中配置的要发送给虚拟客服的变量。可选。

  • session_variable:从虚拟客服发送到 Contact Center AI 平台的变量。可选。

通话内容隐去功能已启动

当通话隐去功能已启动且未录制时,会发生通话隐去开始事件。事件数据由处理通话的客服人员的 ID 和通话 ID 组成。

请注意,此事件的 type 为小写:call_redaction_started。

  • agent_id:处理通话的客服人员的 ID
  • call_id:通话的 ID

以下是“通话隐去已开始”事件的示例:

{
  "type": "call_redaction_started",
  "data": {
    "agent_id": 2896,
    "call_id": 97939
  }
}

通话内容隐去功能已停止

当通话隐去结束且录音恢复时,系统会触发通话隐去停止事件。此事件由处理通话的客服人员的 ID 和 call ID 组成。

请注意,此事件的 type 为小写:call_redaction_ended。

  • agent_id:处理通话的客服人员的 ID
  • call_id:调用的 ID

以下是通话隐去停止事件数据的示例:

{
  "type": "call_redaction_ended",
  "data": {
    "agent_id": 2896,
    "call_id": 97939
  }
}

结束通话

通话结束时,会发生通话结束事件。此事件包含通话结束时间、处理通话的客服人员以及通话发起位置等信息。

下面是一个 End_Call 事件示例:

{
  "type": "End_Call",
  "data": {
    "agent_id": 1,
    "agent_custom_id": "007",
    "agent_email": "Kim@example.com",
    "queue_id": 8469,
    "queue_path": "Developers / Kim",
    "campaign_id": 1432,
    "campaign_name": "Survey Movie",
    "call_id": 103646,
    "session_type": "Voice Campaign (UJET)"
  }
}

以下是事件数据字段的说明:

  • agent_id:代理标识符

  • agent_custom_id:代理的自定义标识符(如果在代理的个人资料中输入了该标识符)。可选。

  • agent_email:与代理账号关联的邮箱

  • queue_id:发起调用的队列的标识符。当调用源自队列时,会包含此字段。可选。

  • queue_path:调用来源队列的路径。如果通话源自队列,则会包含此字段。可选。

  • campaign_id:广告系列的标识符。此字段包含在广告系列调用中。可选。

  • campaign_name:广告系列的名称。此字段包含在广告系列调用中。可选。

  • call_id:调用标识符

  • session_type:会话类型

  • virtual_agent_id:虚拟客服标识符。对于涉及虚拟客服的事件,此字段会包含在内。可选。

  • va_data_parameters:在队列中配置的要发送到虚拟客服的变量。对于涉及虚拟客服的事件,此字段会包含在内。可选。

  • session_variable:从虚拟客服发送到 Contact Center AI 平台 的所有变量。可选。

  • custom_sip_headers:允许来自传入 SIP 通话的自定义会话发起协议 (SIP) 标头显示在 POST 事件日志中。如果使用自定义 SIP 标头,则会包含此字段。可选。

  • custom_data_secured:包含来自服务器的已签名自定义数据。可选。

  • custom_data_not_secured:包含来自网页的未签名自定义数据。如需了解详情,请参阅聊天未签名客户数据(可选)。可选。

发起新对话

当客服人员接听聊天会话时,会发生新的聊天事件。此事件指示对话开始的时间,并包含对话发起位置、处理对话的客服人员等信息。

以下是一个 New_chat 事件示例:

{
  "type": "New_Chat",
  "data": {
    "chat_id": 73522,
    "session_type": "messaging inbound (web chat)",
    "agent_id": 1,
    "agent_email": "ariel@example.com",
    "queue_id": 7678,
    "queue_path": "HB TEAM / Ariel"
  }
}

以下是事件数据字段的说明:

  • chat_id:对话标识符

  • session_type:会话类型

  • agent_id:代理标识符

  • agent_custom_id:代理的自定义标识符(如果在代理的个人资料中输入了该标识符)。可选。

  • agent_email:与代理账号关联的邮箱。

  • queue_id:发起调用的队列的标识符。当调用源自队列时,会包含此字段。可选。

  • queue_path:调用源自的队列的路径。如果来电源自队列,则会包含此字段。可选。

  • custom_data_secured:包含来自服务器的已签名自定义数据。可选。

  • custom_data_not_secured:包含来自网页的未签名自定义数据。如需了解详情,请参阅聊天未签名客户数据(可选)。可选。

结束聊天

聊天会话结束时,会发生聊天结束事件。此事件指示聊天结束的时间,并包含诸如哪个客服人员处理了聊天、聊天源自何处等信息。

以下是一个 End_Chat 事件示例:

{
  "type": "End_Chat",
  "data": {
    "chat_id": 73522,
    "session_type": "Messaging Inbound (Web Chat)",
    "agent_id": 1,
    "agent_email": "ariel@example.com",
    "queue_id": null,
    "queue_path": null,
    "agent_custom_id": null
  }
}

以下是事件数据字段的说明:

  • chat_id:对话标识符。

  • session_type:会话类型。

  • agent_id:代理标识符。

  • agent_custom_id:代理的自定义标识符(如果在代理的个人资料中输入了该标识符)。可选。

  • agent_email:与代理账号关联的邮箱。

  • queue_id:发起调用的队列的标识符。当调用源自队列时,会包含此字段。可选。

  • queue_path:调用来源队列的路径。如果通话源自队列,则会包含此字段。可选。

  • custom_data_secured:包含来自服务器的已签名自定义数据。可选。

  • custom_data_not_secured:包含来自网页的未签名自定义数据。如需了解详情,请参阅聊天未签名客户数据(可选)。可选。

进行中的对话

当客服人员切换到聊天适配器中的聊天标签页时,会发生活跃聊天事件。

下面是一个 Active_Chat 事件示例:

{
  "type": "Active_Chat",
  "data": {
    "chat_id": 73521,
    "session_type": "messaging inbound (web chat)",
    "agent_id": 1,
    "agent_email": "ariel@example.com",
    "queue_id": 7678,
    "queue_path": "HB TEAM / Ariel"
  }
}

以下是事件数据字段的说明:

  • chat_id:对话标识符

  • session_type:会话类型

  • agent_id:代理标识符

  • agent_custom_id:代理的自定义标识符(如果在代理的个人资料中输入了该标识符)。可选。

  • agent_email:与代理账号关联的邮箱。

  • queue_id:发起调用的队列的标识符。当调用源自队列时,会包含此字段。可选。

  • queue_path:调用来源队列的路径。如果通话源自队列,则会包含此字段。可选。

  • custom_data_secured:包含来自服务器的已签名自定义数据。可选。

  • custom_data_not_secured:包含来自网页的未签名自定义数据。如需了解详情,请参阅聊天未签名客户数据(可选)。可选。

Chat 入站消息

聊天入站消息事件表示收到了新的客户消息。 其中包含消息内容。

系统会报告聊天入站消息事件的以下字段的数据:

  • chat_id:标识对话会话

  • session_type:表示正在创建的会话类型,例如通过网页聊天进行的入站消息传递

  • agent_id:标识处理聊天会话的客服人员

  • agent_custom_id:仅当代理的个人资料包含自定义 ID 时,此字段才会存在。可选。

  • agent_email:处理聊天会话的客服人员的邮箱。仅当聊天源自队列时,才会包含此字段。可选。

  • queue_id:发起聊天会话的队列的 ID。仅当聊天源自队列时,才会包含此字段。

  • queue_path:聊天会话源自的队列的路径。仅当聊天源自队列时,才会包含此字段。

  • message:表示收到新消费者消息的事件,以及消息内容

  • custom_data_secured:允许传输安全的 SDK 自定义数据。 可选。

  • custom_data_not_secured:允许传输不安全的 SDK 自定义数据。可选。

下面是一个 Chat_Inbound_Message 事件示例:

{
  "type": "Chat_Inbound_Message",
  "data": {
    "chat_id": 73522,
    "session_type": "messaging inbound (web chat)",
    "agent_id": 1,
    "agent_email": "ariel@example.com",
    "queue_id": 7678,
    "queue_path": "HB TEAM / Ariel",
    "message" : "Can you help me with my order tracking number?"
  }
}

Chat 出站消息

收到新的消费者消息时,会发生聊天出站消息事件。 其中包含消息内容。

系统会报告“Chat 外发消息”事件的以下字段的数据:

  • chat_id:标识对话会话

  • session_type:表示正在创建的会话类型,例如通过网页聊天进行的入站消息传递

  • agent_id:标识处理聊天会话的客服人员

  • agent_custom_id:仅当代理的个人资料具有自定义 ID 时,才会包含此字段。可选。

  • agent_email:处理聊天会话的客服人员的邮箱。仅当聊天源自队列时,才会包含此字段。可选。

  • queue_id:发起聊天会话的队列的 ID。仅当聊天源自队列时,才会包含此字段。

  • queue_path:聊天会话源自的队列的路径。仅当聊天源自队列时,才会包含此字段。

  • message:事件表示收到了新的消费者消息,以及消息内容

  • custom_data_secured:允许传输安全的 SDK 自定义数据。 可选。

  • custom_data_not_secured:允许传输不安全的 SDK 自定义数据。可选。

下面是一个 Chat_Outbound_Message 事件示例:

{
  "type": "Chat_Outbound_Message",
  "data": {
    "chat_id": 73522,
    "session_type": "messaging inbound (web chat)",
    "agent_id": 1,
    "agent_email": "ariel@example.com",
    "queue_id": 7678,
    "queue_path": "HB TEAM / Ariel",
    "message" : "Please give me a moment to look up your account information"
  }
}

表单已发送

当在聊天会话期间向消费者发送表单时,系统会触发“表单已发送”事件。当聊天收到相应的系统消息时,聊天适配器会发布这两个事件。

下面是一个 Form_Sent 事件示例:

{
  "type": "Form_Sent",
  "data": {
    "chat_id": 73522,
    "session_type": "Messaging Inbound (Web Chat)",
    "agent_id": 1,
    "agent_custom_id": "007",
    "agent_email": "Kim@example.com",
    "end_user_id": 5512,
    "form_external_id": "payment-details",
    "form_name": "Payment details",
    "form_type": "secure",
    "queue_id": 7678,
    "queue_path": "HB TEAM / Kim",
    "queue_language_id": "en",
    "timestamp": 1727853575000
  }
}

以下是事件数据字段的说明:

  • chat_id:对话标识符

  • session_type:会话类型

  • agent_id:代理标识符

  • agent_custom_id:代理的自定义标识符(如果在代理的个人资料中输入了该标识符)。可选。

  • agent_email:与代理账号关联的邮箱

  • end_user_id:聊天中消费者的标识符。可选。

  • form_external_id:已发送表单的外部标识符。 可选。

  • form_name:已发送表单的名称。可选。

  • form_type:所发送表单的类型。可选。

  • queue_id:发起聊天的队列的标识符。 如果聊天源自队列,则会包含此字段。可选。

  • queue_path:发起聊天的队列的路径。如果聊天源自队列,则会包含此字段。可选。

  • queue_language_id:队列的语言。可选。

  • timestamp:事件发布的时间,以自 Unix 纪元以来的毫秒数表示

  • va_data_parameters:在队列中配置的要发送给虚拟客服的变量。可选。

  • session_variable:从虚拟客服发送到 Contact Center AI 平台 的所有变量。可选。

  • custom_data_secured:包含来自服务器的已签名自定义数据。可选。

  • custom_data_not_secured:包含来自网 页的未签名自定义数据。如需了解详情,请参阅聊天未签名客户数据。可选。

表单已填写

当消费者提交在聊天会话期间发送的表单时,就会发生表单填写完成事件。事件数据包含与表单已发送事件相同的字段。

下面是一个 Form_Completed 事件示例:

{
  "type": "Form_Completed",
  "data": {
    "chat_id": 73522,
    "session_type": "Messaging Inbound (Web Chat)",
    "agent_id": 1,
    "agent_custom_id": "007",
    "agent_email": "Kim@example.com",
    "end_user_id": 5512,
    "form_external_id": "payment-details",
    "form_name": "Payment details",
    "form_type": "secure",
    "queue_id": 7678,
    "queue_path": "HB TEAM / Kim",
    "queue_language_id": "en",
    "timestamp": 1727853601000
  }
}

已关闭聊天

当客服人员关闭聊天适配器中的聊天标签页时,系统会触发关闭聊天事件。

下面是一个 Dismissed_Chat 事件示例:

{
  "type":"Dismissed_Chat",
  "data":{"chat_id":73522,
    "session_type":"Messaging Inbound (Web Chat)",
    "agent_id":1,
    "agent_email":"ariel@example.com"
  }
}

以下是事件数据字段的说明:

  • chat_id:对话标识符

  • session_type:会话类型

  • agent_id:代理标识符

  • agent_custom_id:代理的自定义标识符(如果在代理的个人资料中输入了该标识符)。可选。

  • agent_email:与代理账号关联的邮箱

  • queue_id:发起调用的队列的标识符。当调用源自队列时,会包含此字段。可选。

  • queue_path:调用来源队列的路径。如果通话源自队列,则会包含此字段。可选。

  • custom_data_secured:包含来自服务器的已签名自定义数据。可选。

  • custom_data_not_secured:包含来自网 页的未签名自定义数据。如需了解详情,请参阅聊天未签名客户数据(可选)。可选。

屏幕共享会话已开始

当客服人员或最终用户启动屏幕共享会话时,系统会触发屏幕共享会话已启动事件。您可以在通话或聊天期间启动屏幕共享会话。如需了解详情,请参阅屏幕共享。

以下是屏幕共享会话开始事件的 JSON 对象示例:

{
  "type": "Cobrowse_Session_Started",
  "data": {
    "agent_id": 5,
    "chat_id": 791,
    "cobrowse_session_id": "Y1zYY6XIYX4oapqpEz3qHw",
    "cobrowse_session_requested_by": "agent",
    "cobrowse_session_remote_control": "off",
    "cobrowse_session_full_device": "off"
  }
}

以下是事件数据字段的说明:

  • agent_id:代理标识符。

  • call_id:IVR(交互式语音应答)渠道上呼入电话的标识符。如果屏幕共享会话是在通话期间启动的,则会包含此字段。

  • chat_id:网页或移动渠道上入站聊天的标识符。如果屏幕共享会话是在聊天期间启动的,则会包含此字段。

  • cobrowse_session_id:屏幕共享会话的标识符。

  • cobrowse_session_requested_by:指明谁发起了屏幕共享会话。值为 agent 和 end-user。

  • cobrowse_session_remote_control:表示远程控制屏幕共享会话的状态。值为 on、rejected、requested 和 off。

  • cobrowse_session_full_device:指示完整设备屏幕共享会话的状态。值为 on、rejected、requested 和 off。

  • custom_data_secured:包含来自服务器的已签名自定义数据。可选。

  • custom_data_not_secured:包含来自网 页的未签名自定义数据。如需了解详情,请参阅聊天未签名客户数据(可选)。可选。

屏幕共享会话远程控制已更改

当远程控制屏幕共享会话的状态发生变化时,系统会触发屏幕共享会话远程控制更改事件。此事件表示远程控制屏幕共享会话的状态。如需了解详情,请参阅 屏幕共享。

以下是 Cobrowse_Session_Remote_Control_Changed 事件的 JSON 对象示例:

{
  "type": "Cobrowse_Session_Remote_Control_Changed",
  "data": {
    "agent_id": 5,
    "chat_id": 791,
    "cobrowse_session_id": "Y1zYY6XIYX4oapqpEz3qHw",
    "cobrowse_session_remote_control": "requested"
  }
}

以下是事件数据字段的说明:

  • agent_id:代理标识符。

  • call_id:IVR(交互式语音应答)渠道上呼入电话的标识符。如果屏幕共享会话是在通话期间启动的,则会包含此字段。

  • chat_id:网页或移动渠道上入站聊天的标识符。如果屏幕共享会话是在聊天期间启动的,则会包含此字段。

  • cobrowse_session_id:屏幕共享会话的标识符。

  • cobrowse_session_remote_control:表示远程控制屏幕共享会话的状态。值为 on、rejected、requested 和 off。

  • custom_data_secured:包含来自服务器的已签名自定义数据。可选。

  • custom_data_not_secured:包含来自网 页的未签名自定义数据。如需了解详情,请参阅聊天未签名客户数据(可选)。可选。

屏幕共享会话完整设备已更改

当整个设备屏幕共享会话的状态发生变化时,系统会触发整个设备屏幕共享会话更改事件。此事件表示完整设备屏幕共享会话的状态。如需了解详情,请参阅屏幕共享。

下面是一个 Cobrowse_Session_Full_Device_Changed 事件示例:

{
  "type": "Cobrowse_Session_Full_Device_Changed",
  "data": {
    "agent_id": 5,
    "cobrowse_session_id": "9-Kshrag-gn6ZSuIxoMtWQ",
    "cobrowse_session_full_device": "rejected"
  }
}

以下是事件数据字段的说明:

  • agent_id:代理标识符。

  • call_id:IVR(交互式语音应答)渠道上呼入电话的标识符。如果屏幕共享会话是在通话期间启动的,则会包含此字段。

  • chat_id:网页或移动渠道上入站聊天的标识符。如果屏幕共享会话是在聊天期间启动的,则会包含此字段。

  • Cobrowse_session_id:屏幕共享会话的标识符。

  • Cobrowse_session_full_device:表示完整设备屏幕共享会话的状态。值为 on、rejected、requested 和 off。

  • custom_data_secured:包含来自服务器的已签名自定义数据。可选。

  • custom_data_not_secured:包含来自网页的未签名自定义数据。如需了解详情,请参阅聊天未签名客户数据(可选)。可选。

屏幕共享会话已结束

当坐席、最终用户或 API 结束屏幕共享会话时,系统会触发屏幕共享会话结束事件。如需了解详情,请参阅配置屏幕共享。

下面是一个 Cobrowse_Session_Ended 事件示例:

{
  "type": "Cobrowse_Session_Ended",
  "data": {
    "agent_id": 5,
    "cobrowse_session_id": "9-Kshrag-gn6ZSuIxoMtWQ",
    "cobrowse_session_requested_by": "end_user",
    "cobrowse_session_ended_by": "agent",
    "cobrowse_session_remote_control": "on",
    "cobrowse_session_full_device": "rejected"
  }
}

以下是事件数据字段的说明:

  • agent_id:代理标识符。

  • call_id:IVR(交互式语音应答)渠道上呼入电话的标识符。如果屏幕共享会话是在通话期间启动的,则会包含此字段。

  • chat_id:网页或移动渠道上入站聊天的标识符。如果屏幕共享会话是在聊天期间启动的,则会包含此字段。

  • cobrowse_session_id:屏幕共享会话的标识符。

  • cobrowse_session_ended_by:指明是谁结束了屏幕共享会话。值包括 agent、end-user 和 api。

  • cobrowse_session_remote_control:表示远程控制屏幕共享会话的状态。值为 on、rejected、requested 和 off。

  • cobrowse_session_full_device:表示完整设备屏幕共享会话的状态。值为 on、rejected、requested 和 off。

  • custom_data_secured:包含来自服务器的已签名自定义数据。可选。

  • custom_data_not_secured:包含来自网页的未签名自定义数据。如需了解详情,请参阅聊天未签名客户数据(可选)。可选。

转移

当通话或聊天被转接时,会发生转接事件。它可以指温暖转接或冷转接。

以下事件字段是转移事件的一部分。

  • chat_id 或 call_id:标识通话或聊天会话

  • session_type:表示正在创建的会话类型,例如通过网页聊天进行的入站消息会话

  • campaign_id:广告系列的 ID。仅当通话类型为广告系列通话时,此字段才会显示。可选。

  • campaign_name:广告系列的名称。仅当通话类型为广告系列通话时,此字段才会显示。可选。

  • from_agent_id:在将通话或聊天从一个客服人员转接到另一个客服人员时使用,用于指示发起转接的客服人员

  • from_agent_custom_id:在将通话或聊天从一个客服人员转接到另一个客服人员时使用,用于指明发起转接的客服人员。可选。

  • from_agent_email:在将通话或聊天从一个客服人员转接到另一个客服人员时使用,用于指示发起转接的客服人员

  • to_agent_id:在将通话或聊天从一个客服人员转接到另一个客服人员时使用,用于指示目标客服人员

  • to_agent_custom_id:在将通话或聊天从一个客服人员转接到另一个客服人员时使用,用于指示目标客服人员。可选。

  • to_agent_email:在将通话或聊天从一个代理路由到另一个代理时使用,用于指示目标代理

  • from_queue_id:在将通话或聊天从一个队列路由到另一个队列时使用,用于指示发起队列

  • from_queue_path:在将通话或聊天从一个队列路由到另一个队列时使用,用于指示发起队列

  • to_queue_id:在将通话或聊天从一个队列转接到另一个队列时使用,用于指明目标队列

  • to_queue_path:在将通话或聊天从一个队列转接到另一个队列时使用,用于指示目标队列

  • virtual_agent_id:分配给虚拟客服的 ID。可选。

  • va_data_parameters:队列中配置的所有要发送到虚拟客服的变量。只有涉及虚拟客服的事件才需要此字段。 可选。

  • (session_variable:从虚拟客服发送到 CCAI Platform 的载荷中的所有变量。可选。

  • custom_sip_headers:使来自传入 SIP 通话的自定义 SIP 标头显示在 POST 事件日志中。仅在使用自定义 SIP 标头时才需要。可选。

  • custom_data_secured:允许传输安全的 SDK 自定义数据。 可选。

  • custom_data_not_secured:允许传输不安全的 SDK 自定义数据。可选。

以下是转移事件示例:

{
  "type": "Transfer_Chat",
  "data": {
    "chat_id": 103646,
    "session_type": "Messaging Inbound (SMS)",
    "campaign_id": 1432,
    "campaign_name": "Survey Movie",
    "from_agent_id": 1,
    "from_agent_custom_id": "007",
    "from_agent_email": "Ira@example.com",
    "to_agent_id" : 5
    "to_agent_custom_id": "100"
    "to_agent_email" : "ariel@example.com"
    "from_queue_id": 8469,
    "from_queue_path": "Developers / Ariel",
    "to_queue_id" : 1234,
    "to_queue_path" : "Schemes / Auric"
  }
}

已添加派对

“添加了参与方”事件是指任何转账。可以是通话转接,也可以是聊天转接。

“已添加派对”事件包含以下数据:

  • chat_id 或 call_id:标识通话或聊天会话

  • session_type:表示正在创建的会话类型,例如通过网页聊天进行的入站消息会话

  • agent_custom_id:仅当代理的个人资料包含自定义 ID 时,此字段才会存在。可选。

  • agent_email:处理通话或聊天会话的客服人员的邮箱。

  • queue_id:发起聊天会话的队列的 ID。仅当聊天源自队列时,才会包含此字段。可选。

  • queue_path:聊天会话源自的队列的路径。仅当聊天源自队列时,才会包含此字段。可选。

  • campaign_id:广告系列的 ID。仅当调用类型为广告系列调用时,才会包含此字段。可选。

  • campaign_name:广告系列的名称。仅当调用类型为广告系列调用时,才会包含此字段。可选。

  • type:参与者类型,例如 end_user 或 agent。此字段作为 /api/v1/calls 或 /api/v1/chats 响应的 participants.type 的一部分返回

  • end_user_id:end_user_id。此字段作为 /api/v1/calls 或 /api/v1/chats 响应的一部分返回。此字段仅适用于从一个代理路由到另一个代理的最终用户通话或聊天,用于指示目标代理。可选。

  • virtual_agent_id:分配给虚拟客服的标识符。可选。

  • va_data_parameters:队列中配置的所有要发送到虚拟客服的变量。只有涉及虚拟客服的事件才需要此字段。 可选。

  • session_variable:虚拟客服中在载荷中发送到 CCAI Platform 的所有变量。可选。

  • custom_sip_headers:此设置可让来自传入 SIP 通话的自定义 SIP 标头显示在 POST 事件日志中。仅在使用自定义 SIP 标头时才需要。可选。

  • custom_data_secured:允许传输安全的 SDK 自定义数据。 可选。

  • custom_data_not_secured:允许传输不安全的 SDK 自定义数据。可选。

以下是 Party_Added 事件的示例。

{
  "type": "Party_Added",
  "data": {
    "chat_id": 103646,
    "session_type": "Messaging Inbound (SMS)",
    "campaign_id": 1432,
    "campaign_name": "Survey Movie",
    "agent_id": 1,
    "agent_custom_id": "007",
    "agent_email": "ariel@example.com",
    "queue_id": 8469,
    "queue_path": "Developers / Ariel",
    "type" : "agent"
  }
}

客服人员连接到会话

当客服人员连接到会话时,会发生客服人员连接到会话事件。事件分为两种类型。类型取决于它是通话还是聊天。

以下事件字段是“代理连接到会话”事件的一部分。

  • agent_id:标识处理通话或聊天会话的客服人员。

  • agent_email:处理通话或聊天会话的客服人员的邮箱。

  • agent_custom_id:仅当代理的个人资料包含自定义 ID 时,此字段才会存在。可选。

  • chat_id 或 call_id:标识通话或聊天会话。

  • virtual_agent_id:分配给特定虚拟客服的 ID。可选。

  • campaign_id:广告系列的 ID。仅当调用类型为广告系列调用时,才会包含此字段。可选。

  • campaign_name:广告系列的名称。仅当调用类型为广告系列调用时,才会包含此字段。可选。

  • queue_id:发起聊天会话的队列的 ID。仅当聊天源自队列时,才会包含此字段。可选。

  • queue_path:聊天会话源自的队列的路径。仅当聊天源自队列时,才会包含此字段。可选。

  • session_type:表示正在创建的会话类型,例如通过网络聊天进行的入站消息。

  • virtual_agent_id:分配给虚拟客服的 ID。可选。

  • va_data_parameters:队列中配置的所有要发送到虚拟客服的变量。只有涉及虚拟客服的事件才需要此字段。可选。

  • session_variable:虚拟客服中在载荷中发送到 CCAI Platform 的所有变量。可选。

  • custom_sip_headers:此设置可让来自传入 SIP 通话的自定义 SIP 标头显示在 POST 事件日志中。仅在使用自定义 SIP 标头时才需要。可选。

  • custom_data_secured:允许传输安全的 SDK 自定义数据。 可选。

  • custom_data_not_secured:允许传输不安全的 SDK 自定义数据。可选。

以下是 Agent_Joined_Chat 事件数据的示例:

{
  "type": "Agent_Joined_Chat",
  "data": {
    "chat_id": 103646,
    "campaign_id": 1432,
    "campaign_name": "Survey Movie",
    "agent_id": 1,
    "agent_custom_id": "007",
    "agent_email": "ariel@example.com",
    "queue_id": 8469,
    "queue_path": "Developers / Ariel",
    "session_type": "Messaging Inbound (SMS)",
  }
}

代理退出

当客服人员退出客服人员适配器时,会发生客服人员退出事件。

以下事件字段是 Agent_Logout 事件的一部分。

  • agent_id:登录的代理的标识符

  • 代理账号关联的邮箱:agent_email

  • agent_custom_id:代理的自定义 ID(如果在代理的个人资料中输入了该 ID)。可选。

下面是一个 Agent_Logout 事件示例:

{
  "type": "Agent_Logout",
  "data": {
    "agent_id": 1,
    "agent_custom_id": "007",
    "agent_email": "ariel@example.com",
  }
}

已添加 Agent Assist

当客服人员在通话或聊天会话期间激活 Agent Assist 时,会发生 Agent Assist 添加事件。

请注意有关此事件的以下事项:

  • 此事件的 type 为小写:agent_assist_added。

  • 时间戳字段名为 Timestamp(大写 T),是从 Unix 纪元开始计算的毫秒数。

下面是一个 agent_assist_added 事件示例:

{
  "type": "agent_assist_added",
  "data": {
    "conversation_id": "12345",
    "queue_id": 65,
    "agent_id": 1,
    "session_id": "78534G4RT4284",
    "queue_language_id": "en",
    "Timestamp": 1727853575000
  }
}

以下是事件字段:

  • conversation_id:对话标识符。当会话使用对话配置文件时,系统会包含此字段。可选。

  • queue_id:队列标识符。可选。

  • agent_id:代理标识符

  • session_id:会话标识符。可选。

  • queue_language_id:队列的语言。可选。

  • Timestamp:事件发布的时间,以自 Unix 纪元以来的毫秒数表示

虚拟任务助理已加入

当虚拟任务助理 (VTA) 加入通话或聊天会话时,会发生虚拟任务助理加入事件。

下面是一个 Task_VA_Joined 事件示例:

{
  "type": "Task_VA_Joined",
  "data": {
    "chat_id": 103646,
    "campaign_id": 1432,
    "campaign_name": "Survey Movie",
    "virtual_agent_id": 1,
    "virtual_agent_name": "Order status assistant",
    "participant_id": 1,
    "queue_id": 8469,
    "queue_path": "Developers / Kim",
    "queue_language_id": "en",
    "session_type": "Messaging Inbound (SMS)",
    "conversation_id": "12345",
    "session_id": "78534G4RT4284",
    "timestamp": 1727853575000,
    "data_parameters": {
      "param1": "one",
      "param2": "two"
    }
  }
}

以下是事件字段:

  • call_id 或 chat_id:通话或聊天标识符

  • campaign_id:广告系列的标识符。此字段包含在广告系列调用中。可选。

  • campaign_name:广告系列的名称。此字段包含在广告系列调用中。可选。

  • virtual_agent_id:VTA 的标识符

  • virtual_agent_name:在 CCAI Platform 门户中配置的 VTA 的名称

  • participant_id:会话中 VTA 的参与者标识符

  • queue_id:会话源自的队列的标识符。可选。

  • queue_path:会话源自的队列的路径。可选。

  • queue_language_id:队列的语言。可选。

  • session_type:会话类型

  • conversation_id:对话标识符。当会话使用对话配置文件时,系统会包含此字段。可选。

  • session_id:会话标识符。可选。

  • timestamp:事件发布的时间,以自 Unix 纪元以来的毫秒数表示

  • data_parameters:在 CCAI 平台门户中配置并发送到 VTA 的变量。可选。

虚拟任务助理已退出

当 VTA 离开会话时,会发生“虚拟任务助理已离开”事件。除了虚拟任务助理已加入事件的字段之外,它还包含 VTA 会话结束的原因以及 VTA 捕获的会话变量。

下面是一个 Task_VA_Left 事件示例:

{
  "type": "Task_VA_Left",
  "data": {
    "chat_id": 103646,
    "virtual_agent_id": 1,
    "virtual_agent_name": "Order status assistant",
    "participant_id": 1,
    "queue_id": 8469,
    "queue_path": "Developers / Kim",
    "queue_language_id": "en",
    "session_type": "Messaging Inbound (SMS)",
    "conversation_id": "12345",
    "session_id": "78534G4RT4284",
    "timestamp": 1727853600000,
    "finish_reason": "Task VA completed",
    "data_parameters": {
      "param1": "one"
    },
    "captured_variables": [
      {
        "intent_name": null,
        "variables": {
          "order_number": "A-100"
        },
        "captured_at": "2024-11-15 16:46:31 UTC",
        "timestamp": 1727853590000
      }
    ]
  }
}

其他事件字段包括:

  • finish_reason:VTA 会话结束的原因

  • captured_variables:VTA 捕获的会话变量,每个变量都包含捕获它们的 intent 以及捕获时间。可选。

已收到虚拟任务辅助会话变量

每当 VTA 在会话期间发送自定义会话变量载荷时,都会发生虚拟任务辅助会话变量接收事件。该事件具有与虚拟任务辅助离开事件相同的字段(finish_reason 除外),并且 captured_variables 包含到目前为止收到的变量。

下面是一个 Task_VA_Variables_Received 事件示例:

{
  "type": "Task_VA_Variables_Received",
  "data": {
    "chat_id": 103646,
    "virtual_agent_id": 1,
    "virtual_agent_name": "Order status assistant",
    "participant_id": 1,
    "queue_id": 8469,
    "queue_path": "Developers / Kim",
    "queue_language_id": "en",
    "session_type": "Messaging Inbound (SMS)",
    "conversation_id": "12345",
    "session_id": "78534G4RT4284",
    "timestamp": 1727853590000,
    "data_parameters": {
      "param1": "one"
    },
    "captured_variables": [
      {
        "intent_name": null,
        "variables": {
          "order_number": "A-100"
        },
        "captured_at": "2024-11-15 16:46:31 UTC",
        "timestamp": 1727853590000
      }
    ]
  }
}

仅包含虚拟客服自定义会话变量载荷中 capture_type 包含 event 的变量,并排除 invisible_to_adapter_events 中列出的键。

后台屏幕弹窗

借助屏幕弹出功能,客服人员可以在后台执行 CRM 屏幕弹出操作,这意味着客户信息会显示在客服人员的屏幕上,而无需客服人员执行任何操作。这能为消费者提供更顺畅的体验,并缩短客服人员的处理时间。

CRM 记录弹出式窗口

事件 CRM_Record_Pop 是一个服务器端事件,会在需要弹出工单时触发。此事件包含一个名为 recordUrl 的参数,其中包含 CRM 记录的网址,如果您使用的是嵌入式适配器,则可以通过订阅 POST 事件来执行屏幕弹出。

下面是一个 CRM_Record_Pop 事件示例:

{
  "type": "CRM_Record_Pop",
  "data": {
    "recordUrl": "https://crm.example.com/tickets/4711"
  }
}

该事件只有一个字段:

  • recordUrl:要显示的 CRM 记录的网址

为此,以下示例演示了如何添加事件监听器,以监听从其他框架或窗口发送的消息。此代码段旨在实现不同框架或窗口之间的通信,并允许根据收到的消息动态更新 iframe 中显示的内容。

// Replace with the origin of your tenant.
const ADAPTER_ORIGIN = 'https://tenant.loc.ccaiplatform.com'

// name is the html property of the iframe that shows the CRM record
const iframeTarget = document.querySelector('iframe[name="target_iframe_adapter"]')

// example usage of add event listener
// https://developer.mozilla.org/en-US/docs/Web/API/EventTarget/addEventListener
window.addEventListener('message', (e) => {
  // Only accept events posted by the agent adapter.
  if (e.origin !== ADAPTER_ORIGIN) {
    return
  }

  let message
  try {
    message = JSON.parse(e.data)
  } catch (err) {
    // Not an agent adapter event.
    return
  }

  const { type, data = {} } = message
  console.log('EventListener: ', type)

  switch (type) {
    case 'CRM_Record_Pop': {
      const recordUrl = data.recordUrl
      if (!recordUrl) {
        return
      }
      console.log(`Opening recordUrl in iframe ${iframeTarget.getAttribute('name')}`)

      // changing an iframe target to the record URL pop
      iframeTarget.src = recordUrl
      break
    }
    case 'New_Chat':
      console.log('Chat started...')
      // handling here for New_Chat events
      break
    case 'End_Chat':
      console.log('Chat ended...')
      // handling here for End_Chat events
      break
    default:
      // code handling for other types
      break
  }
}, false)

打开第三方页面

当通话包含第三方键(例如,广告系列通话中的列表广告系列管理工具键)且适配器即将打开匹配的第三方页面时,通话适配器会发布 openThirdPartyPage 事件。如果您使用的是嵌入式适配器,则可以订阅此事件,以便在您自己的界面中打开该页面。

下面是一个 openThirdPartyPage 事件示例:

{
  "type": "openThirdPartyPage",
  "data": {
    "thirdPartyKey": "acqueon:12345",
    "callId": 103646
  }
}

以下是事件字段:

  • thirdPartyKey:与调用关联的第三方密钥

  • callId:调用标识符