云服务器内容精选

  • 请求参数 表2 请求Headers参数说明 参数名称 是否必选 参数类型 说明 Content-Type 是 String 固定填写为application/json;charset=UTF-8。 Authorization 是 String 固定填写为WSSE realm="SDP",profile="UsernameToken",type="Appkey"。 X-WSSE 是 String 取值为UsernameToken Username="APP_Key的值", PasswordDigest="PasswordDigest的值", Nonce="随机数", Created="随机数生成时间"。 PasswordDigest:根据PasswordDigest = Base64 (SHA256 (Nonce + Created + Password))生成。其中,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(枚举) 该参数标识通知的事件类型。 取值范围如下: numStatus:X号码状态变化 numInfo 否 numInfo [1-100] X号码状态变化事件的信息,参数取值为列表,最大100条。 当eventType参数为numStatus时携带。 表5 numInfo定义 参数名称 是否必须 参数类型 说明 number 是 String 状态变化的X号码。 status 是 String 号码状态。 5:正常 9:暂停 10:不可用 11:冻结绑定 说明: 各号码状态对业务的影响如下: 正常:无影响。 暂停&不可用:绑定、呼叫和短信都不可用。 冻结绑定:号码不可新增绑定关系,但已存在的绑定关系的呼叫和短信业务不受影响。 cause 否 String 号码不可用原因。仅status为不可用时携带。 1:号码已删除 2:欠费 3:停机 5:X号码被运营商限呼 6:X号码限呼恢复 7:X号码开通了无条件前转业务 8:X号码开通了无应答前转业务 9:X号码开通了被叫忙前转业务 接口示例 POST /Xnumber/status HTTP/1.1 content-type: application/json;charset=UTF-8 authorization: WSSE realm="SDP",profile="UsernameToken",type="Appkey" x-wsse: UsernameToken Username="************",PasswordDigest="*************",Nonce="ac1c911c4792492687f8f6b2264a491e",Created="2018-05-26T00:35:30Z" content-length:xx {"eventType":"numStatus","numInfo":[{"number":"+86156****0000","status":"9"}]}
  • 使用说明 前提条件 客户添加应用时需设置呼叫状态接收地址并启用推送X号码状态功能,并确保提供的地址能够正常处理 隐私保护通话 平台发送的通知消息。 注:若需单独接收X号码状态通知,需填写X号码状态接收地址。若呼叫状态接收地址和X号码状态接收地址都填写了,隐私保护通话平台会向呼叫状态接收地址推送呼叫事件通知,向X号码状态接收地址推送X号码状态通知。 使用限制 业务平台推送呼叫状态给开发者应用,仅支持POST方式。
  • 接口示例 接口示例仅供参考,请以实际消息为准。 请求示例 POST /rest/caas/extendnumber/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 { "virtualNum":"+86138****8888", "bindNum":"+86139****8888", "callbackTone":"callbackTone.wav", "bindExpiredTime":0, "callbackExpiredTime":0 } 响应示例 HTTP/1.1 200 OK Content-Type: application/json;charset=utf-8 Content-Length: xx { "resultcode":"0", "resultdesc":"Success", "subscriptionId":"******", "virtualNum":"+86138****8888", "extendNum":"1234", "bindExpiredTime":0, "callbackExpiredTime":0 }
  • 结果码说明 表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鉴权时,生成随机数的时间与发送请求时的本地时间不能相差太大(具体差值请与管理员确认)。 403 1010002 Invalid request. 无效请求。 请参考接口参数说明,检查请求携带的参数格式是否正确。 例如: 检查是否同时携带callbackTone和callbackNum,若是,请保留一个。 检查分机号E是否长度或格式错误,若是,请填写正确长度及格式。 检查timeUnit是否格式错误,若是,请填写正确格式。 检查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模式的接口,不能调用其他模式的接口。 1012001 Resource of number is not to be applied. 资源未申请 携带的app_key和X号码没有绑定关系,请检查携带的X号码是否属于该应用。 1012008 Insufficient number of resources 号码资源不足。 没有可分配的X号码,请申请新的号码资源或修改areaCode的值。点击查看处理方法。 1012010 The number $ has been bound. 绑定关系已存在。 出现该错误码表示调用AXE模式绑定接口时指定的X号码(virtualNum)和A号码(bindNum)已有绑定关系,无需再次绑定。 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白名单是否配置正确。 1020167 No idle extend Number. 没有空闲的分机号。 出现该错误码表示调用AXE模式绑定接口时指定的分机号(extendNum)已被占用,请重新指定分机号。 1020176 Authentication failed, try again later 鉴权失败,稍后重试 IP因鉴权失败次数过多导致被拉黑,请30分钟后重试,或联系管理员放通该IP。 1020178 The transparent mode is not allowed. 不允许显示真实主叫号码。 您的应用不支持显示真实主叫号码,请修改displayNumMode参数的取值为“0”(显示X号码)后再次绑定。 500 1010001 Internal system error. 系统错误。 请联系客服处理。 1023001 Internal error. 内部错误。 1023002 Response timeout. 响应超时。 重新发送一次请求,若依然返回响应超时,请联系管理员处理。
  • 响应参数 表5 响应结果参数 参数名称 是否必选 参数类型 说明 resultcode 是 String(1-32) 请求返回的结果码。 resultdesc 是 String(1-256) 操作结果描述。 subscriptionId 否 String(1-64) 绑定ID,唯一标识一组绑定关系。成功响应时必定返回。请记录该ID用于后续接口调用。 virtualNum 否 String(1-32) X号码,为全局号码格式(包含国家码),如:+86170****0021。 成功响应时必定返回。 extendNum 否 String(1-4) 分机号,即AXE中的E。由隐私保护通话平台自动分配或由用户指定,最大4位,例如:1234 。 成功响应时必定返回。 bindExpiredTime 否 Integer 绑定关系有效时间,单位:小时。 callbackExpiredTime 否 Integer 回呼记录有效时间,单位:小时。 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参数说明 参数名称 是否必选 参数类型 说明 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”。 如果是在控制台设置归属该应用的隐私号码绑定关系,需在设置绑定关系时勾选“支持录音”。
  • API请求地址 API请求地址由“APP接入地址”和“访问URI”组成,数据来源如下: 参数 来源 示例 APP接入地址 登录管理控制台,从隐私保护通话“应用管理”页面获取。 https://rtcpns.cn-north-1.myhuaweicloud.com 访问URI 从各API接口页面中的“接口类型说明”中获取。 AXE模式绑定接口:/rest/caas/extendnumber/v1.0 综上,API请求地址示例如下: 设置AXE模式绑定关系 https://rtcpns.cn-north-1.myhuaweicloud.com/rest/caas/extendnumber/v1.0