云服务器内容精选
-
API请求地址 API请求地址由“APP接入地址”和“访问URI”组成,数据来源如下: 参数 来源 示例 APP接入地址 登录管理控制台,从 隐私保护通话 “应用管理”页面获取。 https://rtcpns.cn-north-1.myhuaweicloud.com 访问URI 从各API接口页面中的“接口类型说明”中获取。 获取录音文件下载地址接口 :/rest/provision/voice/record/v1.0 综上,API请求地址示例如下: 获取录音文件下载地址接口 https://rtcpns.cn-north-1.myhuaweicloud.com/rest/provision/voice/record/v1.0
-
接口示例 接口示例仅供参考,请以实际消息为准。 请求示例 POST /rest/httpsessions/callStop/v2.0 HTTP/1.1 content-type: application/json;charset=UTF-8authorization: AKSK realm="SDP",profile="UsernameToken",type="Appkey"x-aksk: UsernameToken Username="************",PasswordDigest="*************",Nonce="ac1c911c4792492687f8f6b2264a491e",Created="2018-05-26T00:35:30Z"content-length:xx { "sessionid":"1200_366_0_20161228102743@callenabler.home1.com", "signal":"call_stop" } 响应示例 HTTP/1.1 200 OK Content-Type:text/html;charset=UTF-8{ "resultcode":"0", "resultdesc":"Success" }
-
请求参数 表2 请求Headers参数说明 参数名称 是否必选 参数类型 说明 Content-Type 是 String 固定填写为application/json;charset=UTF-8。 Authorization 是 String 固定填写为AKSK realm="SDP",profile="UsernameToken",type="Appkey"。 X-AKSK 是 String 取值为UsernameToken Username="APP_Key的值", PasswordDigest="PasswordDigest的值", Nonce="随机数", Created="随机数生成时间"。 PasswordDigest:根据PasswordDigest = Base64 (HMAC-SHA256 (Password,Nonce + Created))生成。其中,Password为APP_Secret的值。Nonce、Created、Password直接进行字符串拼接即可,无需包含+号和空格。 Nonce:客户发送请求时生成的一个随机数,长度为1~128位,可包含数字和大小写字母。例如:66C92B11FF8A425FB8D4CCFE0ED9ED1F。 Created:随机数生成时间。采用标准UTC格式,例如:2018-02-12T15:30:20Z。不同编程语言中的时间格式转换方式不同,部分语言可参考表3。 表3 不同编程语言的时间格式 编程语言 时间格式 Java yyyy-MM-dd'T'HH:mm:ss'Z' PHP Y-m-d\TH:i:s\Z Python %Y-%m-%dT%H:%M:%SZ C# yyyy-MM-ddTHH:mm:ssZ Node.js toISOString().replace(/.[0-9]+\Z/, 'Z') 注:Node.js中,使用toISOString()转换后的时间格式去除毫秒后即为本接口要求的时间格式。 表4 请求Body参数说明 参数名称 是否必选 参数类型 说明 sessionid 是 String(1-256) 通过“呼叫事件和话单通知接口”获取到呼叫的sessionId。 signal 是 String(1-128) 取值固定为“call_stop”。
-
结果码 表6 结果码说明 响应码 结果码 英文描述 中文描述 处理方法 200 0 Success. 成功。 - 400 1023006 Authorization not contained in the HTTP header. HTTP消息头未找到Authorization字段。 请检查HTTP消息头中是否携带了Authorization字段。 1023007 realm not contained in Authorization. Authorization字段中未找到realm属性。 请检查Authorization字段中的是否携带了realm属性。 1023008 profile not contained in Authorization. Authorization字段中未找到profile属性。 请检查Authorization字段中的是否携带了profile属性。 1023009 The value of realm in Authorization must be SDP. Authorization中realm属性值应该为“SDP”。 请检查Authorization字段中的realm属性值是否为“SDP”。 1023010 The value of profile in Authorization must be UsernameToken. Authorization中profile属性值应该为“UsernameToken”。 请检查Authorization字段中的profile属性值是否为“UsernameToken”。 1023011 The value of type in Authorization must be app_key. Authorization中type属性值应该为“Appkey”。 请检查Authorization字段中的type属性值是否为“Appkey”。 1023012 type not contained in Authorization. Authorization字段中未找到type属性。 请检查Authorization字段中是否携带了type属性。 1023033 HTTP header not found X-AKSK field. HTTP头未找到X-AKSK字段。 请检查HTTP消息头中是否携带了X-AKSK字段。 1023034 UserName not contained in X-AKSK. X-AKSK字段中未找到UserName属性。 请检查X-AKSK字段中的是否携带了Username属性。 1023035 Nonce not contained in X-AKSK. X-AKSK字段中未找到Nonce属性。 请检查X-AKSK字段中的是否携带了Nonce属性。 1023036 Created not contained in X-AKSK. X-AKSK字段中未找到Created属性。 请检查X-AKSK字段中的是否携带了Created属性。 1023037 PasswordDigest not contained in X-AKSK. X-AKSK字段中未找到PasswordDigest属性。 请检查X-AKSK字段中的是否携带了PasswordDigest属性。 1023038 UsernameToken not contained in X-AKSK. X-AKSK中没有携带UsernameToken。 请检查X-AKSK字段中的是否携带了UsernameToken属性。 401 1010010 Invalid digest. PasswordDigest校验失败。 请检查PasswordDigest字段填写是否正确。 1010013 Time out limit. 时间超出限制。 请确认X-AKSK鉴权时,生成随机数的时间与发送请求时的本地时间不能相差太大(具体差值请与管理员确认)。 500 1010001 Internal system error. 系统错误。 请联系客服处理。 1020001 Parameter error. 参数错误。 检查请求携带的参数格式是否都合法。 1020002 Internal error. 内部错误。 请联系客服处理。 1020150 The app_key is invalid. app_key无效。 请检查请求携带的app_key是否正确,以及所属应用状态是否正常。 1020152 Invalid sessionId. sessionId无效。 检查请求携带的sessionId是否填写正确。 1023002 Response timeout. 响应超时。 请先重新发送一次请求,若依然返回响应超时,请联系客服处理。 403 1010002 Invalid request. 无效请求。 参考各接口参数说明,检查请求携带的参数格式是否正确,如以下参数格式问题: 绑定接口填写的号码参数需为全局号码格式,如+86138****0001或+8675528****01; 放音文件需上传通过审核才可通过接口调用,点击查看如何上传审核。 参考接口参数说明,检查是否携带了不能同时携带的参数,如AXE模式绑定接口不能同时携带callbackTone和callbackNum,若是,请保留一个; 参数长度或格式是否错误,如AXE模式分机号长度或timeUnit的格式是否正确。 1010003 Invalid app_key. 无效的app_key。 请检查请求携带的app_key是否正确,以及所属应用状态是否正常。 1010006 Invalid Rest API. 无效的Rest API。 检查请求方法填写是否正确。 1010008 The status of the app_key is unavailable. app_key不可用。 请检查请求携带的app_key所属应用状态是否正常。 1010009 No more APIs can be invoked. API达到调用上限。 请稍等一分钟后再试。 1010010 The flow control upper limit is reached on the platform. 平台达到系统流控上线。 1020166 The app client ip is not in ip white list. 对端app IP不在白名单列表中。 联系管理员检查IP白名单是否配置正确。 1020176 Authentication failed, try again later 鉴权失败,稍后重试 IP因鉴权失败次数过多导致被拉黑,请30分钟后重试,或联系管理员放通该IP。
-
接口示例 请求示例 GET /rest/omp/xyrelationnumber/v1.0?subscriptionId=**** HTTP1.1content-type: application/json;charset=UTF-8authorization: AKSK realm="SDP",profile="UsernameToken",type="Appkey"x-aksk: UsernameToken Username="************",PasswordDigest="*************",Nonce="ac1c911c4792492687f8f6b2264a491e",Created="2018-05-26T00:35:30Z" 响应示例 HTTP/1.1 200 OK Content-Type: application/json;charset=utf-8 Content-Length: xx { "resultcode":"0", "resultdesc":"Success", "xyRelationNumList":[{ "bindId":"****", "numA":"+86138****0001", "numX":"+86138****0021", "numY":"+86138****0022", "numB":"+86138****0002", "recordFlag":"false", "subscribeTime":"2016-12-24 15:15:15", "callDirection":0, "duration":"7200", "ybDuration":"0"}]}
-
响应参数 表5 响应结果参数 参数名称 是否必选 参数类型 说明 resultcode 是 String(1-32) 请求返回的结果码。 resultdesc 是 String(1-256) 操作结果描述。 xyRelationNumList 否 xyRelationNumInfo[1-5] 隐私号码绑定关系列表。 成功响应时必定返回。 表6 xyRelationNumInfo定义 参数名称 是否必选 参数类型 说明 bindId 否 String(1-64) 绑定Id,由隐私保护通话平台自动分配。 numA 否 String(1-32) 与指定的隐私号码X绑定的用户A号码,携带为全局号码格式(包含国家码),如:+86138****0001或+8675528****02。 numX 否 String(1-32) 请求中指定的隐私号码X,携带为全局号码格式(包含国家码),如:+86138****0021。 numY 否 String(1-32) 分配的隐私号码Y,携带为全局号码格式(包含国家码),如:+86138****0022。 numB 否 String(1-32) 与隐私号码Y绑定的用户B号码,携带为全局号码格式(包含国家码),如:+86138****0002或+8675528****01。 recordFlag 否 String(枚举) 录音标识 false:表示不录音 true:表示录音 recordHintTone 否 String(1-128) 录音提示音文件名。 查询成功且SP调用“AXYB模式绑定接口”时指定了录音提示音文件,才会携带该参数。 subscribeTime 否 Datetime 设置或者最近一次修改该绑定关系的时间,例如2016-12-24 15:15:15。 callDirection 否 Integer 表示该绑定关系允许的呼叫方向,取值范围: 0:bidirectional,双向,表示A和B/C都可以通过X或Y呼叫对方。 1:A to B,表示只允许A通过Y呼叫B/C。 2:B to A,表示只允许B/C通过X呼叫A。 duration 否 String(1-32) 绑定关系保持时间,单位为秒。 取值范围: 0:绑定关系永不过期。 60~7776000(90天):绑定关系过期后会被系统自动解除。 ybDuration 否 String(1-32) YB绑定关系保持时间,单位为秒。 取值范围: 0:YB的绑定关系随AX解绑时解绑。 60~7776000(90天):绑定关系过期后会被系统自动解除。 preVoiceX 否 String(1-128) X的预放音文件名 preVoiceY 否 String(1-128) Y的预放音文件名 userData 否 String(1-256) 用户自定义数据。 说明: 使用该参数的场景请联系华为云客服获取。
-
结果码说明 表7 响应结果码 响应码 结果码 英文描述 中文描述 处理方法 200 0 Success. 成功。 - 400 1023006 Authorization not contained in the HTTP header. HTTP消息头未找到Authorization字段。 请检查HTTP消息头中是否携带了Authorization字段。 1023007 realm not contained in Authorization. Authorization字段中未找到realm属性。 请检查Authorization字段中的是否携带了realm属性。 1023008 profile not contained in Authorization. Authorization字段中未找到profile属性。 请检查Authorization字段中的是否携带了profile属性。 1023009 The value of realm in Authorization must be SDP. Authorization中realm属性值应该为“SDP”。 请检查Authorization字段中的realm属性值是否为“SDP”。 1023010 The value of profile in Authorization must be UsernameToken. Authorization中profile属性值应该为“UsernameToken”。 请检查Authorization字段中的profile属性值是否为“UsernameToken”。 1023011 The value of type in Authorization must be app_key. Authorization中type属性值应该为“Appkey”。 请检查Authorization字段中的type属性值是否为“Appkey”。 1023012 type not contained in Authorization. Authorization字段中未找到type属性。 请检查Authorization字段中是否携带了type属性。 1023033 HTTP header not found X-AKSK field. HTTP头未找到X-AKSK字段。 请检查HTTP消息头中是否携带了X-AKSK字段。 1023034 UserName not contained in X-AKSK. X-AKSK字段中未找到UserName属性。 请检查X-AKSK字段中的是否携带了Username属性。 1023035 Nonce not contained in X-AKSK. X-AKSK字段中未找到Nonce属性。 请检查X-AKSK字段中的是否携带了Nonce属性。 1023036 Created not contained in X-AKSK. X-AKSK字段中未找到Created属性。 请检查X-AKSK字段中的是否携带了Created属性。 1023037 PasswordDigest not contained in X-AKSK. X-AKSK字段中未找到PasswordDigest属性。 请检查X-AKSK字段中的是否携带了PasswordDigest属性。 1023038 UsernameToken not contained in X-AKSK. X-AKSK中没有携带UsernameToken。 请检查X-AKSK字段中的是否携带了UsernameToken属性。 401 1010010 Invalid digest. PasswordDigest校验失败。 请检查PasswordDigest字段填写是否正确。 1010013 Time out limit. 时间超出限制。 请确认X-AKSK鉴权时,生成随机数的时间与发送请求时的本地时间不能相差太大(具体差值请与管理员确认)。 403 1010002 Invalid request 无效请求。 参考各接口参数说明,检查请求携带的参数格式是否正确,如以下参数格式问题: 绑定接口填写的号码参数需为全局号码格式,如+86138****0001或+8675528****01; 放音文件需上传通过审核才可通过接口调用,点击查看如何上传审核。 参考接口参数说明,检查是否携带了不能同时携带的参数,如AXE模式绑定接口不能同时携带callbackTone和callbackNum,若是,请保留一个; 参数长度或格式是否错误,如AXE模式分机号长度或timeUnit的格式是否正确。 1010003 Invalid app_key. 无效的app_key。 请检查请求携带的app_key填写是否正确。 1010008 The status of the app_key is unavailable. app_key状态异常。 请联系管理员确认该app_key状态是否正常。 1010029 The subscriber status is frozen. 用户账号已冻结。 查看账户是否欠费。如欠费需充值后才能继续使用。 若未欠费,请联系华为云客服处理。 1010040 The app_key is not allowed to invoke the API. app_key没有调用本API的权限。 调用的接口和app_key所属的应用模式不一致。如添加应用时选择的AXB模式的应用,调用接口时只能调用AXB模式的接口,不能调用其他模式的接口。 1012001 Resource of number is not to be applied. 资源未申请 携带的app_key和X号码没有绑定关系,请检查携带的X号码是否属于该应用。 1016001 The record does not exist. 记录不存在。 未查询到绑定关系,请检查relationNum或subscriptionId参数的填写是否正确。 1020166 The app client ip is not in ip white list. 对端app IP不在白名单列表中。 联系管理员检查IP白名单是否配置正确。 1020176 Authentication failed, try again later 鉴权失败,稍后重试 IP因鉴权失败次数过多导致被拉黑,请30分钟后重试,或联系管理员放通该IP。 500 1010001 Internal system error. 系统错误。 请联系管理员处理。 1023001 Internal error. 内部错误。 1023002 Response timeout. 响应超时。 重新发送一次请求,若依然返回响应超时,请联系管理员处理。
-
请求参数 表2 请求URL参数说明 参数名称 是否必选 参数类型 说明 relationNum 否 String(1-32) 想要查询绑定关系的X号码,填写为调用“AXYB模式绑定接口”绑定AX时返回的绑定relationNumber。 填写为全局号码格式(包含国家码),并需要把号码中的+号转义为%2B。 例如:%2B86138****0021。 该参数与subscriptionId为二选一关系,只携带relationNum时表示查询该隐私号码上绑定的所有关系。 同时携带relationNum和subscriptionId时系统以subscriptionId为准。 subscriptionId 否 String(1-64) 填写为调用“AXYB模式绑定接口”接口时返回的绑定ID。 该参数与relationNum为二选一关系,携带subscriptionId时表示查询subscriptionId指定的所有绑定关系。 同时携带relationNum和subscriptionId时系统以subscriptionId为准。 app_key 是 String(1-128) AXYB能力标识,登录控制台,从“应用管理”页获取。 表3 请求Headers参数说明 参数名称 是否必选 参数类型 说明 Content-Type 是 String 固定填写为application/json;charset=UTF-8。 Authorization 是 String 固定填写为AKSK realm="SDP",profile="UsernameToken",type="Appkey"。 X-AKSK 是 String 取值为UsernameToken Username="APP_Key的值", PasswordDigest="PasswordDigest的值", Nonce="随机数", Created="随机数生成时间"。 PasswordDigest:根据PasswordDigest = Base64 (HMAC-SHA256 (Password,Nonce + Created))生成。其中,Password为APP_Secret的值。Nonce、Created、Password直接进行字符串拼接即可,无需包含+号和空格。 Nonce:客户发送请求时生成的一个随机数,长度为1~128位,可包含数字和大小写字母。例如:66C92B11FF8A425FB8D4CCFE0ED9ED1F。 Created:随机数生成时间。采用标准UTC格式,例如:2018-02-12T15:30:20Z。不同编程语言中的时间格式转换方式不同,部分语言可参考表4。 表4 不同编程语言的时间格式 编程语言 时间格式 Java yyyy-MM-dd'T'HH:mm:ss'Z' PHP Y-m-d\TH:i:s\Z Python %Y-%m-%dT%H:%M:%SZ C# yyyy-MM-ddTHH:mm:ssZ Node.js toISOString().replace(/.[0-9]+\Z/, 'Z') 注:Node.js中,使用toISOString()转换后的时间格式去除毫秒后即为本接口要求的时间格式。
-
Q850原因值说明 Q850原因值 原因值描述 0 不涉及 1 无法找到号码 2 无法路由到网络 3 无法路由到目的地 4 发送特殊消息 5 中继前缀出错 6 通道无法接入 7 已经建立频道 8 抢先占有 9 抢先占有保留 16 正常呼叫清除 17 用户忙 18 无应答 19 无用户应答 20 用户不可及 21 拒绝呼叫 22 号码已改变 23 重定向 25 交换路由错误 26 无用户准许 27 目标无序 28 非法号码格式 29 设备拒绝 30 状态查询 31 正常 34 路由不可达 38 网络状态不好 39 服务链接不上 40 链接进行中 41 暂时失败 42 设备拥塞 43 信息丢弃 44 通道无法接入 46 呼叫阻塞 47 无可用资源 49 品质无效 50 设备没预订 53 闭合群OCB呼出受限 55 闭合群ICB呼入受限 57 无权限发送 58 发送无效 62 等级不一致 63 服务无效 65 发送无法执行 66 通道无法执行 69 设备无效 70 发送有效 79 CV服务没设置 81 引用非法值 82 通道不存在 83 ID不存在 84 呼叫ID不存在 85 无呼叫等待 86 隐藏号码呼叫 87 CUG无成员 88 目标冲突 90 CUG不存在 91 无效网络 95 无效信息 96 非托管元素 97 类型不存在 98 信息没执行 99 信息单元不存在 100 无效的信息单元 101 呼叫状态不一致 102 定时器超时 103 参数不存在 110 消息中带有未识别的参数 111 协议错误 127 未指定的交互 父主题: 附录
-
请求参数 表2 请求Headers参数说明 参数名称 是否必选 参数类型 说明 Content-Type 是 String 固定填写为application/json;charset=UTF-8。 Authorization 是 String 固定填写为AKSK realm="SDP",profile="UsernameToken",type="Appkey"。 X-AKSK 是 String 取值为UsernameToken Username="APP_Key的值", PasswordDigest="PasswordDigest的值", Nonce="随机数", Created="随机数生成时间"。 PasswordDigest:根据PasswordDigest = Base64 (HMAC-SHA256 (Password,Nonce + Created))生成。其中,Password为APP_Secret的值。Nonce、Created、Password直接进行字符串拼接即可,无需包含+号和空格。 Nonce:客户发送请求时生成的一个随机数,长度为1~128位,可包含数字和大小写字母。例如:66C92B11FF8A425FB8D4CCFE0ED9ED1F。 Created:随机数生成时间。采用标准UTC格式,例如:2018-02-12T15:30:20Z。不同编程语言中将UTC时间戳转换为普通时间时使用的格式不同,部分语言可参考表3。 表3 不同编程语言的时间格式 编程语言 时间格式 Java yyyy-MM-dd'T'HH:mm:ss'Z' PHP Y-m-d\TH:i:s\Z Python %Y-%m-%dT%H:%M:%SZ C# yyyy-MM-ddTHH:mm:ssZ Node.js toISOString().replace(/.[0-9]+\Z/, 'Z') 注:Node.js中,使用toISOString()转换后的时间格式去除毫秒后即为本接口要求的时间格式。 表4 请求Body参数说明 参数名称 是否必选 参数类型 说明 eventType 是 String(枚举) 该参数标识通知的事件类型。 取值范围如下: fee:话单事件 feeLst 否 FeeInfo[1-50] 呼叫话单事件的信息,参数取值为列表,最大50条。 当eventType参数为fee时携带。 表5 FeeInfo定义 参数名称 是否必须 参数类型 描述 direction 是 Integer (0-1) 通话的呼叫方向。 0:B呼叫A。 1:A呼叫B。 2:异常场景(如无绑定数据等)。 spId 是 String(1-32) 客户的云服务账号。 appKey 是 String(1-128) 隐私保护通话应用的app_key。 icid 否 String(1-64) 呼叫记录的唯一标识。 bindNum 是 String(1-32) 隐私保护号码,号码为全局号码格式(包含国家码),比如+86138****0021。 sessionId 是 String(1-256) 通话链路的唯一标识。 callerNum 是 String(1-32) 主叫号码,号码为全局号码格式(包含国家码),比如+86138****0021。 当呼叫场景经过转接时,此参数对应第一路呼叫的主叫号码。 说明: 第一路呼叫为A拨打X号码,callerNum为A号码。 calleeNum 是 String(1-32) 被叫号码,号码为全局号码格式(包含国家码),比如+86138****0021。 当呼叫场景经过转接时,此参数对应第一路呼叫的被叫号码。 说明: 第一路呼叫为A拨打X号码,calleeNum为X号码。 fwdDisplayNum 否 String(1-32) 转接呼叫时的显示号,号码为全局号码格式(包含国家码),比如+86138****0021。 当呼叫场景经过转接时,此参数对应第二路呼叫的主显号码。 说明: 第二路呼叫为X拨打B号码,fwdDisplayNum为X号码。 fwdDstNum 否 String(1-32) 转接呼叫时的转接号码。号码仅支持全局号码格式(包含国家码),比如+86138****0021。 当呼叫场景经过转接时,此参数对应第二路呼叫的被叫号码。 说明: 第二路呼叫为X拨打B号码,fwdDstNum为B号码。 callInTime 是 String(1-128) 呼入的开始时间。 该参数为UTC时间(+8小时为北京时间),时间格式为“yyyy-MM-dd HH:mm:ss”。 fwdStartTime 否 String(1-128) 转接呼叫操作的开始时间。 该参数为UTC时间(+8小时为北京时间),时间格式为“yyyy-MM-dd HH:mm:ss”。 fwdAlertingTime 否 String(1-128) 转接呼叫操作后的振铃时间。 该参数为UTC时间(+8小时为北京时间),时间格式为“yyyy-MM-dd HH:mm:ss”。 fwdAnswerTime 否 String(1-128) 转接呼叫操作后的应答时间。 该参数为UTC时间(+8小时为北京时间),时间格式为“yyyy-MM-dd HH:mm:ss”。 callEndTime 是 String(1-128) 呼叫结束时间。 该参数为UTC时间(+8小时为北京时间),时间格式为“yyyy-MM-dd HH:mm:ss”。 fwdUnaswRsn 否 Integer 转接呼叫操作失败的Q850原因值。详细说明参见Q850原因值说明。 failTime 否 String(1-128) 呼入、呼出的失败时间。 该参数为UTC时间(+8小时为北京时间),时间格式为“yyyy-MM-dd HH:mm:ss”。 ulFailReason 否 Integer 通话失败的拆线点。详细说明参见呼叫拆线点说明。 sipStatusCode 否 Integer 呼入、呼出的失败SIP状态码。 recordFlag 否 Integer (0-1) 该字段用于录音标识,参数值范围如: 0:表示未录音 1:表示有录音 recordStartTime 否 String(1-128) 录音开始时间。 该参数为UTC时间(+8小时为北京时间),时间格式为“yyyy-MM-dd HH:mm:ss”。 recordObjectName 否 String(0-128) 录音文件名。 说明: 参数值为空时,请访问“recordFileDownloadUrl”参数携带的录音文件下载地址下载录音文件。 recordBucketName 否 String(0-128) 录音文件名所在的目录名。 说明: 参数值为空时,请访问“recordFileDownloadUrl”参数携带的录音文件下载地址下载录音文件。 recordDomain 否 String(0-256) 存放录音文件的 域名 。 说明: 参数值为空时,请访问“recordFileDownloadUrl”参数携带的录音文件下载地址下载录音文件。 serviceType 否 String(1-32) 携带呼叫的业务类型信息,取值范围: 004:AXB模式或X模式 hostName 否 String(1-128) 该参数用于标识话单生成的服务器设备对应的主机名。 subscriptionId 否 String(1-64) 绑定ID。 callOutUnaswRsn 否 Integer Initcall的呼出失败的Q850原因值。 详细说明参见Q850原因值说明。 说明: 预留参数,无需关注。 ttsPlayTimes 否 integer 应用 TTS 功能时,使用TTS的总次数。 说明: 预留参数,无需关注。 ttsTransDuration 否 integer 应用TTS功能时,TTS Server进行TTS转换的总时长。单位为秒。 说明: 预留参数,无需关注。 mptyId 否 String(1-128) 该参数作为预留字段,用于标识Enabler服务器上一条多方通话的链路。 该参数仅在多方通话场景生效。 说明: 预留参数,无需关注。 voiceCheckType 否 Integer(枚举) 录音质检类型,取值如下: Null:无质检 0:无录音质检,表示API指示不录音(即recordFlag取值为false)时进行的质检 1:有录音质检,表示API指示要录音(即recordFlag取值为true)时进行的质检 recordFileDownloadUrl 否 String(1-1024) 录音文件下载地址,可通过该URL在浏览器中下载录音文件。 说明: 使用该参数的场景请联系华为云客服获取。 areaCode 否 String(0-32) 隐私保护号码(X号码)的城市码。 说明: 使用该参数的场景请联系华为云客服获取。 callDuration 否 Integer 呼叫的通话时长,单位为秒。 说明: 使用该参数的场景请联系华为云客服获取。 userData 否 String(1-256) 用户附属信息。 当客户在AXB模式绑定接口、AXB模式绑定信息修改接口中携带了“userData”时,对应此呼叫事件的通知消息中都会携带此参数。 接口示例 POST /fee HTTP/1.1content-type: application/json;charset=UTF-8authorization: AKSK realm="SDP",profile="UsernameToken",type="Appkey"x-aksk: UsernameToken Username="************",PasswordDigest="*************",Nonce="ac1c911c4792492687f8f6b2264a491e",Created="2018-05-26T00:35:30Z"content-length:xx{"eventType":"fee","feeLst":[{"direction":1,"spId":"****","appKey":"********","icid":"ba171f34e6953fcd751edc77127748f4.3757223714.337238282.9","bindNum":"+86138****0022","sessionId":"1200_1029_4294967295_20190123091514@callenabler246.huaweicaas.com","subscriptionId":"****","callerNum":"+86138****0021","calleeNum":"+86138****0022","fwdDisplayNum":"+86138****0022","fwdDstNum":"+86138****7021","callInTime":"2019-01-23 09:15:14","fwdStartTime":"2019-01-23 09:15:15","fwdAlertingTime":"2019-01-23 09:15:21","fwdAnswerTime":"2019-01-23 09:15:36","callEndTime":"2019-01-23 09:16:41","fwdUnaswRsn":0,"ulFailReason":0,"sipStatusCode":0,"callOutUnaswRsn":0,"recordFlag":1,"recordStartTime":"2019-01-23 09:15:37","recordDomain":"****.com","recordBucketName":"sp-********","recordObjectName":"********.wav","ttsPlayTimes":0,"ttsTransDuration":0,"mptyId":"****","serviceType":"004","hostName":"callenabler246.huaweicaas.com"}]}
-
使用说明 前提条件 客户添加应用时需设置呼叫话单接收地址,并确保提供的地址能够正常处理隐私保护通话平台发送的通知消息。 注意事项 若平台给客户推送话单后未收到成功响应,视为推送失败,平台会重新推送话单,直至客户返回成功响应。平台最多重推6次,分别于1分钟、4分钟、9分钟、106分钟、203分钟和300分钟后重推。 若没有收到平台推送请参考收不到呼叫事件和话单通知如何处理? 使用限制 业务平台推送话单信息给开发者应用,仅支持POST方式。
-
响应参数 客户服务器接收到隐私保护通话平台的呼叫事件通知后,根据不同的模式返回不同响应消息。 Notify模式 返回无消息体的200响应。 消息样例 HTTP/1.1 200 OK Block模式 响应必须参照表10携带消息体,返回对呼叫事件的处理操作。 表10 响应消息参数说明 参数名称 是否必选 参数类型 说明 operation 否 String(1-32) 用于指示平台的呼叫操作。取值范围如下: connect:接续被叫通话。 close:结束本次呼叫。 connectInfo 否 ApiConnectInfo 指示平台接续被叫通话的参数列表。 当operation取值为connect时携带。 closeInfo 否 ApiCloseInfo 指示平台结束会话的参数列表。 当operation取值为close时携带。 表11 ApiConnectInfo定义 参数名称 是否必选 参数类型 说明 displayCalleeNum 否 String(4-31) 被叫端的来显号码,填写为真实主叫号码或呼叫使用的X号码。 填写为全局号码格式。 手机号码格式为国家码(如+86)+手机号码(11位数字的手机号码,如138****0001),填写为"+86138****0001"。 固话号码为国家码(如+86)+不带前置0的区号(如755)+本地固话号码(7或8位数字的固话号码,以实际号码为准,如28****01),填写为"+8675528****01"。 不携带该参数时,默认显示本次呼叫的X号码。 说明: 由于运营商管控,当前平台要求该参数必须设置为呼叫使用的X号码,否则呼叫会被运营商拦截。 若想使用应用下申请的其他X号码作为外显号码,请联系华为云客服。 calleeNum 是 String(4-31) 真实被叫号码。 填写为全局号码格式。 手机号码格式为国家码(如+86)+手机号码(11位数字的手机号码,如138****0001),填写为"+86138****0001"。 固话号码为国家码(如+86)+不带前置0的区号(如755)+本地固话号码(7或8位数字的固话号码,以实际号码为准,如28****01),填写为"+8675528****01"。 maxDuration 否 Integer 设置允许本次通话进行的最长时间,单位:分钟,通话时间从接通被叫的时刻开始计算。 取值范围:0~1440 0:系统不主动结束通话,由主被叫双方结束通话。 1~1440:当通话时长达到此配置值,系统主动结束通话。 不携带时,参数值默认为0。 waitVoice 否 String(0-128) 设置个性化通话前等待音,即主叫听到的回铃音。填写为放音文件名,可在放音文件管理页面查看。 不携带该参数时主叫会听到真实被叫的回铃音。 recordFlag 否 String(枚举) 是否需要针对本次通话录音。 false:表示不录音 true:表示录音。 该参数仅当客户添加应用时申请开通了录音功能才有效。 如果不携带该参数,系统默认不录音。 recordHintTone 否 String(0-128) 此参数仅在recordFlag为true时有效。 此字段用于设置录音提示音,填写为放音文件名,可在放音文件管理页面查看。 说明: 因隐私协议及运营商管控,录音的呼叫必须携带该参数,否则呼叫会被运营商拦截。 lastMinVoice 否 String(0-128) 设置通话剩余最后一分钟时的提示音,填写为放音文件名,可在放音文件管理页面查看。 当maxDuration字段设置为非0时此参数有效。 不携带该参数表示通话剩余最后一分钟时不放音。 说明: 仅部分号码支持,如需使用该功能请咨询华为云客服。 calleeHintVoice 否 String(0-128) 该参数用于设置被叫提示音,即通话接通后优先向被叫用户播放提示音。填写为放音文件名,可在放音文件管理页面查看。 不携带该参数表示不优先向被叫用户播放提示音。 userData 否 String(0-256) 用户自定义数据,会在该次通话的后续状态报告和话单中原样返回。 不允许携带以下字符:“{”,“}”(即大括号)。 不允许包含中文字符,如果包含中文字符请采用Base64编码。 说明: 当X模式callin事件响应中的userData包含中文时,平台会终止呼叫接续。 表12 ApiCloseInfo定义 参数名称 是否必选 参数类型 说明 closeHintTone 否 String(1-128) 设置挂机提示音,即主叫被挂机前听到的提示音。 填写为放音文件名,可在放音文件管理页面查看。 不携带该参数时系统挂机前不放音。 userData 否 String(1-256) 用户自定义数据,会在该次通话的后续状态报告和话单中原样返回。 不允许携带以下字符:“{”,“}”(即大括号)。 不允许包含中文字符,如果包含中文字符请采用Base64编码。 说明: 当X模式callin事件响应中的userData包含中文时,平台会终止呼叫接续。 消息样例 接续被叫通话 HTTP/1.1 200 OKContent-Type: application/JSON;charset=UTF-8Content-Length: xx{"operation":"connect","connectInfo":{"calleeNum":"+86156****6201","maxDuration":0,"waitVoice":"waitVoice.wav","recordFlag":"true","recordHintTone":"recordHintTone.wav","userData":"testuserdate"}} 结束本次呼叫 HTTP/1.1 200 OKContent-Type: application/JSON;charset=UTF-8Content-Length: xx{"operation":"close","closeInfo":{"closeHintTone":"closeHintTone.wav","userData":"testuserdate"}}
-
请求参数 X模式中,任意用户呼叫隐私号码X,隐私保护通话平台接收到呼叫后,根据客户服务器返回的绑定关系转接或挂断呼叫。 注:以下流程和接口示例以A用户呼叫X,企业服务器返回被叫号码B,B用户接听为例,流程和接口示例仅供参考,请以实际消息为准。 图1 X模式业务流程 表2 请求Headers参数说明 参数名称 是否必选 参数类型 说明 Content-Type 是 String 固定填写为application/json;charset=UTF-8。 Authorization 是 String 固定填写为AKSK realm="SDP",profile="UsernameToken",type="Appkey"。 X-AKSK 是 String 取值为UsernameToken Username="APP_Key的值", PasswordDigest="PasswordDigest的值", Nonce="随机数", Created="随机数生成时间"。 PasswordDigest:根据PasswordDigest = Base64 (HMAC-SHA256 (Password,Nonce + Created))生成。其中,Password为APP_Secret的值。Nonce、Created、Password直接进行字符串拼接即可,无需包含+号和空格。 Nonce:客户发送请求时生成的一个随机数,长度为1~128位,可包含数字和大小写字母。例如:66C92B11FF8A425FB8D4CCFE0ED9ED1F。 Created:随机数生成时间。采用标准UTC格式,例如:2018-02-12T15:30:20Z。不同编程语言中将UTC时间戳转换为普通时间时使用的格式不同,部分语言可参考表3。 表3 不同编程语言的时间格式 编程语言 时间格式 Java yyyy-MM-dd'T'HH:mm:ss'Z' PHP Y-m-d\TH:i:s\Z Python %Y-%m-%dT%H:%M:%SZ C# yyyy-MM-ddTHH:mm:ssZ Node.js toISOString().replace(/.[0-9]+\Z/, 'Z') 注:Node.js中,使用toISOString()转换后的时间格式去除毫秒后即为本接口要求的时间格式。 表4 请求Body参数说明 参数名称 是否必选 参数类型 说明 eventType 是 String(枚举) 该参数标识通知的事件类型。 取值范围如下: callin:呼入事件 callout:呼出事件 alerting:振铃事件 answer:应答事件 disconnect:挂机事件 statusInfo 否 CallStatusInfo 呼叫状态事件的信息。 当eventType参数为callin、callout、alerting、answer、disconnect时携带。 callin:呼入事件 callout:呼出事件 alerting:振铃事件 answer:应答事件 disconnect:挂机事件 CallStatusInfo定义 表5 callin:呼入事件 参数名称 是否必选 参数类型 说明 timestamp 是 String(1-128) 该呼叫事件发生时隐私保护通话平台的UNIX时间戳。 该参数取值为UTC时间(+8小时为北京时间)格式,即为“yyyy-MM-dd HH:mm:ss”。 sessionId 是 String(1-256) 唯一指定一条通话链路的标识ID。 caller 否 String(1-32) 主叫号码。 号码为全局号码格式(包含国家码),如+86138****0021。 说明: 呼入事件的主叫号码为A号码。 called 否 String(1-32) 被叫号码。 说明: 呼入事件的被叫号码为X号码。 notifyMode 否 String(1-32) 通知模式,仅X模式场景携带。 取值范围如下: Notify:通知模式,客户收到通知后返回HTTP状态码为200的空消息即可。 Block:控制模式,客户需按照接口说明返回响应参数。 不携带该参数时,通知模式为Notify。 接口示例 POST /status HTTP/1.1content-type: application/json;charset=UTF-8authorization: AKSK realm="SDP",profile="UsernameToken",type="Appkey"x-aksk: UsernameToken Username="************",PasswordDigest="*************",Nonce="ac1c911c4792492687f8f6b2264a491e",Created="2018-05-26T00:35:30Z"content-length:xx {"eventType":"callin","statusInfo":{"sessionId":"1201_7767_4294967295_20190103031118@callenabler246.huaweicaas.com","timestamp":"2019-01-03 03:11:18","caller":"+86138****0021","called":"+86138****0022","notifyMode":"Block"}} 注:客户若收到Block模式的事件通知,需按照接口说明返回响应参数,指示对呼叫事件的处理操作(接口说明见Block模式)。此处以客户服务器回复接续被叫号码B为例。 HTTP/1.1 200 Content-Length: xx {"connectInfo":{"lastMinVoice":"lastMinVoice001.wav","userData":"d77b5e3cbd234159af401d63f559f896","displayCalleeNum":"+86138****0022","recordFlag":true,"calleeNum":"+86138****7021","maxDuration":0,"recordHintTone":"recordHintTone001.wav","waitVoice":"waitVoice001.wav"},"operation":"connect","userData":"d77b5e3cbd234159af401d63f559f896"} 表6 callout:呼出事件 参数名称 是否必选 参数类型 说明 timestamp 是 String(1-128) 该呼叫事件发生时隐私保护通话平台的UNIX时间戳。 该参数取值为UTC时间(+8小时为北京时间)格式,即为“yyyy-MM-dd HH:mm:ss”。 sessionId 是 String(1-256) 唯一指定一条通话链路的标识ID。 caller 否 String(1-32) 主叫号码。 号码为全局号码格式(包含国家码),如+86138****0021。 说明: 呼出事件的主叫号码为X号码。 called 否 String(1-32) 被叫号码。 说明: 呼出事件的被叫号码为B号码。 subscriptionId 否 String(1-64) 绑定ID。 userData 否 String(1-256) 用户附属信息。 当客户在该接口Block模式响应参数中携带了“userData”时,对应呼叫后续的通知消息中都会携带此参数。 接口示例 POST /status HTTP/1.1content-type: application/json;charset=UTF-8authorization: AKSK realm="SDP",profile="UsernameToken",type="Appkey"x-aksk: UsernameToken Username="************",PasswordDigest="*************",Nonce="ac1c911c4792492687f8f6b2264a491e",Created="2018-05-26T00:35:30Z"content-length:xx{"eventType":"callout","statusInfo":{"sessionId":"1201_7767_4294967295_20190103031118@callenabler246.huaweicaas.com","timestamp":"2019-01-03 03:11:20","caller":"+86138****0022","called":"+86138****7021","userData":"d77b5e3cbd234159af401d63f559f896","subscriptionId":"********"}} 表7 alerting:振铃事件 参数名称 是否必选 参数类型 说明 timestamp 是 String(1-128) 该呼叫事件发生时隐私保护通话平台的UNIX时间戳。 该参数取值为UTC时间(+8小时为北京时间)格式,即为“yyyy-MM-dd HH:mm:ss”。 userData 否 String(1-256) 用户附属信息。 当客户在该接口Block模式响应参数中携带了“userData”时,对应呼叫后续的通知消息中都会携带此参数。 sessionId 是 String(1-256) 唯一指定一条通话链路的标识ID。 caller 否 String(1-32) 主叫号码。 号码为全局号码格式(包含国家码),如+86138****0021。 说明: 振铃事件的主叫号码为X号码。 called 否 String(1-32) 被叫号码。 说明: 振铃事件的被叫号码为B号码。 subscriptionId 否 String(1-64) 绑定ID。 接口示例 POST /status HTTP/1.1content-type: application/json;charset=UTF-8authorization: AKSK realm="SDP",profile="UsernameToken",type="Appkey"x-aksk: UsernameToken Username="************",PasswordDigest="*************",Nonce="ac1c911c4792492687f8f6b2264a491e",Created="2018-05-26T00:35:30Z"content-length:xx {"eventType":"alerting","statusInfo":{"sessionId":"1201_7767_4294967295_20190103031118@callenabler246.huaweicaas.com","timestamp":"2019-01-03 03:11:21","caller":"+86138****0022","called":"+86138****7021","userData":"d77b5e3cbd234159af401d63f559f896","subscriptionId":"********"}} 表8 answer:应答事件 参数名称 是否必选 参数类型 说明 timestamp 是 String(1-128) 该呼叫事件发生时隐私保护通话平台的UNIX时间戳。 该参数取值为UTC时间(+8小时为北京时间)格式,即为“yyyy-MM-dd HH:mm:ss”。 userData 否 String(1-256) 用户附属信息。 当客户在该接口Block模式响应参数中携带了“userData”时,对应呼叫后续的通知消息中都会携带此参数。 sessionId 是 String(1-256) 唯一指定一条通话链路的标识ID。 caller 否 String(1-32) 主叫号码。 号码为全局号码格式(包含国家码),如+86138****0021。 说明: 应答事件的主叫号码为X号码。 called 否 String(1-32) 被叫号码。 说明: 应答事件的被叫号码为B号码。 subscriptionId 否 String(1-64) 绑定ID。 接口示例 POST /status HTTP/1.1content-type: application/json;charset=UTF-8authorization: AKSK realm="SDP",profile="UsernameToken",type="Appkey"x-aksk: UsernameToken Username="************",PasswordDigest="*************",Nonce="ac1c911c4792492687f8f6b2264a491e",Created="2018-05-26T00:35:30Z"content-length:xx {"eventType":"answer","statusInfo":{"sessionId":"1201_7767_4294967295_20190103031118@callenabler246.huaweicaas.com","timestamp":"2019-01-03 03:11:22","caller":"+86138****0022","called":"+86138****7021","userData":"d77b5e3cbd234159af401d63f559f896","subscriptionId":"********"}} 表9 disconnect:挂机事件 参数名称 是否必选 参数类型 说明 timestamp 是 String(1-128) 该呼叫事件发生时隐私保护通话平台的UNIX时间戳。 该参数取值为UTC时间(+8小时为北京时间)格式,即为“yyyy-MM-dd HH:mm:ss”。 userData 否 String(1-256) 用户附属信息。 当客户在该接口Block模式响应参数中携带了“userData”时,对应呼叫后续的通知消息中都会携带此参数。 sessionId 是 String(1-256) 唯一指定一条通话链路的标识ID。 caller 否 String(1-32) 主叫号码。 号码为全局号码格式(包含国家码),如+86138****0021。 说明: 此处返回号码非真实主被叫号码,真实主被叫号码请以fee事件中的返回值为准。 called 否 String(1-32) 被叫号码。 说明: 此处返回号码非真实主被叫号码,真实主被叫号码请以fee事件中的返回值为准。 stateCode 否 Integer 通话挂机的原因值,仅当eventType为disconnect时携带。 取值范围及表示的含义请参考通话挂机原因值说明。 stateDesc 否 String(1-128) 通话挂机的原因值的描述,仅当eventType为disconnect时携带。 subscriptionId 否 String(1-64) 绑定ID。 callRelDirection 否 Integer 主被叫通话结束后的挂机方向。 1:主叫主动挂机 2:被叫主动挂机 说明: 使用该参数的场景请联系华为云客服获取。 接口示例 POST /status HTTP/1.1content-type: application/json;charset=UTF-8authorization: AKSK realm="SDP",profile="UsernameToken",type="Appkey"x-aksk: UsernameToken Username="************",PasswordDigest="*************",Nonce="ac1c911c4792492687f8f6b2264a491e",Created="2018-05-26T00:35:30Z"content-length:xx {"eventType":"disconnect","statusInfo":{"sessionId":"1201_7767_4294967295_20190103031118@callenabler246.huaweicaas.com","timestamp":"2019-01-03 03:11:42","caller":"+86138****0022","called":"+86138****7021","userData":"d77b5e3cbd234159af401d63f559f896","stateCode":0,"stateDesc":"The user releases the call.","subscriptionId":"********"}}
-
使用说明 前提条件 客户添加应用时需设置呼叫状态接收地址,并确保提供的地址能够正常处理隐私保护通话平台发送的通知消息。 如果需要单独接收呼入事件(callin),需联系客服,提供呼入事件状态接收地址。 若需要使用X模式自定义放音,需要提前在放音文件管理页面上传并等待审核通过。 使用限制 业务平台推送呼叫状态给开发者应用,仅支持POST方式。 注意事项 若平台给客户推送呼叫事件通知(不包括callin事件以外的其他呼叫事件)后未收到成功响应,视为推送失败,平台会重新推送呼叫事件通知,直至客户返回成功响应。平台最多重推6次,分别于1分钟、4分钟、9分钟、106分钟、203分钟和300分钟后重推。 若没有收到平台推送请参考收不到呼叫事件和话单通知如何处理? X模式支持单次通话进行的最长时间(收到callin事件后,返回对呼叫事件的处理操作时设置maxDuration参数),到期后系统自动挂断通话。 若要使用录音功能,需要完成以下两个步骤: 修改X模式应用,“是否开通录音”选择“是”。 返回对呼叫事件的处理操作时设置“recordFlag”为“true”。 若要使用短信功能,需要完成以下两个步骤: 修改X模式应用,“是否开通短信”选择“是”; 订购用于X模式应用的号码时,“是否需要短信功能”选择“是”。
-
接口示例 接口示例仅供参考,请以实际消息为准。 请求示例 GET /rest/provision/voice/record/v1.0?fileName=****.wav&recordDomain=huawei HTTP1.1 content-type: application/json;charset=UTF-8authorization: AKSK realm="SDP",profile="UsernameToken",type="Appkey"x-aksk: UsernameToken Username="************",PasswordDigest="*************",Nonce="ac1c911c4792492687f8f6b2264a491e",Created="2018-05-26T00:35:30Z"content-length:xx 响应示例 HTTP/1.1 301 Moved Permanently Location: http://**** Connection: close Content-Length: 0
更多精彩内容
CDN加速
GaussDB
文字转换成语音
免费的服务器
如何创建网站
域名网站购买
私有云桌面
云主机哪个好
域名怎么备案
手机云电脑
SSL证书申请
云点播服务器
免费OCR是什么
电脑云桌面
域名备案怎么弄
语音转文字
文字图片识别
云桌面是什么
网址安全检测
网站建设搭建
国外CDN加速
SSL免费证书申请
短信批量发送
图片OCR识别
云数据库MySQL
个人域名购买
录音转文字
扫描图片识别文字
OCR图片识别
行驶证识别
虚拟电话号码
电话呼叫中心软件
怎么制作一个网站
Email注册网站
华为VNC
图像文字识别
企业网站制作
个人网站搭建
华为云计算
免费租用云托管
云桌面云服务器
ocr文字识别免费版
HTTPS证书申请
图片文字识别转换
国外域名注册商
使用免费虚拟主机
云电脑主机多少钱
鲲鹏云手机
短信验证码平台
OCR图片文字识别
SSL证书是什么
申请企业邮箱步骤
免费的企业用邮箱
云免流搭建教程
域名价格