云服务器内容精选

  • 收集信息 表1 收集信息 项目 说明 私钥/公钥获取URL/密钥ID/公钥/appId 访问私钥是在CraftArts IPDCenter API交互过程身份凭证。通过私钥生成认证凭据,用于确保请求者身份的正确性。公钥获取URL自动获取公钥的地址,通过此地址,可自动获取公钥信息,用于检验认证凭据的正确性。 公钥获取URL地址为:https:// 域名 /文根/basic/mgmt//public/api/v1/keymanage/getPublicKeyList appId、公钥、私钥与密钥ID见下面获取方式。
  • 代码示例 @Controller @RequestMapping("/api") public class TestController { @GetMapping("/testApi") public String test(HttpServletRequest request) { String token = request.getHeader("Authorization"); String issuer = verifyAndReturnIssuer(token); if (issuer.equals("user")) { return "success"; } return "error"; } }
  • 应用集成开发概述 集成开发包括连接器、数据接入和开放接口三部分。其中,数据接入(DataAccess)和连接器(Connector),是将外部数据或功能模块集成到AstroZero中使用,而开放接口是将AstroZero中开发的脚本、服务编排等包装成自定义REST接口,供第三方系统使用。 图1 集成开发 表1 集成开发 特性 特性说明 连接器 连接器是AstroZero提供的,调用第三方服务的集成工具。AstroZero封装了不同类型的连接器,用于对接相应的第三方服务,如OBS、Redis、 云搜索 和ROMA等。通过连接器,开发者无需关注具体代码实现,只需要配置集成服务的地址和鉴权信息,即可在服务编排或脚本中快速集成第三方系统。 使用连接器调用第三方接口 在使用AstroZero时,通常会调用第三方系统接口,进行数据交互。AstroZero提供了Rest服务连接器、Soap服务连接器和自定义连接器三种方式来调用第三方接口。使用这三种连接器,可方便快捷的调用第三方接口,实现对第三方系统数据的增加、删除、修改和查找。 使用Rest服务调用Rest协议接口:当系统需要调用第三方提供的Rest协议接口时,可以通过配置Rest服务来实现。Rest服务是第三方系统提供的,是一组模块化的Rest接口,通过配置第三方提供的Rest服务的URL进行调用。 使用SOAP服务调用SOAP协议接口:当系统需要调用第三方提供的SOAP协议接口时,可以通过配置SOAP服务来实现。SOAP服务是第三方系统提供的,是一组模块化的SOAP接口,通过配置第三方提供的SOAP服务的URL进行调用。 须知: 调用第三方接口前,需要第三方系统提供符合Rest和SOAP协议规范的API。 使用自定义连接器调用第三方接口:通过使用自定义连接器,可快速对接一个外部服务的接口并在AstroZero中使用。 使用连接器对接云服务 AstroZero封装了不同类型的连接器对接相应的第三方服务,如OBS、Redis、云搜索和ROMA等。通过连接器,开发者无需关注具体代码实现,只需要配置一下服务地址和鉴权信息,即可在服务编排或事件中快速集成第三方系统。 数据接入 数据接入是指通过对接多种输入源进行消息类数据的接入,如将ROMA侧的MQS,转换成Kafka消息队列中的事件,供平台业务逻辑接口使用。 开放接口 开放接口是指将用户在应用中开发的脚本、服务编排等包装成自定义的REST接口,供第三方系统进行调用。 父主题: 使用AstroZero进行应用集成开发
  • 准备开发环境 安装开发工具 请根据所使用语言选择适合的开发工具。 安装2018.3.5或以上版本的IntelliJ IDEA,安装包请至IntelliJ IDEA官方网站下载。 安装3.0.3及以上版本Apache Maven,安装包请至Maven官方下载页面下载。 安装2019 version 16.8.4及以上版本的Visual Studio,安装包请至Visual Studio官方网站下载。 安装开发语言环境 Java:安装1.8.111或以上版本的Java Development Kit,安装包请至Oracle官方下载页面下载。 Python:安装2.7或3.X版本的Python,安装包请至Python官方下载页面下载。 Go:安装1.14及以上版本的Go,安装包请至Go官方下载页面下载。 C#:安装6.0及以上版本的.NET,安装包请至.NET官方下载页面下载。
  • 工作原理 统一认证SDK是基于JWT实现的一种认证机制,Json web token (JWT)是在网络应用环境间为了传递声明而执行的一种基于JSON的开放标准(RFC 7519)。该token的设计紧凑且安全,特别适用于分布式站点的单点登录(SSO)场景。JWT的声明一般被用来在身份提供者和服务提供者间传递被认证的用户身份信息,以便从资源服务器获取资源。它也可以被增加一些其它业务逻辑所必须的声明信息。该token可直接被用于认证,也可被加密。 API请求方将请求的用户信息利用私钥哈希生成签名,将用户信息与签名合并生成token,在调用API时将token传递给被调用方,API被调用方获取到此token后,利用公钥验证此token的正确性。 图1 机机认证方案
  • 前提条件 准备装有1.8及以上版本JDK的Linux服务器。 IntelliJ IDEA版本为:2018.3.5或以上版本,Eclipse版本为:3.6.0或以上版本。 通过Demo(sha256:34c9bc8d99eba4ed193603019ce2b69afa3ed760a452231ece3c89fd7dd74da1)获取MysqlConnctor.rar包。 如果使用自定义连接器来写数据,需要用户自行保证数据的可重复幂等写入。 RESTful接口单次请求的处理时间不能超过60s。 FDI端会循环调用RESTful接口地址,直到读完数据为止。
  • 异常处理 当数据源类型选择ROMA Connect时,配置完数据接入后,MQS平台收不到消息,业务设置的EventTrigger没有拉起服务编排。 问题现象:ROMA Connect消息轨迹是灰色的,可能是MQS服务地址配置错误或没有配置。 解决方法:检查iotgateway容器的“roma-server”参数是否配置。若没有配置,请配置该参数或联系运维添加正确的“roma-server”地址(端口为“9776”),确认网络正常以及MQS服务器正常,兼容客户端版本。 问题现象:ROMA Connect消息轨迹是红色的,可能是MQS的source定义错误。 解决方法:在ROMA Connect平台,查看应用ID和对应的密钥是否一致,查看该应用是否订阅了主题。配置错误时,会导致鉴权失败。 问题现象:ROMA Connect消息轨迹是绿色的, 表示MQS接收成功,并成功发送到Kafka,AstroZero也收到了对应的消息,但是可能没成功拉起服务编排。 解决方法:查看iotgateway的“flume.log”日志,确认MQS是否接收成功。通过“kafka-console-cumer”确认消息是否转换成功,通过AstroZero的日志跟踪功能或AstroZero后台日志确认(日志关键字为“OnEvent”)平台是否收到事件。如果没有对应的服务编排或事件日志,可以确定服务编排未拉起,请联系华为工程师解决。
  • 开发一键外呼功能 执行一键外呼: AIC CS upport.clickToOutbound({mediaType: 'audio',calledNum: '12345678'}); audio是clickToOutbound方法的对象参数outboundParam的子属性mediaType媒体类型。 12345678是clickToOutbound方法的对象参数outboundParam的子属性calledNum被叫号码。 表1 clickToOutbound输入参数说明 参数名 参数类型 名称 是否必填 说明 outboundParam object 外呼参数 是 外呼参数 表2 outboundParam参数说明 outboundParam 参数类型 名称 是否必填 说明 mediaType string 媒体类型 是 枚举值:audio, video, email, whatsapp calledNum string 被叫号码 是 被叫号码 按F12打开浏览器控制台,查看输出日志 [AICCSupport Log] -Info- clickToOutbound - execute One-click out call 代表一键外呼功能开发成功。 父主题: 集成开发
  • 操作步骤 调用座席软电话信息查询接口(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软电话工具进行呼叫操作可以跳过该步骤。
  • 获取身份认证方式的认证结果 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:验证异常 }
  • 前提条件 角色拥有身份认证权限 新租户的租户管理员默认拥有该权限,老租户需使用升级脚本进行升级,升级后的租户管理员也拥有该权限。拥有该权限的租户管理员可赋予该权限给其他角色。 角色拥有身份认证配置权限 新租户的租户管理员默认拥有该权限,老租户需使用升级脚本进行升级,升级后的租户管理员也拥有该权限。 角色拥有身份认证记录查询权限 新租户的租户管理员默认拥有该权限,老租户需使用升级脚本进行升级,升级后租间管理员也拥有该权限。有身份认证记录查看权限的租间管理员默认有可查看租间所有的身份认证记录的权限,拥有该权限的租户管理员可赋予该权限给其他角色。 有开启的身份认证配置
  • 配置设备连接信息 解压Demo压缩包,在“src”目录的底层路径下找到DeviceConnectDemo.java文件。 使用Java编辑工具打开这个文件,编辑设备连接的信息。运行成功后,在“设备管理”页面可以看到在线设备状态。 Demo工程中依赖的软件包在lib目录下,使用Demo时需要将demo的lib目录设置为当前工程的lib目录。 // 设备连接地址,格式为:tcp://ip:port final String host = ""; // 设备客户端ID final String clientId = ""; // 示例仅用作测试或示意,设备认证的用户名为敏感信息,请勿硬编码使用 final String userName = ""; // 示例仅用作测试或示意,设备认证的密码为敏感信息,请勿硬编码使用 final String password = ""; // 设备Publish权限的Topic final String pubTopic = ""; // 设备Subscribe权限的Topic final String subTopic = ""; // 设备发送的消息内容 final String payload = "hello world.";
  • 背景信息 坐席工作台集成身份认证功能,在业务代表为客户查询或办理某些特定业务时,需要获取客户的身份验证授权,才可进行下一步操作。 身份验证的典型业务流程如图1所示。 业务代表接入客户电话后在音视频工作台对客户发起身份验证流程,身份验证流程由用户配置的IVR流程决定。IVR流程中需要配置用户用于身份验证的第三方接口,该接口根据随路数据中传递的参数以及用户的输入信息进行身份验证,并且返回认证结果给音视频工作台。可以根据返回的认证结果决定业务代表是否拥有为客户查询或者办理某些特定业务的操作权限。 图1 业务流程 一个简单的典型的身份认证配置的IVR流程内容如图2所示。 图2 IVR流程图