华为云用户手册

  • 请求参数 表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参数说明 参数名称 是否必选 参数类型 说明 virtualNum 否 String(0-32) 指定已申请到的X号码进行绑定。 可在 隐私保护通话 控制台的“号码管理”页面或订购号码成功后返回的号码表中查看已申请到的X号码。 填写为全局号码格式(国家码+11位数字的手机号码),如:+86138****0021。 该参数与areaCode是二选一关系。 同时携带virtualNum和areaCode时系统以virtualNum为准。 areaCode 否 String(0-32) 指定城市码,由隐私保护通话平台从客户已申请到的X号码中选择可用号码进行绑定。 填写为标准格式的城市码,如:0755、010等。 X号码对应城市码可在订购号码成功后返回的号码表中查看,点击查看如何下载号码表。 该参数与virtualNum是二选一关系。 同时携带virtualNum和areaCode时系统以virtualNum为准。 areaMatchMode 否 String(枚举) 号码筛选方式。 0:严格匹配 1:非严格匹配 说明: 携带该参数时,必须同时携带areaCode。 当该参数为0,应用下无对应areaCode的号码时,号码分配失败。 当该参数为1,应用下无对应areaCode的号码时,会优先选择该应用下与areaCode对应区域同省份的号码,若也没有同省份的号码,则从该应用下全部X号码中随机选择。 不携带该参数时,系统默认为严格匹配模式。 bindNum 是 String(1-32) AXE中的A号码。 填写为全局号码格式。 手机号码格式为国家码(如+86)+手机号码(11位数字的手机号码,如138****0001),填写为"+86138****0001"。 固话号码为国家码(如+86)+不带前置0的区号(如755)+本地固话号码(7或8位数字的固话号码,以实际号码为准,如28****01),填写为"+8675528****01"。 说明: 因运营商管控,固话号码只能接收来自X号码的呼叫,不能作为主叫呼叫X号码。即当A号码为固话号码时,其他用户(手机号码)可以拨打X号码后输入分机号联系A,但A无法通过拨打X号码回呼之前通话用户或企业指定号码。 extendNum 否 String(1-4) 分机号,即AXE中的E。仅支持数字,最大4位 ,例如:1234。 取值范围:1-9,01-99,001-999,0001-9999。 该参数仅在指定virtualNum进行绑定时有效。 不携带该参数或取值为空时,则系统自动分配分机号E。 displayNumMode 否 String(枚举) 非A用户呼叫X号码时,A看到的主显号码。 0:X号码; 1:真实主叫号码; 如不携带此参数,系统默认值为0。 说明: 由于运营商管控,当前平台要求该参数必须设置为0,否则呼叫会被运营商拦截。 recordFlag 否 String(枚举) 是否需要针对该绑定关系产生的所有通话录音。 false:表示不录音 true:表示录音。 该参数仅当客户添加应用时申请开通了录音功能才有效。 如果不携带该参数,系统默认不录音。 recordHintTone 否 String(1-128) 该参数仅在recordFlag为true时有效。 该参数用于设置录音提示音,填写为放音文件名,可在放音文件管理页面查看。 不携带该参数表示录音前不播放提示音。 说明: 因隐私协议及运营商管控,录音的呼叫必须携带该参数,否则呼叫会被运营商拦截。 callbackTone 否 String(1-128) A呼叫X时,如果不存在回呼记录,则播放该参数指定的语音文件。填写为放音文名,可在放音文件管理页面查看。 参数callbackTone和callbackNum为二选一关系,两者不能同时携带,两者都不携带时以添加应用时的配置为准。 callbackNum 否 String(1-32) A呼叫X时,如果不存在回呼记录,则转接到该参数指定的号码。填写为全局号码格式(包含国家码),如:+86170****0021或+8675528****08。 参数callbackTone和callbackNum为二选一关系,两者不能同时携带,两者都不携带时以添加应用时的配置为准。 timeUnit 否 String(枚举) 时间单位。 0:小时 1:分钟 携带该参数时,必须同时携带bindExpiredTime和callbackExpiredTime。如不携带此参数,则系统默认为小时。 bindExpiredTime 否 Integer 绑定关系的有效时间,过期后系统会自动解除绑定关系,该绑定关系下的主叫和回呼都不可达。单位:由timeUnit控制。 携带timeUnit参数时,参数取值范如下: 当timeUnit取值为0(小时)时:0~720(小时) 当timeUnit取值为1(分钟)时:0~43200(分钟) 不携带timeUnit参数时,参数取值范围为0~720(小时)。不携带此参数时,系统默认为168小时。 0代表绑定关系永不过期。 说明: 该参数取值须大于等于callbackExpiredTime。 callbackExpiredTime 否 Integer 回呼记录有效时间,过期后系统会自动清除回呼记录,回呼将转接到callbackNum或播放callbackTone提示音。单位:由timeUnit控制。 携带timeUnit参数时,参数取值范如下: 当timeUnit取值为0(小时)时:0~168(小时) 当timeUnit取值为1(分钟)时:0~10080(分钟) 不携带timeUnit参数时,参数取值范围为0~168(小时)。不携带此参数时,系统默认为48小时。 0代表绑定有效期内回呼一直有效。 当绑定关系失效时,回呼记录有效时间无论是否已经到达失效时间都会被清除。 说明: 该参数取值须小于等于bindExpiredTime。当bindExpiredTime为0时,callbackExpiredTime可设置为适用范围的任意值。 userData 否 String(1-256) 用户自定义数据,会在响应消息中原样返回。 不允许携带以下字符:“{”,“}”(即大括号)。 不允许包含中文字符,如果包含中文字符请采用Base64编码。 说明: 若在设置绑定关系时携带该参数,绑定关系对应的呼叫、话单通知消息中也会携带该参数。
  • 使用说明 前提条件 已创建隐私保护通话应用,获取了APP_Key,APP_Secret和APP接入地址。 已申请到隐私保护号码。 若需要使用自定义放音,需要提前在放音文件管理页面上传并等待审核通过。 注意事项 AXE模式支持设置AXE绑定关系有效时长(通过bindExpiredTime参数设置),绑定关系过期后自动解绑;还支持设置回呼记录有效时长(通过callbackExpiredTime参数设置),过期后系统会自动清除回呼记录,回呼将转接到绑定时设置的callbackNum或播放callbackTone提示音。 若要使用录音功能,需要完成以下两个步骤: 创建隐私保护通话应用时,“是否开通录音”选择“是”。 调用本接口设置归属该应用的隐私号码绑定关系时设置“recordFlag”为“true”。 如果是在控制台设置归属该应用的隐私号码绑定关系,需在设置绑定关系时勾选“支持录音”。
  • 接口示例 接口示例仅供参考,请以实际消息为准。 请求示例 POST /rest/provision/caas/privatenumber/v1.0 HTTP1.1 content-type: application/json;charset=UTF-8 authorization: AKSK realm="SDP",profile="UsernameToken",type="Appkey" x-aksk: UsernameToken Username="************",PasswordDigest="*************",Nonce="ac1c911c4792492687f8f6b2264a491e",Created="2018-05-26T00:35:30Z" content-length:xx { "origNum":"+86138****8888", "privateNum":"+86138****6666", "preVoice": { "callerHintTone": "callerHintTone.wav", "calleeHintTone": "calleeHintTone.wav" } } 响应示例 HTTP/1.1 200 OK Content-Type: application/json;charset=utf-8 Content-Length: xx { "resultcode":"0", "resultdesc":"Success", "origNum":"+86138****8888", "privateNum":"+86138****6666", "subscriptionId":"******" }
  • 结果码说明 表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; 放音文件需上传通过审核才可通过接口调用,点击查看如何上传审核。 参考接口参数说明,检查是否携带了不能同时携带的参数; 参数长度或格式是否错误。 检查userData是否包含中文字符,若包含,请剔除中文后重试,或将内容Base64编码后重试。 1010003 Invalid app_key. 无效的app_key。 请检查请求携带的app_key填写是否正确。 1010008 The status of the app_key is unavailable. app_key状态异常。 请检查请求携带的app_key所属应用状态是否正常。应用状态可登录控制台后在“应用管理”界面查看。 1010010 The flow control upper limit is reached on the platform. 平台达到系统流控上限。 请稍等一分钟后再试。 1010029 The subscriber status is frozen. 用户账号已冻结。 查看账户是否欠费。如欠费需充值后才能继续使用。 若未欠费,请联系华为云客服处理。 1010040 The app_key is not allowed to invoke the API. app_key没有调用本API的权限。 调用的接口和app_key所属的应用模式不一致。如添加应用时选择的AXB模式的应用,调用接口时只能调用AXB模式的接口,不能调用其他模式的接口。 1011001 Account does not exist. 账号不存在。 出现该错误码可能有以下两个原因: 调用接口时指定的X号码(privateNum)可能不是该应用已申请的隐私号码,请确认privateNum参数的填写是否正确; 调用接口时填写的X号码(privateNum)格式不正确,请根据接口文档修改号码格式后再次尝试。 1011002 Insufficient number resources. 号码资源不足。 没有可分配的X号码,请申请新的号码资源或修改areaCode的值。点击查看处理方法 1011003 Exceeded the upper limit of resources that can be applied for. 超过允许申请的资源上限。 指定的A号码已绑定了5个X号码,请更换origNum参数的值。 1011005 Resources have been allocated. 资源已经分配。 出现该错误码表示调用AX模式绑定接口时指定的X号码(privateNum)已和其他A号码绑定,可更换其他X号码进行绑定。 如果该X号码的绑定关系可以解除,您还可以调用AX模式解绑接口解除该绑定关系后,再使用该X号码进行绑定。 1012012 Application does not open recording function. 应用未开启录音功能。 请确认app_key所属的应用是否开启了录音功能,点击查看如何开启录音功能。 1012102 The number status is abnormal. 号码状态异常。 出现该错误码表示调用接口时指定的X号码因投诉或号码状态异常被隐私保护通话平台加入了黑名单。 请查看订购号码时填写的邮箱是否有业务下线通知邮件,如果没有,请拨打400电话联系华为云客服处理。 1016002 The record already exists. 记录已经存在。 指定的A号码和X号码之间已经存在绑定关系,请更换origNum或privateNum参数的值。 1023005 Virtual number over license limit. 隐私号码超出license限制。 请联系客服处理。 1020166 The app client ip is not in ip white list. 对端app IP不在白名单列表中。 联系管理员检查IP白名单是否配置正确。 1020176 Authentication failed, try again later 鉴权失败,稍后重试 IP因鉴权失败次数过多导致被拉黑,请30分钟后重试,或联系管理员放通该IP。 1020178 The transparent mode is not allowed. 不允许显示真实主叫号码。 您的应用不支持显示真实主叫号码,请修改calleeNumDisplay参数的取值为“0”(显示X号码)后再次绑定。 1020182 The number succeeds the max bind times per day 该号码超过当天最大绑定次数。 请隔日再重新绑定。 500 1010001 Internal system error. 系统错误。 请联系管理员处理。 1023001 Internal error. 内部错误。 1023002 Response timeout. 响应超时。 重新发送一次请求,若依然返回响应超时,请联系管理员处理。
  • 响应参数 表6 响应结果参数 参数名称 是否必选 参数类型 说明 resultcode 是 String(1-32) 请求返回的结果码。 resultdesc 是 String(1-256) 操作结果描述。 origNum 否 String(1-32) A号码。成功响应时必定返回。 privateNum 否 String(1-32) 绑定的X号码。成功响应时必定返回。 subscriptionId 否 String(1-64) 绑定ID,唯一标识一组绑定关系。成功响应时必定返回。请记录该ID用于后续接口调用。
  • 请求参数 表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参数说明 参数名称 是否必选 参数类型 说明 origNum 是 String(1-32) AX中的A号码。 填写为全局号码格式。 手机号码格式为国家码(如+86)+手机号码(11位数字的手机号码,如138****0001),填写为"+86138****0001"。 固话号码为国家码(如+86)+不带前置0的区号(如755)+本地固话号码(7或8位数字的固话号码,以实际号码为准,如28****01),填写为"+8675528****01"。 说明: 因运营商管控,固话号码只能接收来自X号码的呼叫,不能作为主叫呼叫X号码。即当A号码为固话号码时,其他用户(手机号码)可以拨打X号码联系A,但A无法通过拨打X号码联系其他用户。 privateNum 否 String(1-32) 指定已申请到的X号码进行绑定。 可在隐私保护通话控制台的“号码管理”页面或订购号码成功后返回的号码表中查看已申请到的X号码。 填写为全局号码格式(国家码+11位数字的手机号码),如:+86138****0021。 说明: 该参数与areaCode是二选一关系。 同时携带privateNum和areaCode时系统以privateNum为准。 areaCode 否 String(0-32) 指定城市码,由隐私保护通话平台从客户已申请到的X号码中选择可用号码进行绑定。 填写为标准格式的城市码,如:0755、010等。 X号码对应城市码可在订购号码成功后返回的号码表中查看,点击查看如何下载号码表。 说明: 该参数与privateNum是二选一关系,但携带该参数时必须同时携带privateNumType。 同时携带privateNum和areaCode时系统以privateNum为准。 privateNumType 否 String(枚举) 固定填写为mobile-virtual。 说明: 当参数privateNum为空时必须携带该参数。 areaMatchMode 否 String(枚举) 号码筛选方式。 0:严格匹配 1:非严格匹配 说明: 不携带该参数时,系统默认为严格匹配模式。 携带该参数时,必须同时携带areaCode。 当该参数为0,应用下无对应areaCode的号码时,号码分配失败。 当该参数为1,应用下无对应areaCode的号码时,会优先选择该应用下与areaCode对应区域同省份的号码,若也没有同省份的号码,则从该应用下全部X号码中随机选择。 recordFlag 否 String(枚举) 是否需要针对该绑定关系产生的所有通话录音。 false:表示不录音 true:表示录音。 如果不携带该参数,系统默认不录音。 说明: 该参数仅当客户添加应用时申请开通了录音功能才有效。 recordHintTone 否 String(1-128) 该参数仅在recordFlag为true时有效。 该参数用于设置录音提示音,填写为放音文件名,可在放音文件管理页面查看。 不携带该参数表示录音前不播放提示音。 说明: 因隐私协议及运营商管控,录音的呼叫必须携带该参数,否则呼叫会被运营商拦截。 preVoice 否 ApiPlayInfo 设置个性化通话前等待音,即主叫听到的回铃音。 calleeNumDisplay 否 String(枚举) 设置非A用户呼叫X时,A接到呼叫时的主显号码。 取值: 0:显示X号码; 1:显示真实主叫号码。 说明: 使用该参数的场景请联系华为云客服获取。由于运营商管控,当前平台要求该参数必须设置为0,否则绑定会失败、呼叫会被运营商拦截。 privateSms 否 String(枚举) 设置该绑定关系是否支持短信功能。 若客户添加应用时未开通短信功能,请勿携带此参数。 取值范围: false:不支持短信 true:支持短信 如果客户添加应用时开通了短信功能,不携带该参数时系统默认支持短信。 maxDuration 否 Integer(0~1440) 设置允许单次通话进行的最长时间,单位为分钟。通话时间从接通被叫的时刻开始计算。 0:系统不主动结束通话,由主被叫双方结束通话。 1~1440:当通话时长达到此配置值,系统主动结束通话。 不携带时,参数值默认为0。 lastMinVoice 否 String(0-128) 设置通话剩余最后一分钟时的提示音,填写为放音文件名,可在放音文件管理页面查看。 当maxDuration字段设置为非0时此参数有效。 不携带该参数表示通话剩余最后一分钟时不放音。 userData 否 String(1-256) 用户自定义数据。 不允许携带以下字符:“{”,“}”(即大括号)。 不允许包含中文字符,如果包含中文字符请采用Base64编码。 说明: 若在设置绑定关系时携带该参数,绑定关系对应的呼叫、话单和短信通知消息中也会携带该参数。 turnFlag 否 String(枚举) 设置隐私号开关机状态。 取值范围: on:开机状态 off:关机状态 不携带该参数时默认为开机状态。 callDirection 否 Integer 呼叫方向控制。表示该绑定关系允许的呼叫方向。 取值范围如下: 0:允许双向呼叫。 1:只允许A呼叫X号码。 2:只允许其他号码呼叫X号码。 如果不携带该参数,系统默认该参数为0。 表5 ApiPlayInfo定义 参数名称 是否必选 参数类型 说明 callerHintTone 否 String(0-128) 设置A呼叫X时的通话前等待音,填写为放音文件名,可在放音文件管理页面查看。 不携带该参数时A会听到真实被叫的回铃音。 calleeHintTone 否 String(0-128) 设置非A用户呼叫X时的通话前等待音,填写为放音文件名,可在放音文件管理页面查看。 不携带该参数时用户会听到A的回铃音。
  • 使用说明 前提条件 已创建隐私保护通话应用,获取了APP_Key,APP_Secret和APP接入地址。 已申请到隐私保护号码。 若需要使用自定义放音,需要提前在放音文件管理页面上传并等待审核通过。 使用限制 1个A号码同时只能绑定5个X号码。 注意事项 AX模式支持设置单次通话进行的最长时间(通过maxDuration参数设置),到期系统主动挂断通话。 若要使用录音功能,需要完成以下两个步骤: 创建隐私保护通话应用时,“是否开通录音”选择“是”。 调用本接口设置归属该应用的隐私号码绑定关系时设置“recordFlag”为“true”。 注:如果是在控制台设置归属该应用的隐私号码绑定关系,需在设置绑定关系时勾选“支持录音”。 若要使用短信功能,需要完成以下三个步骤: 创建隐私保护通话应用时,“是否开通短信”选择“是”; 订购号码时,“是否需要短信功能”选择“是”; 调用本接口设置归属该应用的隐私号码绑定关系时不携带“privateSms”或设置“privateSms”为“true”。 如果是在控制台设置归属该应用的隐私号码绑定关系,需在设置绑定关系时勾选“支持短信”。
  • 通话挂机原因值说明 分类 错误码 描述 - 0 接通后主动挂机 绑定关系 8013 无效AX模式呼叫(存在AX绑定,但无临时被叫) 8014 无效AXB/X模式呼叫(绑定关系不存在,号码格式错误等) 8016 AX/AXB模式呼叫方向不允许 8019 回呼记录不存在 AXE模式,A呼叫X场景 AX模式,A回呼X场景 8022 绑定关系不存在或已过期(AXE模式,B呼X场景) 8030 AXYB模式绑定关系不存在 8031 AXYB模式呼叫过程中分配Y号码失败 主叫 7501 被叫振铃前主叫挂机 7502 被叫振铃后主叫挂机 7516 呼叫转接前主叫挂机。例如AXE模式主叫输入分机号前主动挂机 8032 AXYB模式呼叫过程中原号码拨打自己绑定的隐私号导致呼叫失败 8033 收到分机号为空 号码 8025 呼叫的X号码不存在(AXE模式) 被叫 7503 被叫拒接 7504 呼叫被拒绝,可能的原因如下: 被叫拒接 被叫开通免打扰、黑名单一类的呼叫限制业务 被叫系统拦截,可能原因是安装了拦截软件,或者设置了黑名单 8035 隐私保护呼叫平台接续超时,超时时间为呼叫转接后90秒左右 8100 被叫号码不存在 8101 被叫振铃后无应答,运营商网络原因,超时时间由运营商决定 8102 被叫用户正忙(被叫正在通话、振铃等) 8103 被叫信号异常,导致运营商未接续到被叫 8104 被叫已关机(被叫处于关机、飞行模式、无网络等状态) 8105 被叫已停机 租户 7100 应用信息不存在 7101 应用未申请隐私号码资源 7105 业务类型不匹配 7106 应用无隐私保护通话能力 7108 用户状态已冻结 7507 无放音文件 8006 X模式放音文件不存在 8010 超过通话最大时长挂机 管控 7001 开发者呼叫频次管控 7002 应用呼叫频次管控 7003 主显号码呼叫频次管控 7004 被叫黑名单呼叫管控 7005 主叫黑名单管控 7107 安全管控提示音放音失败 7109 租户语音端口不足 7500 呼叫前缀被限制 8018 业务无权限(包含:不存在AX绑定关系) 8023 不允许固话号码作为主叫号码 8024 不允许使用显示真实主叫号码模式 8042 国际呼入限制 8043 国际呼出限制 8044 通话时间异常管控 8046 接通率异常管控 8047 主叫呼叫频次管控 8048 被叫呼叫频次管控 8049 业务号码呼叫频次管控 8050 呼叫时段限制 8051 子企业被暂停 8055 X号码不可用,呼叫和短信功能不可用 8056 拨测号码管控 8057 呼叫方向管控 平台 522 平台语音端口不足 8007 最后一分钟放音失败 8008 给用户放音收号失败 8015/8041 给用户录音失败 7102/8011/8020/8040/8139 其他异常行为 网络 7505 主叫侧网络异常 7506 被叫侧网络异常(例如绑定的号码格式错误) 7508 路由失败 父主题: 附录
  • 接口示例 请求示例 POST /rest/omp/xyrelationnumber/v1.0 HTTP1.1 content-type: application/json;charset=UTF-8 authorization: AKSK realm="SDP",profile="UsernameToken",type="Appkey" x-aksk: UsernameToken Username="************",PasswordDigest="*************",Nonce="ac1c911c4792492687f8f6b2264a491e",Created="2018-05-26T00:35:30Z" content-length:xx { "origNum":"+86138****0001", "areaCode":"0755", "areaMatchMode":"1" } 响应示例 HTTP/1.1 200 OK Content-Type: application/json;charset=utf-8 Content-Length: xx { "resultcode":"0", "resultdesc":"Success" , "subscriptionId":"****", "relationNumber":"+86138****0021" }
  • 结果码说明 表8 响应结果码 响应码 结果码 英文描述 中文描述 处理方法 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状态是否正常。应用状态可登录控制台后在“应用管理”界面查看。 1010010 The flow control upper limit is reached on the platform. 平台达到系统流控上限。 请稍等一分钟后再试。 1010029 The subscriber status is frozen. 用户账号已冻结。 查看账户是否欠费。如欠费需充值后才能继续使用。 若未欠费,请联系华为云客服处理。 1010040 The app_key is not allowed to invoke the API. app_key没有调用本API的权限。 调用的接口和app_key所属的应用模式不一致。如添加应用时选择的AXB模式的应用,调用接口时只能调用AXB模式的接口,不能调用其他模式的接口。 1012008 Insufficient number of resources 资源不足。 没有可分配的X号码,请申请新的号码资源或修改areaCode的值。点击查看处理方法。 1012012 Application does not open recording function. 应用未开启录音功能。 请确认app_key所属的应用是否开启了录音功能,点击查看如何开启录音功能。 1012102 The number status is abnormal. 号码状态异常。 出现该错误码表示调用接口时指定的X号码因投诉或号码状态异常被隐私保护通话平台加入了黑名单,请查看订购号码时填写的邮箱是否有业务下线通知邮件,如果没有,请拨打400电话联系华为云客服处理。 1016001 The record does not exist. 记录不存在。 未查询到绑定关系,请检查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. 响应超时。 重新发送一次请求,若依然返回响应超时,请联系管理员处理。
  • 响应参数 表7 响应结果参数 参数名称 是否必选 参数类型 说明 resultcode 是 String(1-32) 请求返回的结果码。 resultdesc 是 String(1-256) 操作结果描述。 subscriptionId 否 String(1-64) 绑定ID,唯一标识一个绑定关系,由隐私保护通话平台自动分配。 在AXYB模式中,一个绑定关系是指将两个用户号码、两个隐私号码和呼叫方向等相关信息绑定起来的一组信息。 成功响应时必定返回。 relationNumber 否 String(1-32) 绑定的隐私号码,为全局号码格式(包含国家码),如:+86138****0021。 成功响应时必定返回。
  • 使用说明 前提条件 已创建隐私保护通话应用,获取了APP_Key,APP_Secret和APP接入地址。 已申请到至少两个隐私保护号码。 若需要使用自定义放音,需要提前在放音文件管理页面上传并等待审核通过。 使用限制 一个X号码同时只能绑定一个A号码,一个A号码可以同时绑定5个X号码。 一个Y号码在同一个应用下可绑定多次,但绑定的AX关系不可重复。例如,允许同时绑定A1X1Y1B1和A2X2Y1B2,但不允许同时绑定A1X1Y1B1和A1X1Y1B2。 Y号码可绑定的最大关系数量为1000(Y号码绑定一个AX关系计为一次绑定关系)。 注意事项 AXYB模式支持分别设置AX和YB绑定关系有效时长(通过duration和ybDuration参数设置)。AX绑定关系过期后,系统自动解绑AX和YB的绑定关系;YB绑定关系过期后,仅解绑YB绑定关系。 若只设置了AX绑定关系(未绑定YB),B拨打X时隐私保护通话平台会自动给B分配一个Y号码。形成AXYB的绑定关系后,A才能拨打Y联系B。此时的YB关系过期时间为绑定AX时携带的ybDuration参数值;若未携带ybDuration,则随AX解绑时解绑。 若要使用录音功能,需要完成以下两个步骤: 创建隐私保护通话应用时,“是否开通录音”选择“是”。 调用本接口设置归属该应用的隐私号码绑定关系时设置“recordFlag”为“true”。 注:如果是在控制台设置归属该应用的隐私号码绑定关系,需在设置绑定关系时勾选“支持录音”。
  • 请求参数 表2 请求URL参数说明 参数名称 是否必选 参数类型 说明 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()转换后的时间格式去除毫秒后即为本接口要求的时间格式。 表5 请求Body参数说明(设置AX绑定关系) 参数名称 是否必选 参数类型 说明 origNum 是 String(1-32) AXYB中的A号码。 填写为全局号码格式。 手机号码格式为国家码(如+86)+手机号码(11位数字的手机号码,如138****0001),填写为"+86138****0001"。 固话号码为国家码(如+86)+不带前置0的区号(如755)+本地固话号码(7或8位数字的固话号码,以实际号码为准,如28****01),填写为"+8675528****01"。 说明: 因运营商管控,固话号码只能接收来自X号码的呼叫,不能作为主叫呼叫X号码。即当A号码为固话号码时,B(手机号码)可以拨打X号码联系A,但A无法通过拨打Y号码联系B。 areaCode 是 String(1-32) 区号,标示隐私号码归属的区域。 填写为标准格式的区号,如:0755、010等。 X号码对应城市码可在订购号码成功后返回的号码表中查看,点击查看如何下载号码表。 areaMatchMode 否 String(枚举) 号码筛选方式。 0:严格匹配 1:非严格匹配 说明: 不携带该参数时,系统默认为严格匹配模式。 携带该参数时: 当该参数为0,应用下无对应areaCode的号码时,号码分配失败。 当该参数为1,应用下无对应areaCode的号码时,会优先选择该应用下与areaCode对应区域的父区域下的号码,若父区域下也没有,号码分配失败。 callDirection 否 Integer 表示该绑定关系允许的呼叫方向,取值范围: 0:bidirectional,表示A和B/C都可以通过与对方号码绑定的隐私号码呼叫对方。 1:A to B,表示只允许A通过与隐私号码Y呼叫B/C。 2:B to A,表示只允许B/C通过隐私号码X呼叫A。 如果不携带该参数,系统默认该参数为0。 duration 否 Integer AX绑定关系保持时间,单位为秒。 取值范围 0:绑定关系永不过期。 60~7776000(90天):绑定关系过期后会被系统自动解除。 如果不携带该参数,系统默认该参数为7200。 ybDuration 否 Integer YB绑定关系保持时间,单位为秒。 取值范围: 0:YB的绑定关系随AX解绑时解绑。 60~7776000(90天):绑定关系过期后会被系统自动解除。 若在设置AX绑定关系和YB绑定关系时都不携带该参数,系统默认该参数为0。 说明: “ybDuration”取值必须小于或等于“duration”取值,大于则以“duration”取值为准(AX解绑时YB绑定关系也会解除)。 若在设置AX绑定关系和YB绑定关系时都携带了该参数,以设置YB绑定关系时携带的“ybDuration”值为准。 recordFlag 否 String(枚举) 录音标识。 false:表示不录音 true:表示录音 如果设置绑定关系时该参数为true,则本次绑定关系中的主叫和被叫所有通过隐私号码拨通的通话都会被录音。 该参数仅当添加应用时申请开通了录音功能才有效。 如果不携带该参数,系统默认该参数为false。 recordHintTone 否 String(1-128) 该参数在recordFlag为true时才有效。 此字段用于设置使用录音功能的提示音。 无需定制个性化放音时,接口消息中无需携带此参数,此时系统可能会放默认提示音,也可能不放,请与管理员确认。 需要定制个性化放音文件时,接口消息中携带此参数,参数取值为指定的放音文件名,如:recordHintTone.wav。请提前制作放音文件并提交到隐私保护通话业务平台。 说明: 因隐私协议及运营商管控,录音的呼叫必须携带该参数,否则呼叫会被运营商拦截。 preVoiceX 否 String(1-128) 设置对X号码播放的个性化通话前等待音,系统边给X号码绑定用户放音(只放一次音)边拨打Y号码绑定用户。 填写放音文件名,例如x_hint_tone1.wav,文件名只能由数字、字母、以及特殊字符-_.@组成。放音文件需提前提交给管理员。 不携带该参数或填写空字符串时,使用系统默认放音,例如“嘟…嘟…嘟…”。 userData 否 String(1-256) 用户自定义数据,会在响应消息中原样返回。 不允许携带以下字符:“{”,“}”(即大括号)。 不允许包含中文字符,如果包含中文字符请采用Base64编码。 说明: 若在设置绑定关系时携带该参数,绑定关系对应的呼叫、话单和短信通知消息中也会携带该参数。 表6 请求Body参数说明(设置YB绑定关系) 参数名称 是否必选 参数类型 说明 origNum 是 String(1-32) AXYB中的B号码。 填写为全局号码格式。 手机号码格式为国家码(如+86)+手机号码(11位数字的手机号码,如138****0001),填写为"+86138****0001"。 固话号码为国家码(如+86)+不带前置0的区号(如755)+本地固话号码(7或8位数字的固话号码,以实际号码为准,如28****01),填写为"+8675528****01"。 说明: 因运营商管控,固话号码只能接收来自X号码的呼叫,不能作为主叫呼叫X号码。即当B号码为固话号码时,A(手机号码)可以拨打Y号码联系B,但B无法通过拨打X号码联系A。 subscriptionId 是 String(1-64) 填写为调用“AXYB模式绑定接口”绑定AX时返回的绑定ID。 areaCode 否 String(1-32) 区号,标示隐私号码归属的区域。 填写为标准格式的区号,如:0755、010等。 X号码对应城市码可在订购号码成功后返回的号码表中查看,点击查看如何下载号码表。 areaMatchMode 否 String(枚举) 号码筛选方式。 0:严格匹配 1:非严格匹配 携带该参数时,必须同时携带areaCode。 当该参数为0,应用下无对应areaCode的号码时,号码分配失败。 当该参数为1,应用下无对应areaCode的号码时,会优先选择该应用下与areaCode对应区域的父区域下的号码,若父区域下也没有,号码分配失败。 不携带该参数时,系统默认为严格匹配模式。 ybDuration 否 Integer YB绑定关系保持时间,单位为秒。 取值范围: 0:YB的绑定关系随AX解绑时解绑。 60~7776000(90天):绑定关系过期后会被系统自动解除。 若在设置AX绑定关系和YB绑定关系时都不携带该参数,系统默认该参数为0。 说明: “ybDuration”取值必须小于或等于“duration”取值,大于则以“duration”取值为准(AX解绑时YB绑定关系也会解除)。 若在设置AX绑定关系和YB绑定关系时都携带了该参数,以设置YB绑定关系时携带的“ybDuration”值为准。 preVoiceY 否 String(1-128) 设置对Y号码播放的个性化通话前等待音,系统边给Y号码绑定用户放音(只放一次音)边拨打X号码绑定用户。 填写放音文件名,例如y_hint_tone1.wav,文件名只能由数字、字母、以及特殊字符-_.@组成。放音文件需提前提交给管理员。 不携带该参数或填写空字符串时,使用系统默认放音,例如“嘟…嘟…嘟…”。 userData 否 String(1-256) 用户自定义数据,会在响应消息中原样返回。 不允许携带以下字符:“{”,“}”(即大括号)。 不允许包含中文字符,如果包含中文字符请采用Base64编码。
  • 接口示例 接口示例仅供参考,请以实际消息为准。 请求示例 POST /rest/caas/relationnumber/partners/v1.0 HTTP1.1 content-type: application/json;charset=UTF-8 authorization: AKSK realm="SDP",profile="UsernameToken",type="Appkey" x-aksk: UsernameToken Username="************",PasswordDigest="*************",Nonce="ac1c911c4792492687f8f6b2264a491e",Created="2018-05-26T00:35:30Z" content-length:xx { "callerNum":"+86138****0021", "relationNum":"+86138****6666", "calleeNum":"+86138****0023", "callDirection":0, "duration":0, "preVoice": { "callerHintTone": "callerHintTone.wav", "calleeHintTone": "calleeHintTone.wav" }, "maxDuration":0 } 响应示例 HTTP/1.1 200 OK Content-Type: application/json;charset=utf-8 Content-Length: xx { "resultcode":"0", "resultdesc":"Success" , "subscriptionId":"****", "relationNum":"+86138****6666", "callDirection":0, "duration":0, "maxDuration":0 }
  • 结果码说明 表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; 放音文件需上传通过审核才可通过接口调用,点击查看如何上传审核。 参考接口参数说明,检查是否携带了不能同时携带的参数; 参数长度或格式是否错误。 1010003 Invalid app_key. 无效的app_key。 请检查请求携带的app_key填写是否正确。 1010008 The status of the app_key is unavailable. app_key状态异常。 请检查请求携带的app_key所属应用状态是否正常。应用状态可登录控制台后在“应用管理”界面查看。 1010010 The flow control upper limit is reached on the platform. 平台达到系统流控上限。 请稍等一分钟后再试。 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号码是否属于该应用。 1012007 The record does not exist. 记录不存在。 指定的X号码不存在,请检查relationNum参数的填写是否正确。 1012008 Insufficient number of resources 资源不足。 没有可分配的X号码,请申请新的号码资源或修改areaCode的值。点击查看处理方法 1012009 Maximum number of resources has been exceeded 指定的X号码的绑定数量已达到上限。 一个X号码只能同时绑定5000对关系。请修改relationNum的值,或者解除指定的X号码上的部分绑定关系。 1012010 The number $ has been bound. 绑定关系已存在。 出现该错误码表示调用AXB模式绑定接口时携带的X号码(relationNum)和A号码(callerNum)或B号码(calleeNum)已存在绑定关系,可确认后更换其他X号码进行绑定。 1012012 Application does not open recording function. 应用未开启录音功能。 请确认app_key所属的应用是否开启了录音功能,点击查看如何开启录音功能。 1012102 The number status is abnormal. 号码状态异常。 出现该错误码表示调用接口时指定的X号码因投诉或号码状态异常被隐私保护通话平台加入了黑名单,请查看订购号码时填写的邮箱是否有业务下线通知邮件,如果没有,请拨打400电话联系华为云客服处理。 1020166 The app client ip is not in ip white list. 对端app IP不在白名单列表中。 联系管理员检查IP白名单是否配置正确。 1020176 Authentication failed, try again later 鉴权失败,稍后重试 IP因鉴权失败次数过多导致被拉黑,请30分钟后重试,或联系管理员放通该IP。 1020179 Application does not enable sms function. 应用未开启短信功能。 请确认app_key所属的应用是否开启了短信功能,点击查看如何开启短信功能。 500 1010001 Internal system error. 系统错误。 请联系客服处理。 1023001 Internal error. 内部错误。 1023002 Response timeout. 响应超时。 重新发送一次请求,若依然返回响应超时,请联系管理员处理。
  • 响应参数 表6 响应结果参数 参数名称 是否必选 参数类型 说明 resultcode 是 String(1-32) 请求返回的结果码。 resultdesc 是 String(1-256) 操作结果描述。 subscriptionId 否 String(1-64) 绑定ID,唯一标识一组绑定关系。成功响应时必定返回。请记录该ID用于后续接口调用。 relationNum 否 String(1-32) 绑定的X号码。 成功响应时必定返回。 callDirection 否 Integer 绑定关系允许的呼叫方向,取值含义参见请求参数。 成功响应时必定返回。 duration 否 Integer 绑定关系保持时间,单位为秒,0表示永不过期。 成功响应时必定返回。 maxDuration 否 Integer 允许单次通话进行的最长时间,通话时间从被叫接通的时刻开始计算,0表示系统不主动结束通话。 成功响应时必定返回。 userData 否 String(1-256) 用户自定义数据。 当请求中携带且成功响应时必定返回。
  • 请求参数 表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参数说明 参数名称 是否必选 参数类型 说明 callerNum 是 String(4-31) AXB中的A号码。 填写为全局号码格式。 手机号码格式为国家码(如+86)+手机号码(11位数字的手机号码,如138****0001),填写为"+86138****0001"。 固话号码为国家码(如+86)+不带前置0的区号(如755)+本地固话号码(7或8位数字的固话号码,以实际号码为准,如28****01),填写为"+8675528****01"。 说明: 因运营商管控,固话号码只能接收来自X号码的呼叫,不能作为主叫呼叫X号码。即当A号码为固话号码时,B(手机号码)可以拨打X号码联系A,但A无法通过拨打X号码联系B。 若需双向呼叫,A和B号码都必须是手机号码。 relationNum 否 String(4-31) 指定已申请到的X号码进行绑定。 可在隐私保护通话控制台的“号码管理”页面或订购号码成功后返回的号码表中查看已申请到的X号码。 填写为全局号码格式(国家码+11位数字的手机号码),如:+86138****0021。 当callerNum(A号码)是手机号码时: 同时携带relationNum和areaCode时系统以relationNum为准。 当relationNum和areaCode都未携带时,隐私保护通话平台会从客户应用下已申请到的X号码中,优先选择与A号码同城市的X号码进行绑定。 当callerNum(A号码)是固话号码时: 该参数与areaCode是二选一关系。 同时携带relationNum和areaCode时系统以relationNum为准。 areaCode 否 String(0-32) 指定城市码,由隐私保护通话平台从客户已申请到的X号码中选择可用号码进行绑定。 填写为标准格式的城市码,如:0755、010等。 X号码对应城市码可在订购号码成功后返回的号码表中查看,点击查看如何下载号码表。 当callerNum(A号码)是手机号码时: 同时携带relationNum和areaCode时系统以relationNum为准。 当relationNum和areaCode都未携带时,隐私保护通话平台会从客户应用下已申请到的X号码中,优先选择与A号码同城市的X号码进行绑定。 当callerNum(A号码)是固话号码时: 该参数与relationNum是二选一关系。 同时携带relationNum和areaCode时系统以relationNum为准。 areaMatchMode 否 String(枚举) 号码筛选方式。当指定areaCode或根据callerNum(A号码)区号选择X号码(relationNum和areaCode都不携带)时,此参数生效。 当指定areaCode时: 0:严格匹配,应用下无对应areaCode的X号码时,号码分配失败。 1:非严格匹配,应用下无对应areaCode的X号码时,会优先选择该应用下与areaCode对应区域同省份的号码,若也没有同省份的号码,则从该应用下全部X号码中随机选择。 根据A号码区号选择X号码时: 0:严格匹配,应用下没有和A号码同区域的X号码时,号码分配失败。 1:非严格匹配,应用下没有和A号码同区域的X号码时,会优先选择该应用下与A号码所属区域同省份的号码,若也没有同省份的号码,则从该应用下全部X号码中随机选择。 不携带该参数时,系统默认为严格匹配模式。 calleeNum 是 String(4-31) AXB中的B号码。 填写为全局号码格式。 手机号码格式为国家码(如+86)+手机号码(11位数字的手机号码,如138****0001),填写为"+86138****0001"。 固话号码为国家码(如+86)+不带前置0的区号(如755)+本地固话号码(7或8位数字的固话号码,以实际号码为准,如28****01),填写为"+8675528****01"。 说明: 因运营商管控,固话号码只能接收来自X号码的呼叫,不能作为主叫呼叫X号码。即当B号码为固话号码时,A(手机号码)可以拨打X号码联系B,但B无法通过拨打X号码联系A。 若需双向呼叫,A和B号码都必须是手机号码。 callDirection 否 Integer 表示该绑定关系允许的呼叫方向,取值范围: 0:bidirectional,表示callerNum和calleeNum都可以通过X号码呼叫对方。 1:caller to callee,表示只允许callerNum通过X号码呼叫calleeNum。 2:callee to caller,表示只允许calleeNum通过X号码呼叫callerNum。 如果不携带该参数,系统默认允许双向呼叫。 duration 否 Integer 绑定关系保持时间,单位为秒。 取值范围:0~7776000(90天)。 绑定关系过期后会被系统自动解除。 如果不携带该参数或携带为0,系统默认永不过期。 recordFlag 否 String(枚举) 是否需要针对该绑定关系产生的所有通话录音。 false:表示不录音 true:表示录音。 该参数仅当客户添加应用时申请开通了录音功能才有效。 如果不携带该参数,系统默认不录音。 recordHintTone 否 String(1-128) 该参数仅在recordFlag为true时有效。 该参数用于设置录音提示音,填写为放音文件名,可在放音文件管理页面查看。 不携带该参数表示录音前不播放提示音。 说明: 因隐私协议及运营商管控,录音的呼叫必须携带该参数,否则呼叫会被运营商拦截。 preVoice 否 ApiPlayInfo 设置个性化通话前等待音,即主叫听到的回铃音。 maxDuration 否 Integer 设置允许单次通话进行的最长时间,单位为分钟。通话时间从接通被叫的时刻开始计算。 取值范围:0~1440 0:系统不主动结束通话,由主被叫双方结束通话。 1~1440:当通话时长达到此配置值,系统主动结束通话。 不携带时,参数值默认为0。 lastMinVoice 否 String(0-128) 设置通话剩余最后一分钟时的提示音,填写为放音文件名,可在放音文件管理页面查看。 当maxDuration字段设置为非0时此参数有效。 不携带该参数表示通话剩余最后一分钟时不放音。 privateSms 否 String(枚举) 设置该绑定关系是否支持短信功能。 若客户添加应用时未开通短信功能,请勿携带此参数。 取值范围: false:不支持短信 true:支持短信 如果客户添加应用时开通了短信功能,不携带该参数时系统默认支持短信。 userData 否 String(1-256) 用户自定义数据。 不允许携带以下字符:“^”,“{”,“}”。 不允许包含中文字符,如果包含中文字符请采用Base64编码。 说明: 若在设置绑定关系时携带该参数,绑定关系对应的呼叫、话单和短信通知消息中也会携带该参数。 表5 ApiPlayInfo定义 参数名称 是否必选 参数类型 说明 callerHintTone 否 String(0-128) 设置A拨打X号码时的通话前等待音,填写为放音文件名,可在放音文件管理页面查看。 不携带该参数时A会听到B的回铃音。 calleeHintTone 否 String(0-128) 设置B拨打X号码时的通话前等待音,填写为放音文件名,可在放音文件管理页面查看。 不携带该参数时B会听到A的回铃音。
  • 使用说明 前提条件 已创建隐私保护通话应用,获取了APP_Key,APP_Secret和APP接入地址。 已申请到隐私保护号码。 若需要使用自定义放音,需要提前在放音文件管理页面上传并等待审核通过。 使用限制 1个X号码允许绑定5000对用户号码,但用户号码不可重复。例如,允许同时绑定AXB和CXD,但不允许同时绑定AXB和BXC。 注意事项 AXB模式支持设置AXB绑定关系时长(通过duration参数设置),绑定关系到期后自动解绑;还支持设置单次通话进行的最长时间(通过maxDuration参数设置),到期后系统自动挂断通话。 若要使用录音功能,需要完成以下两个步骤: 创建隐私保护通话应用时,“是否开通录音”选择“是”。 调用本接口设置归属该应用的隐私号码绑定关系时设置“recordFlag”为“true”。 注:如果是在控制台设置归属该应用的隐私号码绑定关系,需在设置绑定关系时勾选“支持录音”。 若要使用短信功能,需要完成以下三个步骤: 创建隐私保护通话应用时,“是否开通短信”选择“是”; 订购号码时,“是否需要短信功能”选择“是”; 调用本接口设置归属该应用的隐私号码绑定关系时不携带“privateSms”或设置“privateSms”为“true”。 注:如果是在控制台设置归属该应用的隐私号码绑定关系,需在设置绑定关系时勾选“支持短信”。
  • 文档修订记录 发布日期 修订记录 2022/5/13 各模式接口补充userData参数: AX、AXB、AXE、AXYB模式的绑定信息查询接口新增userData参数。 AX、AXB、AXE、AXYB模式的呼叫事件通知接口,callin事件新增userData参数。 AX模式的短信通知接口的block响应新增userData参数。 修改错误码1013102为1012010,并修改错误码英文描述。 2022/5/7 各模式话单通知接口的recordFileDownloadUrl参数长度由“String(1-256)”修改为“String(1-1024)”。 2021/5/17 AXYB模式绑定接口、呼叫事件通知接口和话单通知新增userData参数。 AX、AXB和X模式的短信通知接口中新增userData参数,sendResult参数取值新增12和13。 X模式呼叫事件通知接口disconnect事件、话单通知接口新增callRelDirection参数。 2020/11/10 各模式话单通知接口新增“recordFileDownloadUrl”(录音文件下载地址)参数。 2020/11/5 更新各模式话单重传时间间隔。 2019/4/10 新增AXYB模式相关接口 2019/3/4 “短信通知接口”支持失败重传机制、支持获取短信发送结果 “AX/AXB/AXE模式绑定接口”支持X号码对应城市严格匹配模式 2019/2/1 新增“X号码状态通知接口” “短信通知接口”支持获取用户发送的短信内容 “获取录音文件下载地址接口”录音下载地址有效期变更为3天 2018/12/17 “AX模式设置临时被叫接口”新增设置临时被叫关系保持时间功能 2018/12/7 新增AXE模式相关接口
  • 接口示例 请求示例 GET /rest/provision/voice/record/v1.0? fileName=1200_366_0_20161228102743.wav&recordDomain=huawei HTTP1.1 content-type: application/json;charset=UTF-8 authorization: AKSK realm="SDP",profile="UsernameToken",type="Appkey" x-aksk: UsernameToken Username="ZRBRz4bAXoFgEH7o4Ew308eXc1RA",PasswordDigest="****",Nonce="ac1c911c4792492687f8f6b2264a491e",Created="2018-05-26T00:35:30Z" content-length:xx 响应示例 HTTP/1.1 301 Moved Permanently Location: **** Connection: close Content-Length: 0
  • 请求参数 表2 请求URL参数说明 参数名称 是否必选 参数类型 默认值 说明 fileName 是 String(1-128) 无 录音文件名。通过“呼叫状态和话单通知API”的recordObjectName参数获取。 recordDomain 是 String(1-128) 无 录音文件存储的服务器 域名 ,通过“呼叫状态和话单通知API”的recordDomain参数获取。 表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。不同编程语言中将UTC时间戳转换为普通时间时使用的格式不同,部分语言可参考表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()转换后的时间格式去除毫秒后即为本接口要求的时间格式。
  • 结果码说明 请根据以下结果码进行调测,如果有疑问,可联系管理员进行确认。 表7 响应结果码 响应码 结果码 英文描述 中文描述 处理方法 301 - - - 成功响应,请从Location头域中获取录音文件下载地址。 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. 非法请求。 请检查请求携带的参数格式是否都合法。 1010003 Invalid app_key. 无效的app_key。 检查请求携带的app_key是否填写正确,app_key从应用管理页面获取,若填写正确,请在应用管理页面检查请求携带的app_key所属应用状态是否正常。 1010007 The ativeState of User is not ACTIVATING. 用户状态未激活。 请检查app_key所属的华为云账户是否处于欠费状态,若处于欠费状态,请参考华为云账户充值完成充值,若没有处于欠费状态,请联系管理员处理。 1012012 Application does not open recording function. 应用未开启录音功能。 请确认请求携带的app_key是否开启了录音功能。 1012007 The record does not exist. 记录不存在。 请确认fileName参数的填写是否正确。 1011006 Under traffic control status 请求者(IP、手机号码)处于流控状态下。 请稍等一分钟再试。 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. 内部错误。
  • 使用说明 前提条件 已通过“应用管理”页面获取APP_Key,APP_Secret和APP接入地址。 已通过“呼叫状态和话单通知API”获取了录音文件名。 注意事项 响应返回的录音下载地址有效期为30分钟,地址过期后若还需要下载录音文件,请重新调用该接口获取下载地址。 调用获取录音文件下载地址接口需要把connection设置为不支持重定向,再从Location头域中获取到录音文件的下载地址。 若connection设置为支持重定向,则重定向后平台返回的是录音文件的数据流。 使用限制 无。
  • 接口示例 请求示例 POST /rest/httpsessions/click2Call/v2.0 HTTP1.1 content-type: application/json;charset=UTF-8 authorization: AKSK realm="SDP",profile="UsernameToken",type="Appkey" x-aksk: UsernameToken Username="ZRBRz4bAXoFgEH7o4Ew308eXc1RA",PasswordDigest="****",Nonce="ac1c911c4792492687f8f6b2264a491e",Created="2018-05-26T00:35:30Z" Content-Length:xx { "displayNbr":"+86755****8888", "callerNbr":"+86137****0001", "calleeNbr":"+86137****0002", "displayCalleeNbr":"+86755****8888", "userData":"cwgtest" } 响应示例 HTTP/1.1 200 OK Content-Type: application/json;charset=UTF-8 { "resultcode":"0", "resultdesc":"Success", "sessionId":"1202_566_0_20161228102743@callenabler.home1.com" }
  • 结果码 请根据以下结果码进行调测,如果有疑问,可联系管理员进行确认。 表6 结果码说明 响应码 结果码 英文描述 中文描述 处理方法 200 0 Success. 成功。 无需处理。 400 1023006 Authorization not contained in the HTTP header. 鉴权失败,请检查鉴权请求正确性。 请检查消息头中是否携带了Authorization,PasswordDigest字段填写是否正确,携带的app_key填写是否正确,且生成随机数的时间与发送请求时的本地时间不能相差太大。 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. 非法请求。 检查请求携带的参数格式是否都合法。 1010003 Invalid app_key. 无效的app_key。 检查请求携带的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. 平台达到系统流控上限。 请稍等一分钟后再试。 1010011 The app is not allowed to access a commercial address. APP没有访问商用地址的权限。 请在应用管理页面检查请求携带的app_key所属应用状态是否正常。 1010021 Application unavailable. 应用不可用。 请在应用管理页面检查请求携带的app_key所属应用状态是否正常。 1010023 Invalid display number. 号码填写不合法。 检查displayNbr和displayCalleeNbr参数的填写是否合法,与号码管理页面的“固话号码”保持一致。若合法,请确认该号码是否已申请并下发。申请号码在号码订购页面申请,号码下发后可在号码管理页面查看。 1010024 Invalid caller number. 主叫号码不合法。 检查callerNbr参数的填写是否合法。 1010040 The app_key is not allowed to invoke the API. app_key没有调用本API的权限。 请联系管理员确认该app_key对应的应用是否具有语音回呼能力。 1012001 Resource of number is not to be applied. 资源未申请。 app_key和业务号码未绑定。 1012006 The service number is not applied. 业务号码未申请。 请确认是否申请业务号码。 1012012 Application does not open recording function. 应用未开启录音功能。 请在应用管理页面确认请求携带的app_key是否开启了录音功能。 1013001 Calls exceed the SP limit. 请求次数超过SP配置上限。 请和管理员确认开发者呼叫数量限制。 1013002 Calls exceed the APP limit. 请求次数超过应用配置上限。 请和管理员确认应用呼叫数量限制。 1013003 Calls exceed the display number limit. SP的主显号码受限。 请和管理员确认显示号码呼叫数量限制。 1013004 Callee in blacklist. 被叫用户是黑名单。 被叫号码在运营商黑名单库。 1013010 Caller in blacklist. 主叫用户是黑名单。 主叫号码在运营商黑名单库。 1013011 Callee is not on the whitelist. 被叫用户不在白名单中。 请和管理员确认被叫号码白名单限制。 1013100 Common error code . 未知错误。 请和管理员确认安全管控限制。 1013101 Abnormal call restricted . 呼叫行为异常。 请和管理员确认安全管控限制。 1013111 International callin is forbidden. 国际呼入限制。 请检查请求的号码格式是否为国际号码格式。 1013112 International callout is forbidden. 国际呼出限制。 请检查请求的号码格式是否为国际号码格式。 1013113 Abnormal call duration restricted. 通话时间异常。 请检查请求的号码是否通话时间异常。 1013115 Abnormal call completion rate restricted. 呼叫接通率异常。 请检查请求的号码是否呼叫接通率异常。 1013116 Caller call frequency restricted. 主叫呼叫频次限制。 请检查主叫号码是否有呼叫频次限制。 1013117 Callee call frequency restricted. 被叫呼叫频次限制。 请检查被叫号码是否有呼叫频次限制。 1013118 Service number call frequency restricted. 业务号码呼叫频次限制。 请检查业务号码是否有呼叫频次限制。 1013119 Service number suspend. 业务号码被暂停。 请和管理员确认号码状态。 1013120 Ip address is null. IPv4地址未携带。 请客户接口携带请求发送方IPv4地址。 1013121 Call black time forbidden. 呼叫时段限制。 呼叫时段为休息时段,请工作时段再呼叫。 1013122 Sub enterprise is suspended. 子企业已被暂停。 查看是否因投诉被下线,可查看订购号码时填写的邮箱是否有业务下线通知邮件。 1020165 The number of app_key voice call ports exceeds the upper limit. 超出语音呼叫端口数限制。 请稍等一分钟后再试。建议联系管理员为该应用申请更多的端口配额。 1020166 The app client ip is not in ip white list. 请求发送方app IP不在白名单列表中。 运营商IP地域管控,此地区无法呼通。 1020168 The call is rejected because the login IP of the peer app is blacklisted . 请求发送方app登录IP是黑名单。 运营商IP地域管控,此地区无法呼通。 1020171 The call is rejected because the login IP of the peer app is blacklisted area. 请求发送方app登录IP在受限地域。 运营商IP地域管控,此地区无法呼通。 1020176 Authentication failed, try again later 鉴权失败,稍后重试。 IP因鉴权失败次数过多导致被拉黑,请30分钟后重试,或联系管理员放通该IP。 500 1010001 Internal system error. 系统错误。 请联系管理员处理。 1020001 Parameter error. 参数错误。 检查请求携带的参数格式是否都合法。 1020002 Internal error. 内部错误。 请联系管理员处理。 1020150 The app_key is invalid. app_key无效。 检查请求携带的app_key是否填写正确,app_key从应用管理页面获取,若填写正确,请在应用管理页面检查请求携带的app_key所属应用状态是否正常。 1020151 The bindNum is invalid. 业务号码无效。 业务号码无效,请联系管理员处理。 1020154 Insufficient voice ports. 语音端口不足。 请稍等一分钟后再试,并联系管理员申请扩容语音端口。 1023001 Internal error. 内部错误。 请联系管理员处理。 1023002 Response timeout. 响应超时。 重新发送一次请求。 1040001 south ne error with responseCode: %$ and responseMsg: %$. 南部网元错误。 请联系管理员处理。
  • 请求参数 表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参数说明 参数名称 是否必选 参数类型 默认值 说明 displayNbr 是 String(4-31) 无 此字段定义主叫用户收到语音通话平台的呼叫时,主叫用户手机终端的来电显示号码。需提前在订购号码页面申请该号码。 号码格式(固话):国家码+区号+固话,与号码管理页面的“固话号码”保持一致。 若该号码为“暂停”状态,语音通话平台会从该应用下随机选取一个其他可用的固话号码进行外呼。 callerNbr 是 String(4-31) 无 此字段定义用户在SP开发的应用中,通过语音回呼功能发起呼叫时所使用的主叫号码。 手机号码格式:+{国家码}{手机号码}。示例:+86135***0002。 固话格式:+{国家码}{区号}{固话号码},其中区号需去掉首位的0。示例:国家码86,区号0755,固话号码28****02,填写为+8675528****02。 displayCalleeNbr 是 String(4-31) 无 此字段定义被叫用户收到语音通话平台的呼叫时,被叫用户终端的来电显示号码。需提前在订购号码页面申请该号码。 该号码可以与displayNbr配置为同一个号码,也可以配置为不同号码。 号码格式(固话):国家码+区号+固话,与号码管理页面的“固话号码”保持一致。 若该号码为“暂停”状态,语音通话平台会从该应用下随机选取一个其他可用的固话号码进行外呼。 calleeNbr 是 String(4-31) 无 此字段定义终端用户在SP开发的应用中通过语音回呼业务发起呼叫时所拨打的被叫号码。 号码格式: 手机号码格式:+{国家码}{手机号码}。示例:+86135****0004。 固话格式:+{国家码}{区号}{固话号码},其中区号需去掉首位的0。示例:国家码86,区号0755,固话号码28****04,填写为+8675528****04。 maxDuration 否 Integer 0 此字段用于设置允许单次通话进行的最长时间,通话时间从被叫接通的时刻开始计算。 取值范围:0~1440分钟 0:系统不主动结束通话,由主被叫双方结束通话。 1~1440:当通话时长达到此配置值,系统主动结束通话。 不携带时,参数值默认为0。 lastMinVoice 否 String(1-128) 无 当maxDuration字段设置为非0时此参数有效。 此参数用于设置最后一分钟放音提示音,此值填写SP定制的放音文件名,例如lastmin_voice1.wav,参数取值有以下两种场景: SP无需定制个性化放音,无需配置此参数,系统将使用默认放音文件,放音内容为:“本次通话时长还剩1分钟”。 SP需要定制个性化放音,接口消息中携带此参数,参数值携带定制的放音文件名,请提前制作放音文件并通过放音文件管理页面提交到语音通话平台。 lastMinToUE 否 String(枚举) both 当maxDuration字段设置为非0时此参数有效。 此字段用于设置最后一分钟放音的播放对象。 toa:仅对主叫用户放音。 tob:仅对被叫用户放音。 both:同时给主叫和被叫用户放音。 不携带时,参数值默认为both。 playPreVoice 否 String(枚举) false 此字段用于设置主叫(callerNbr)应答语音回呼后,呼叫被叫(calleeNbr)前,是否向主叫(callerNbr)播放提示音。 当该参数设置为true时,播放完主叫提示音(preVoice)后才播放主叫等待音(waitVoice)并呼叫被叫(calleeNbr)。 true:播放提示音。 false:不播放提示音。 不携带时,参数值默认为false。 preVoice 否 String(1-128) 无 当playPreVoice字段设置为true时此参数有效。 此字段用于设置主叫(callerNbr)应答语音回呼后,呼叫被叫(calleeNbr)前向主叫播放的提示音,此值填写放音文件名,例如pre_voice1.wav。 SP无需定制个性化放音文件,接口消息中无需携带此参数,系统将使用默认放音“正在为您转接中,请稍后”。 SP需要定制个性化放音文件,接口消息中携带此参数,请提前制作放音文件并通过放音文件管理页面提交到语音通话平台。 waitVoice 否 String(1-128) 无 此字段用于设置主叫应答语音回呼后的等待音,此值填写放音文件名,例如wait_voice1.wav。 SP无需定制个性化放音文件,接口消息中无需携带此参数,系统将使用默认放音,系统边给主叫放音(循环放音)边拨打被叫用户;被叫应答才中止放音。 SP需要定制个性化放音文件,接口消息中携带此参数,请提前制作放音文件并通过放音文件管理页面提交到语音通话平台。 waitVoice可结合calleeMedia使用。 calleeMedia 否 String(枚举) all 该参数用于指定被叫的媒体音播放方式,参数取值范围如下: all:透传被叫端的所有放音。当被叫端返回振铃音等媒体音,则终止主叫的等待音,播放被叫的媒体音,如彩铃音等。 none:不透传被叫所有放音,一直播放主叫的等待音,直到被叫应答或挂机。 fail:只有在被叫回失败放音时(带reason原因值),才终止主叫的等待音、播放被叫的失败放音。 不携带时,参数值默认为all。 statusUrl 否 String(1-128) 无 此参数请采用BASE64编码进行加密。 此字段用于设置SP接收状态上报的URL。 语音通话平台将业务触发过程中通话的状态信息(包括呼出、振铃、摘机和挂机信息)推送至此服务器,SP根据通话状态信息确定用户状态。 URL可填写为https://IP:Port或域名,推荐使用域名。且该域名对应多个服务器,避免单点故障无法接收通知。 URL只能由大小写字母(a-z、A-Z),数字(0-9),中划线(-),英文冒号(:),英文点号(.),以及英文斜杠(/)组成,不支持其它字符。最大128字节。 feeUrl 否 String(1-128) 无 此参数请采用BASE64编码进行加密。 此参数用于设置SP接收话单上报的URL。 语音通话平台将业务产生的话单推送至此服务器。 URL可填写为https://IP:Port或域名,推荐使用域名。且该域名对应多个服务器,避免单点故障无法接收话单。 URL只能由大小写字母(a-z、A-Z),数字(0-9),中划线(-),英文冒号(:),英文点号(.),以及英文斜杠(/)组成,不支持其它字符。最大128字节。 recordFlag 否 String(枚举) false 此字段设置语音回呼通话过程是否录音。 true:开启录音,请在添加应用时开启录音功能。 false:不开启录音。 不携带时,参数值默认为false。 recordHintTone 否 String(1-128) 无 此字段在recordFlag为true时才有效。 此字段用于设置使用录音功能的提示音,参数传值为指定的放音文件名,例如recordhint_voice1.wav。 无需定制个性化放音时,接口消息中无需携带此参数,此时系统可能会放默认提示音,也可能不放,请联系华为云客服确认。 需要定制个性化放音文件时,接口消息中携带此参数,请提前制作放音文件并通过放音文件管理页面提交到语音通话平台。 partyTypeRequiredInDisconnect 否 String(枚举) false 该参数用于指定语音通话平台给开发者发送disconnect的呼叫状态时,通知消息是否需要携带通话主动挂机的用户类型(主叫挂机、被叫挂机、平台挂机)。 该参数取值范围如下: true:需要携带 false:不需要携带 不携带该参数时,默认值为false。 returnIdlePort 否 String(枚举) false 指示是否需要返回平台空闲呼叫端口数量。 true:需要返回 false:不需要返回 不携带该参数时,默认值为false。 userData 否 String(1-256) 无 此字段用于SP开发者自定义呼叫发起时,设置用户的附属信息,应用场景可以是当开发者想要对每一次呼叫的用户进行跟踪时,该参数可以携带用于标识用户的信息,如customerId123。 语音通话平台不对此参数做强制要求,如果开发者传入此参数,语音通话平台会在后续发给SP的通知消息中携带该参数值。 不允许携带以下字符:“{”,“}”(即大括号)。 不允许包含中文字符,如果包含中文字符请采用Base64编码。
  • 响应参数 表5 响应消息参数说明 参数名称 是否必选 参数类型 默认值 说明 resultcode 是 String(1-32) 无 请求返回的结果码。 resultdesc 是 String(1-128) 无 请求返回的结果描述。 sessionId 是 String(1-256) 无 请求返回的会话sessionId,用于标记一路会话。如果请求失败,则sessionId为空表示会话建立失败。 idlePort 否 Integer 无 请求参数中returnIdlePort为true时响应消息携带该参数。 该参数表示平台呼叫端口空闲可用数量,取值范围0~65535。
  • 使用说明 前提条件 已通过“应用管理”页面获取该语音回呼能力的APP_Key,APP_Secret和APP接入地址。 已通过“号码订购”页面向语音通话平台申请以下号码: 若使用定制化主叫端来电显示号码,请确认已申请固话号码(displayNbr)。 若需隐藏主叫号码,使用定制化被叫端来电显示号码,请确认已申请固话号码(displayCalleeNbr)。 若需使用通话录音功能,请确认已向语音通话平台申请该功能。 若使用个性化放音,请确认已按要求制作并通过放音文件管理页面向语音通话平台提交放音文件,包括最后一分钟提示音(lastMinVoice),主叫提示音(preVoice),主叫等待音(waitVoice),录音提示音(recordHintTone),回呼提示音(callBackTone)。 若需订阅呼叫状态和话单通知,请确认已通过应用管理向语音通话平台提交呼叫状态通知URL(statusUrl)和话单通知URL(feeUrl)。若未提交,调用接口时填写也可以。 注意事项 无。 使用限制 无。
  • 参数说明 WITH [ RECURSIVE ] with_query [, ...] 用于声明一个或多个可以在主查询中通过名字引用的子查询,相当于临时表。 如果声明了RECURSIVE,那么允许SELECT子查询通过名字引用它自己。 其中with_query的详细格式为: with_query_name [ ( column_name [, ...] ) ] AS ( {select | values | insert | update | delete} ) – with_query_name指定子查询生成的结果集名字,在查询中可使用该名称访问子查询的结果集。 – column_name指定子查询结果集中显示的列名。 – 每个子查询可以是SELECT,VALUES,INSERT,UPDATE或DELETE语句。 plan_hint子句 以/*+ */的形式在关键字后,用于对指定语句块生成的计划进行hint调优,详细用法请参见使用Plan Hint进行调优。 IGNORE 用于主键或者唯一约束冲突时忽略冲突的数据。 详细介绍参见UPSERT。 OVERWRITE 用于标识覆盖式插入方式,使用此种插入方式执行结束后,目标原数据被清空,只存在新插入的数据。 OVERWRITE支持指定列插入的功能,其他列为默认值,若无默认值则为NULL。 OVERWRITE不要和INSERT INTO这类实时写入的操作并发,否则实时写入数据有被意外清理的风险。 OVERWRITE适用于大批量数据导入场景,不建议用于少量数据的插入场景。 避免对同一张表执行并发insert overwrite操作,否则会出现类似报错“tuple concurrently updated.”。 如果集群正在扩缩容,且INSERT OVERWRITE的写入表需要执行数据重分布,则INSERT OVERWRITE会清除当前数据,并自动将插入的数据按扩缩容后的节点来进行数据分布。如果INSERT OVERWRITE和该表的数据重分布过程同时执行,INSERT OVERWRITE会中断该表的数据重分布过程。 table_name 要插入数据的目标表名。 取值范围:已存在的表名。 AS 用于给目标表table_name指定别名。alias即为别名的名字。 column_name 目标表中的字段名: 字段名可以用子字段名或者数组下标修饰。 没有在字段列表中出现的每个字段,将由系统默认值,或者声明时的默认值填充,若都没有则用NULL填充。例如,向一个复合类型中的某些字段插入数据的话,其他字段将是NULL。 目标字段(column_name)可以按顺序排列。如果没有列出任何字段,则默认全部字段,且顺序为表声明时的顺序。 如果value子句和query中只提供了N个字段,则目标字段为前N个字段。 value子句和query提供的值在表中从左到右关联到对应列。 取值范围:已存在的字段名。 expression 赋予对应column的一个有效表达式或值: 向表中字段插入单引号 时需要使用单引号自身进行转义。 如果插入行的表达式不是正确的数据类型,系统试图进行类型转换,若转换不成功,则插入数据失败,系统返回错误信息。 示例: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 CREATE TABLE tt01 (id int,content varchar(50)); NOTICE: The 'DISTRIBUTE BY' clause is not specified. Using round-robin as the distribution mode by default. HINT: Please use 'DISTRIBUTE BY' clause to specify suitable data distribution column. CREATE TABLE INSERT INTO tt01 values (1,'Jack say ''hello'''); INSERT 0 1 INSERT INTO tt01 values (2,'Rose do 50%'); INSERT 0 1 INSERT INTO tt01 values (3,'Lilei say ''world'''); INSERT 0 1 INSERT INTO tt01 values (4,'Hanmei do 100%'); INSERT 0 1 SELECT * FROM tt01; id | content ----+------------------- 3 | Lilei say 'world' 4 | Hanmei do 100% 1 | Jack say 'hello' 2 | Rose do 50% (4 rows) DEFAULT 对应字段名的缺省值。如果没有缺省值,则为NULL。 query 一个查询语句(SELECT语句),将查询结果作为插入的数据。 ON DUPLICATE KEY 用于主键或者唯一约束冲突时更新冲突的数据。 duplicate_action指定更新列和更新的数据。 详细介绍参见UPSERT。 ON CONFLICT 用于主键或者唯一约束冲突时忽略或者更新冲突的数据。 conflict_target用于指定列名index_column_name 、包含多个列名的表达式index_expression 或者约束名字constraint_name。作用是用于从列名、包含多个列名的表达式或者约束名推断是否有唯一索引。其中index_column_name和index_expression遵循CREATE INDEX的索引列格式。 conflict_action 指定主键或者唯一约束冲突时执行的策略。有两种: DO NOTHING冲突忽略。 DO UPDATE SET冲突更新。 后面指定更新列和更新的数据。 详细介绍参见UPSERT。 RETURNING 返回实际插入的行,RETURNING列表的语法与SELECT的输出列表一致。 output_expression INSERT命令在每一行都被插入之后用于计算输出结果的表达式。 取值范围:该表达式可以使用table的任意字段。可以使用*返回被插入行的所有字段。 output_name 字段的输出名称。 取值范围:字符串,符合标识符命名规范。
  • 语法格式 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 [ WITH [ RECURSIVE ] with_query [, ...] ] INSERT [/*+ plan_hint */] [ IGNORE | OVERWRITE ] INTO table_name [ AS alias ] [ ( column_name [, ...] ) ] { DEFAULT VALUES | VALUES {( { expression | DEFAULT } [, ...] ) }[, ...] | query } [ ON DUPLICATE KEY duplicate_action | ON CONFLICT [ conflict_target ] conflict_action ] [ RETURNING {* | {output_expression [ [ AS ] output_name ] }[, ...]} ]; and duplicate_action can be: UPDATE { column_name = { expression | DEFAULT } | ( column_name [, ...] ) = ( { expression | DEFAULT } [, ...] ) } [, ...] and conflict_target can be one of: ( { index_column_name | ( index_expression ) } [ COLLATE collation ] [ opclass ] [, ...] ) [ WHERE index_predicate ] ON CONSTRAINT constraint_name and conflict_action is one of: DO NOTHING DO UPDATE SET { column_name = { expression | DEFAULT } | ( column_name [, ...] ) = ( { expression | DEFAULT } [, ...] ) } [, ...] [ WHERE condition ]
共100000条