云服务器内容精选

  • 集成步骤 轻量级WEB聊天控件可以快速高效的集成到您的页面,请您根据图1进行集成开发。 图1 集成开发步骤 完成开发前资源准备,获取登录信息,配置在线客服功能,请参见开发前准备。 开发token生成机制与token认证接口,提供给云客服。云客服在鉴权通过后,会将Token发回给第三方系统,由第三方系统确认是否为本系统发的请求,请参见开发token生成机制与认证验证接口。 华为方使用HTTPS传输协议确保信息传输通道安全,请第三方确保开发的鉴权功能具备“口令复杂度校验”、“防暴力破解”、“防DOS攻击”等安全防护能力。 引入相关依赖框架,构造请求参数请求thirdPartyClient.js和newThirdPartyClient.js ,将Token信息、租户ID、企业侧的用户ID、用户名称等信息返回云客服,请求鉴权,鉴权通过后可实现云客服网页聊天能力的轻量级接入,请参见开发集成页面。 测试与验证WEB聊天控件功能,通过客户端窗口发起在线聊天检查与座席聊天功能,请参见测试与验证。 父主题: 集成轻量级WEB聊天控件(引入Token认证方式)
  • 解决方法 跨域问题,是因为集成方的网站做了安全限制,不允许请求非本域提供的资源造成的。可通过使用负载均衡应用(如Nginx)的反向代理来解决。 图1 地址在负载均衡应用上的映射原理 即第三方页面使用JS调用时,调用本地域名下的一个服务,该服务放通到云客服的域名地址手上。 由于云客服只有识别到service-cloud,才会识别该请求,因此第三方页面的请求地址必须包含service-cloud。 以Nginx为例,整体配置要点如下: 在nginx.conf文件中添加首层服务地址,如下所示。 location /demo/ { proxy_set_header Host $host; set $Real $proxy_add_x_forwarded_for; if ($Real ~ (\d+)\.(\d+)\.(\d+)\.(\d+)\,(.*)){ set $Real $1.$2.$3.$4; } proxy_set_header X-Real-IP $Real; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; proxy_pass https://servicestage.besclouds.com/; } demo为样例,集成方可根据需要自行定义。 servicestage.besclouds.com请以云客服提供的地址为准。 location /service-cloud/ { proxy_set_header X-Real-IP $remote_addr; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; proxy_request_buffering off; proxy_pass https://servicestage.besclouds.com/service-cloud; } 在开发集成页面中采用如下地址进行JS请求,其中location.protocol请使用集成方的域名+上一步配置的服务名(例如demo)。 const $ContextPath = location.protocol + "/service-cloud" let serviceUrl = $ContextPath+ "/webclient/chat_client/js/thirdPartyClient.js?"+"&t=" + timestamp; let thirdUserData = {}; ......
  • 解决方法 跨域问题,是因为集成方的网站做了安全限制,不允许请求非本域提供的资源造成的。可通过使用负载均衡应用(如Nginx)的反向代理来解决。 图1 地址在负载均衡应用上的映射原理 即第三方页面使用JS调用时,调用本地域名下的一个服务,该服务放通到云客服的域名地址手上。 由于云客服只有识别到service-cloud,才会识别该请求,因此第三方页面的请求地址必须包含service-cloud。 以Nginx为例,整体配置要点如下: 在nginx.conf文件中添加首层服务地址,如下所示。 location /demo/ { proxy_set_header Host $host; set $Real $proxy_add_x_forwarded_for; if ($Real ~ (\d+)\.(\d+)\.(\d+)\.(\d+)\,(.*)){ set $Real $1.$2.$3.$4; } proxy_set_header X-Real-IP $Real; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; proxy_pass https://servicestage.besclouds.com/; } demo为样例,集成方可根据需要自行定义。 servicestage.besclouds.com请以云客服提供的地址为准。 location /service-cloud/ { proxy_set_header X-Real-IP $remote_addr; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; proxy_request_buffering off; proxy_pass https://servicestage.besclouds.com/service-cloud; } 在开发集成页面中采用如下地址进行JS请求,其中location.protocol请使用集成方的域名+上一步配置的服务名(例如demo)。 const $ContextPath = location.protocol + "/service-cloud" let serviceUrl = $ContextPath+ "/webclient/chat_client/js/thirdPartyClient.js?"+"&t=" + timestamp; let thirdUserData = {}; ......
  • 集成开发 此章节主要描述如何在您的系统的完成我们接续控件的集成。 登录前鉴权 同步企业系统与云客服的账号信息 您可以通过调用queryAgentInfo接口,获取可同步的座席信息,包括注册服务器信息、座席账户密码、云客服登录账号等信息,调用后将云客服登录账号与您原业务系统中的座席登录账号进行关联同步,使得在企业页面请求接续条时,能自动获取匹配的账户验证信息。 开发token生成机制与认证验证接口 开发集成页面 常见问题
  • 概述 云客服提供可被直接集成的轻量级接续条,您可以轻松的将人工座席的语音处理能力集成在员工的常用操作界面上,来填补原有客户服务系统中人工语音/视频服务渠道的缺失,无需考虑排队机、计算机电信集成平台等基础设施的构建和维护成本。 轻量级接续条提供主要的语音/视频呼叫处理和座席状态控制的功能,具有如下特点: 轻量级,容易集成到不同的平台中,不占用门户和工作台的主要页面。 易于操作,客服人员签入平台、接听来话、转移呼叫、静音、状态切换或求助等操作均可通过一次点击完成。 您可通过本手册将云客服的核心功能嵌入到第三方系统中,通过iframe的方式集成座席签入签出、接续控制的界面(即轻量级接续条),如图1和图2所示。 轻量级集成不支持同一个座席多地登录、多浏览器与多环境签入,会造成事件丢失或者异常返回。若因此出现页面异常,需要退出或关闭多地登录、多浏览器与多环境签入,再刷新页面即可恢复正常。 图1 音频通话界面 图2 视频通话界面
  • 操作步骤 调用座席软电话信息查询接口(queryAgentInfo)获取可用于同步的信息。 按以下格式要求获取URL,选择GET方式。 HTTPS方法:GET URL:http(s)://Domain Address/apiaccess/CC-Mangemant/v1/queryAgentInfo Domain Address请根据云客服实际的地址或域名进行替换。 例如,在华为公有云生产环境,请将Domain Address替换为service.besclouds.com,则调用URL为https://service.besclouds.com/apigovernance/api/oauth/tokenByAkSk HTTP协议是不安全协议,可能会对系统带来风险,不推荐使用。建议使用安全的HTTPS协议。 将x-app-key和Authorization的值按调用样例的格式输入到Header,获取所需输出参数,如图1所示。您可以通过表1和表2了解请求参数属性和返回参数属性的要求。 图1 queryAgentInfo调用 表1 RequestHeader说明 参数名 参数类型 参数位置 是否必填 说明 x-app-key string header True app标识。即您的app_key Authorization string header True 鉴权信息。为"Bearer "+鉴权接口获得的AccessToken Example { "x-app-key":XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX "Authorization":Bearer XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX } 表2 ResponseBody说明 参数名 参数类型 参数位置 是否必填 说明 sipServiceIp string body False 软电话注册地址,IPV4格式。 sipServicePort int body False 软电话注册端口,值为1~65535。 agents list body True 座席集合。 workNo int agents True 座席工号。 sipAccount string agents False 软电话号码。 sipPwd string agents False 软电话密码。 accountCode string agents False 云客服登录账号。 Example { "sipServiceIp":"10.100.10.10", "sipServicePort":1000, "agents": [ { "workNo": 1001, "accountCode": "11", "sipAccount": "1001", "sipPwd": "cti-1234" } ] } 同步到座席相关信息后,您可能还需要在您的系统中完成如下事项: (可选)将您业务系统中的账户与云客服座席对象做关联,在开发集成页面步骤请求云客服时需要用到关联好的账户。如果您期望企业业务系统的用户每次登录时自行选择云客服账号登录云客服,可以跳过该步骤。 (可选)为座席提供软电话号码、软电话密码以及软电话注册地址/端口号,座席需要使用这些信息登录OpenEye客户端,进行呼入呼出操作。如果您使用OpenEye以外的SIP软电话工具进行呼叫操作可以跳过该步骤。
  • 监听事件的注册和事件处理程序的执行验证 完成页面集成之后,您需要测试与验证注册监听事件、移除监听事件、回调函数和一键外呼是否能正常使用。以下以Chrome浏览器为例。在验证过程中,您可以使用Nginx服务器来模拟第三方调用基础页面,您也可以使用其他您熟悉的访问方式进行。 本地开启Nginx服务器(Nginx版本可参考nginx/Windows-1.22.0),将集成页面放到nginx目录下的html中。您也可以在nginx.conf文件中配置集成页面的路径; 打开AICC页面,将您在步骤1配好的集成页面访问地址添加到地址白名单并配置弹屏; 打开音视频工作台,在您的集成页面注册事件(这里演示的页面在打开时自动注册了相应事件,所以打开时就执行了Init事件处理程序); AICC Support Demo Page Init日志是1.3.1注册监听事件的事件处理程序输出的。 座席签入并注册监听响铃事件后,通过OpenEye客户端软件(参考OpenEye软电话安装指导)拨打配好的被叫号码; 座席来电,集成页面执行响铃事件处理程序并返回信息; AICC Support Demo Page Ringing日志是1.3.1注册监听事件的事件处理程序输出的。 父主题: 测试和验证
  • 获取身份认证方式的认证结果 AICCSupport.getVerifyResult(verifyTypeCode); verifyTypeCode是getVerifyResult方法的参数“身份认证方式编码”,用于指定要获取身份验证结果的身份认证方式。 表1 getVerifyResult输入参数说明 参数名 参数类型 参数解释 是否必填 说明 verifyTypeCode string 身份认证方式编码 是 只可以允许字母、数字和下划线 表2 getVerifyResult输出参数说明 参数名 参数类型 参数解释 是否必填 说明 verifyResult string 身份认证结果 是 枚举值。 0:未返回 1:通过 2:失败 3:异常 空字符串表示身份认证方式编码不合法
  • 背景信息 坐席工作台集成身份认证功能,在业务代表为客户查询或办理某些特定业务时,需要获取客户的身份验证授权,才可进行下一步操作。 身份验证的典型业务流程如图1所示。 业务代表接入客户电话后在音视频工作台对客户发起身份验证流程,身份验证流程由用户配置的IVR流程决定。IVR流程中需要配置用户用于身份验证的第三方接口,该接口根据随路数据中传递的参数以及用户的输入信息进行身份验证,并且返回认证结果给音视频工作台。可以根据返回的认证结果决定业务代表是否拥有为客户查询或者办理某些特定业务的操作权限。 图1 业务流程 一个简单的典型的身份认证配置的IVR流程内容如图2所示。 图2 IVR流程图
  • 二次开发接口 IVR流程传递给三方接口的body参数内容: { "calldata":{ // 随路数据 "verifyServiceNo":"88880011", // 身份认证受理号码 "verifyWorkNo":"371" // 身份认证座席工号 } } 三方接口需返回的body参数内容: calldata:{ // 随路数据 "data":{ "verifyResult":0, // 身份认证结果:0:未返回 1:通过,2:失败,3:异常 "verifyReturn1":"", // 身份认证返回数据1 "verifyReturn2":"",// 身份认证返回数据2 "verifyReturn3:"","" // 身份认证返回数据3 } } 企业开发人员基于JS OpenAPI开发企业业务系统页面用于集成到AICC座席工作台,可通过接口获取认证结果。 AICCSupport.getVerifyResult(verifyTypeCode) 结果返回对象格式: { "verifyResult":0, // 身份认证结果:0:未返回 1:验证通过,2:验证失败,3:验证异常 }
  • 前提条件 角色拥有身份认证权限 新租户的租户管理员默认拥有该权限,老租户需使用升级脚本进行升级,升级后的租户管理员也拥有该权限。拥有该权限的租户管理员可赋予该权限给其他角色。 角色拥有身份认证配置权限 新租户的租户管理员默认拥有该权限,老租户需使用升级脚本进行升级,升级后的租户管理员也拥有该权限。 角色拥有身份认证记录查询权限 新租户的租户管理员默认拥有该权限,老租户需使用升级脚本进行升级,升级后租间管理员也拥有该权限。有身份认证记录查看权限的租间管理员默认有可查看租间所有的身份认证记录的权限,拥有该权限的租户管理员可赋予该权限给其他角色。 有开启的身份认证配置
  • 请求消息 消息头 Content-Type:application/json; charset=UTF-8, Connection:keep-alive 消息体 该接口的请求消息体举例如下: { "param":"152****1028" } 该接口的请求消息体参数说明如表 1 所示。 表1 消息体参数说明 参数名称 参数类型 选取原则 说明 param string 必选 第三方查询参数。
  • 响应消息 表3 响应消息体参数说明 序号 名称 参数类型 说明 1 result String 查询结果。取值如下: 0:成功 其他:失败 失败的原因说明请参见错误码参考。 说明: 当前字段为兼容8.13及其之前版本接口响应参数使用。 1 resultCode string 查询结果。取值如下: "0100000":成功 其他:失败 失败的原因说明请参见错误码参考。 3 resultDatas array 查询成功后,返回结果信息的对象数组。 该数组中对象的参数说明请参见表4。 说明: 当前字段为兼容8.13及其之前版本接口响应参数使用。 2 resultDesc array 查询成功后,返回结果信息的对象数组。 该数组中对象的参数说明请参见表4 表4 resultDesc/resultDatas对象参数说明 序号 名称 参数类型 说明 2.1 agentId int 座席工号。 2.2 state int 座席状态。CTI平台座席状态码参考
  • 样例报文 请求头: Content-Type: application/json;charset=UTF-8 Authorization: ****************** 请求参数: { "ccId":1, "vdn":170 } 响应参数: { "result": "0", "resultCode": "0100000", "resultDatas": [ { "agentId": 55002, "state": 0 }, { "agentId": 833, "state": 0 } ], "resultDesc": [ { "agentId": 55002, "state": 0 }, { "agentId": 833, "state": 0 } ] }
  • 请求说明 表1 请求头参数 序号 名称 参数类型 是否必选 说明 1 Content-Type String True 固定填 application/json; charset=UTF-8。 2 Authorization String True 生成方式参见C2 监控/系统外呼/话单/知识库类接口鉴权方式。 表2 请求消息体参数说明 序号 名称 参数类型 是否必选 说明 1 ccId int True 呼叫中心编号。 取值范围:1~65535 2 vdn int True 虚拟呼叫中心编号。 取值范围:1~5000