注册或者登录开发者账号流程说明请参考登录注册>>
创建应用及申请上线流程说明请参考创建应用及申请上线>>
申请上线应用之前需完成资质认证,具体认证流程请参考账号认证>>
注意: 为了确保数据隐私和安全, REST API须通过HTTPS方式请求(查询子账号信息接口除外)
URL格式
https://api.ucpaas.com/{version}/Accounts/{accountSid}/{function}/{operation}?sig={SigParameter}
URL参数属性说明
属性 | 说明 | |
---|---|---|
version | 云之讯REST API版本号,当前版本号为:2014-06-30 | |
Accounts | 此参数为默认固定值 | |
accountSid | 注册云之讯官网,在控制台中即可获取此参数 | |
function | 业务功能 | |
operation | 业务操作,业务功能的各类具体操作分支 | |
SigParameter | 请求URL必须带有此参数 |
HTTP标准包头字段(必填)
属性 | 说明 | |
---|---|---|
Accept | 客户端响应接收数据格式:application/json | |
Content-Type | 类型:application/json;charset=utf-8 | |
Authorization | 验证信息 | |
Content-Length | 包体长度 |
关键点
SigParameter是REST API 验证参数 URL后必须带有sig参数,sig= MD5(账户Id + 账户授权令牌 + 时间戳),共32位(注:转成大写) 使用MD5加密(账户Id + 账户授权令牌 + 时间戳),共32位 时间戳是当前系统时间(24小时制),格式“yyyyMMddHHmmss”。时间戳有效时间为50分钟。 Authorization是包头验证信息 使用Base64编码(账户Id + 冒号 + 时间戳) 冒号为英文冒号 时间戳是当前系统时间(24小时制),格式“yyyyMMddHHmmss”,需与SigParameter中时间戳相同
双向绑定号码同步请求路径
https://api.ucpaas.com/{version}/Accounts/{accountSid}/safetyCalls/applyNumber?sig={SigParameter}
请求参数说明
参数名 | 要求 | 备注 | |
---|---|---|---|
appId | 必选 | 创建应用时系统分配的唯一标示,在“应用列表”中可以查询。 | |
caller | 必选 | 主叫号码(必须为11位手机号,号码前加0086,如008613631686024) | |
callee | 必选 | 规则同caller | |
callerRingName | 可选 | 主叫呼入时播放IVR语音文件名 | |
calleeRingName | 可选 | 被叫呼入时播放IVR语音文件名 | |
dstVirtualNum | 必选 | 分配的直呼虚拟中间保护号码 规则为0086+区号首位0+号码 | |
bindId | 必选 | 绑定id,客户方平台保证唯一 | |
maxAge | 必选 | 主被叫+虚拟保护号码允许合作方最大cache存储时间(单位秒) | |
cityId | 必选 | 城市id | |
requestId | 可选 | 字符串最大长度不超过128字节,该requestId在后面话单和录音URL推送中原样带回 | |
record | 可选 | 是否录音,0表示不录音,1表示录音。默认为不录音 | |
maxAllowTime | 可选 | 允许最大通话时间单位分钟,不填默认为10分钟 | |
statusUrl | 可选 | 状态回调通知地址,正式环境可以配置默认推送地址 | |
hangupUrl | 可选 | 话单推送地址,不填推到默认协商地址 | |
recordUrl | 可选 | 录单URL回调通知地址,不填推到默认协商地址 |
响应参数说明
参数名 | 要求 | 备注 | |
---|---|---|---|
appId | 必选 | 创建应用时系统分配的唯一标示,在“应用列表”中可以查询。 | |
caller | 必选 | 主叫号码 | |
callee | 必选 | 被叫号码 | |
dstVirtualNum | 必选 | 用户指定分配的直呼虚拟中间保护号码 规则为0086+区号首位0+号码 | |
bindId | 必选 | 分配唯一针对中间号码与主被叫号码的绑定Id |
请求包体
Encoding: UTF-8 Http-Method: POST
包头
Headers: {Accept=[application/json], accept-encoding=[gzip,deflate], connection=[Keep-Alive], Content-Length=[316], content-type=[application/json;charset=UTF-8], host=[127.0.0.1], Authorization:ZTAzYmM5MTA2YzZlZDBlYWViZmNlOGMzNjhmZGNkNDg6MjAxNDA2MjMxODQ1MjM=
包体
正确响应包体
Response-Code: 200 Content-Type: application/json;charset=utf-8 Headers: {Content-Type=[application/json;charset=utf-8], Content-Length=[163], Date=[Wed, 15 Jun 2016 09:13:58 GMT]} Payload: {"caller":"18612341234","appId":"7df01234567841ed816564bb12345678","bindId":"7df0123456ipoopujk7841ed816564bb12345678","dstVirtualNum":"0086201000123","callee":"13611133396"}
错误响应包体
Response-Code: 200 Content-Type: application/json;charset=utf-8 Headers: {Content-Type=[application/json;charset=utf-8], Content-Length=[22], Date=[Wed, 15 Jun 2016 09:21:54 GMT]} Payload: {"errorCode":"102102"}
双向绑定号码申请路径
https://api.ucpaas.com/{version}/Accounts/{accountSid}/safetyCalls/allocNumber?sig={SigParameter}
请求参数说明
参数名 | 要求 | 备注 | |
---|---|---|---|
appId | 必选 | 创建应用时系统分配的唯一标示,在“应用列表”中可以查询。 | |
caller | 必选 | 主叫号码(必须为11位手机号,号码前加0086,如008613631686024) | |
callee | 必选 | 规则同caller | |
callerRingName | 可选 | 主叫呼入时播放IVR语音文件名 | |
calleeRingName | 可选 | 被叫呼入时播放IVR语音文件名 | |
maxAge | 必选 | 主被叫+虚拟保护号码允许合作方最大cache存储时间(单位秒) | |
cityId | 必选 | 城市id | |
requestId | 可选 | 字符串最大长度不超过128字节,该requestId在后面话单和录音URL推送中原样带回 | |
record | 可选 | 是否录音,0表示不录音,1表示录音。默认为不录音 | |
maxAllowTime | 可选 | 允许最大通话时间单位分钟,不填默认为10分钟 | |
statusUrl | 可选 | 状态回调通知地址,正式环境可以配置默认推送地址 | |
hangupUrl | 可选 | 话单推送地址,不填推到默认协商地址 | |
recordUrl | 可选 | 录单URL回调通知地址,不填推到默认协商地址 |
响应参数说明
参数名 | 要求 | 备注 | |
---|---|---|---|
appId | 必选 | 创建应用时系统分配的唯一标示,在“应用列表”中可以查询。 | |
caller | 必选 | 主叫号码(必须为11位手机号,号码前加0086,如008613631686024) | |
callee | 必选 | 规则同caller | |
dstVirtualNum | 必选 | 分配的直呼虚拟中间保护号码 | |
bindId | 必选 | 分配唯一针对中间号码与主被叫号码的唯一绑定Id |
请求包体
Encoding: UTF-8 Http-Method: POST
包头
Headers: {Accept=[application/json], accept-encoding=[gzip,deflate], connection=[Keep-Alive], Content-Length=[316], content-type=[application/json;charset=UTF-8], host=[127.0.0.1], Authorization:ZTAzYmM5MTA2YzZlZDBlYWViZmNlOGMzNjhmZGNkNDg6MjAxNDA2MjMxODQ1MjM=
包体
正确响应包体
Response-Code: 200 Content-Type: application/json;charset=utf-8 Headers: {Content-Type=[application/json;charset=utf-8], Content-Length=[163], Date=[Wed, 15 Jun 2016 09:13:58 GMT]} Payload: {"caller":"18612341234","appId":"7df01234567841ed816564bb12345678","bindId":"7df0123456784ikyui1ed816564bb12345678","dstVirtualNum":"0086201000123","callee":"13611133396"}
错误响应包体
Response-Code: 200 Content-Type: application/json;charset=utf-8 Headers: {Content-Type=[application/json;charset=utf-8], Content-Length=[22], Date=[Wed, 15 Jun 2016 09:21:54 GMT]} Payload: {"errorCode":"102102"}
删除双方号码绑定关系路径
https://api.ucpaas.com/{version}/Accounts/{accountSid}/safetyCalls/freeNumber?sig={SigParameter}
请求参数说明
参数名 | 要求 | 备注 | |
---|---|---|---|
appId | 必选 | 创建应用时系统分配的唯一标示,在“应用列表”中可以查询。 | |
bindId | 必选 | 双方号码+中间号绑定ID,该ID全局唯一 | |
cityId | 必选 | 城市Id格式为 0086+去零区号 |
请求包体
Encoding: UTF-8 Http-Method: POST
包头
Headers: {Accept=[application/json], accept-encoding=[gzip,deflate], connection=[Keep-Alive], Content-Length=[316], content-type=[application/json;charset=UTF-8], host=[127.0.0.1], Authorization:ZTAzYmM5MTA2YzZlZDBlYWViZmNlOGMzNjhmZGNkNDg6MjAxNDA2MjMxODQ1MjM=
包体
正确响应包体
Response-Code: 200 Content-Type: application/json;charset=utf-8 Headers: {Content-Type=[application/json;charset=utf-8], Content-Length=[22], Date=[Wed, 15 Jun 2016 09:28:39 GMT]} Payload: {"errorCode":"000000"}
错误响应包体
Response-Code: 200 Content-Type: application/json;charset=utf-8 Headers: {Content-Type=[application/json;charset=utf-8], Content-Length=[22], Date=[Wed, 15 Jun 2016 09:24:15 GMT]} Payload: {"errorCode":"104127"}
获取城市并发数路径
https://api.ucpaas.com/{version}/Accounts/{accountSid}/safetyCalls/getConcurrent?sig={SigParameter}
请求包体
Encoding: UTF-8 Http-Method: POST
包头
Headers: {Accept=[application/json], accept-encoding=[gzip,deflate], connection=[Keep-Alive], Content-Length=[2], content-type=[application/json;charset=UTF-8], Authorization:ZTAzYmM5MTA2YzZlZDBlYWViZmNlOGMzNjhmZGNkNDg6MjAxNDA2MjMxODQ1MjM=
包体
{"appId":"125489wslfjlsjfklsjfljdslfjkf756962eaefa0",” cityId”:”0086755”}
正确响应包体
Response-Code: 200 Content-Type: application/json;charset=utf-8 Headers: {Content-Type=[application/json;charset=utf-8], Content-Length=[39], Date=[Wed, 15 Jun 2016 09:33:16 GMT]} Payload: {"total":"0","008610":"0","008620":"0"}
错误响应包体
Response-Code: 200 Content-Type: application/json;charset=utf-8 Headers: {Content-Type=[application/json;charset=utf-8], Content-Length=[22], Date=[Wed, 15 Jun 2016 09:35:22 GMT]} Payload: {"errorCode":"100007"}
通话状态回调路径
可通过接口传参给定URL地址或者采用配置默认URL
请求参数说明
参数名 | 要求 | 备注 | |
---|---|---|---|
appId | 必选 | 平台分配 | |
callId | 必选 | 点击通话请求响应中返回的callId | |
requestId | 必选 | 点击通话请求时请求携带的requestId,原样返回 | |
caller | 必选 | 主叫号码 | |
dstVirtualNum | 必选 | 主叫通讯录直拨虚拟保护号码 | |
callee | 必选 | 被叫号码 | |
userFlag | 必选 | 该路通话中用于区分状态属于主叫/被叫 caller:主叫 callee:被叫,非绑定关系中的主被 | |
callStatus | 必选 | invite:发起呼叫 ringing:响铃 answered:接听 refused:拒绝 disconnected:正常挂机 failed:呼叫异常 | |
errorCode | 可选 | sip响应码 | |
timeStamp | 必选 | 状态发生的unix时间戳 | |
bindId | 必选 | 分配唯一针对中间号码与主被叫号码的绑定Id | |
calleeDisplayNum | 可选 | 本次呼叫中被叫所显示号码 |
响应参数说明
参数名 | 要求 | 备注 | |
---|---|---|---|
retcode | 必选 | 返回错误码,0:成功 非0:失败 | |
reason | 必选 | 原因描述 |
请求包体
Encoding: UTF-8 Http-Method: POST
包头
Headers: {Accept=[application/json], Content-Length=[316], content-type=[application/json;charset=UTF-8], host=[127.0.0.1]}
包体
响应包体
Response-Code: 200 Content-Type: application/json;charset=utf-8 Headers: {Content-Type=[application/json;charset=utf-8], Content-Length=[163], Date=[Wed, 15 Jun 2016 09:13:58 GMT]} Payload: {"retcode":0,"reason":"OK“}
话单回调请求地址 可通过接口传参给定URL地址或者采用配置默认URL
请求参数说明
参数名 | 要求 | 备注 | |
---|---|---|---|
appId | 必选 | 应用唯一标识 | |
callId | 必选 | 通话唯一标识Id | |
requestId | 必选 | 接口传入唯一Id | |
caller | 必选 | 主叫号码 | |
callee | 必选 | 主叫通讯录直拨虚拟保护号码 | |
dstVirtualNum | 必选 | 虚拟保护号码即中间号码 | |
callCenterAcceptTime | 必选 | 虚拟保护号码平台收到呼叫时间 | |
startDstCallTime | 必选 | 被叫呼叫开始时间 | |
startDstRingTime | 可选 | 被叫响铃开始时间 | |
dstAcceptTime | 必选 | 被叫接听时间 | |
endCallTime | 必选 | 用户挂机通话结束时间 | |
callEndStatus | 必选 | 通话最后状态 | |
0:未知状态 | |||
1:正常通话 | |||
2:查询呼叫转移被叫号异常 | |||
3:呼叫转移被叫未接通 | |||
4:呼叫转移被叫未接听 | |||
callerDuration | 必选 | 主叫接通虚拟保护号码到通话结束通话时间 | |
calleeDuration | 必选 | 呼叫转接被叫接通收到200ok到通话结束通话时间 | |
bindId | 必选 | 绑定id,客户方平台保证唯一 | |
calleeDisplayNum | 可选 | 本次呼叫中被叫所显示号码 |
响应参数说明
参数名 | 要求 | 备注 | |
---|---|---|---|
retcode | 必选 | 返回错误码,0:成功 非0:失败 | |
reason | 必选 | 原因描述 |
请求包体
Encoding: UTF-8 Http-Method: POST
包头
Headers: {Accept=[application/json], Content-Length=[316], content-type=[application/json;charset=UTF-8], host=[127.0.0.1]}
包体
响应包体
Response-Code: 200 Content-Type: application/json;charset=utf-8 Headers: {Content-Type=[application/json;charset=utf-8], Content-Length=[163], Date=[Wed, 15 Jun 2016 09:13:58 GMT]} Payload: {"retcode":0,"reason":"OK"}
录音回调请求地址
可通过接口传参给定URL地址或者采用配置默认URL
请求参数说明
参数名 | 要求 | 备注 | |
---|---|---|---|
appId | 必选 | 应用唯一标识 | |
callId | 必选 | 通话唯一标识Id | |
requestId | 必选 | 接口传入唯一Id | |
caller | 必选 | 主叫号码 | |
callee | 必选 | 被叫号码 | |
dstVirtualNum | 必选 | 虚拟保护号码即中间号码 | |
recordUrl | 必选 | 录音下载URL | |
bindId | 必选 | 绑定Id, 客户方平台保证唯一 | |
calleeDisplayNum | 可选 | 本次呼叫中被叫所显示号码 |
响应参数说明
参数名 | 要求 | 备注 | |
---|---|---|---|
retcode | 必选 | 返回错误码,0:成功 非0:失败 | |
reason | 必选 | 原因描述 |
请求包体:
Encoding: UTF-8 Http-Method: POST
包头:
Headers: {Accept=[application/json], Content-Length=[316], content-type=[application/json;charset=UTF-8], host=[127.0.0.1]}
响应包体:
Response-Code: 200 Content-Type: application/json;charset=utf-8 Headers: {Content-Type=[application/json;charset=utf-8], Content-Length=[163], Date=[Wed, 15 Jun 2016 09:13:58 GMT]} Payload: {"retcode":0,"reason":"OK"}
Demo下载连接
官网提供java php c# phthon 等语音demo,第三方开发者提供了golang、nodejs等语音的demo 可以参考调用,下载地址请点击>>
http://docs.ucpaas.com/doku.php?id=rest_error
调用接口返回100699 系统内部错误
a.查看接口参数sig是否拼写正确 sig= md5(账户Id + 账户授权令牌 + 时间戳)共32位, md5加密后转大写 b.查看接口参数Authorization是否拼写正确 Authorization=base64(账户Id +冒号+ 时间戳) 时间戳是当前系统时间(24小时制) yyyyMMddHHmmss
调用接口返回100005 访问ip不合法
创建应用时,基础配置中的服务器白名单清空下,如果配置了服务器白名单调用接口必须在白名单上调用,否则就会报此错。