华为云用户手册
-
使用说明 前提条件 已创建 隐私保护通话 应用,获取了APP_Key,APP_Secret和APP接入地址。 已申请到隐私保护号码。 若需要使用自定义放音,需要提前在放音文件管理页面上传并等待审核通过。 使用限制 1个X号码允许绑定5000对用户号码,但用户号码不可重复。例如,允许同时绑定AXB和CXD,但不允许同时绑定AXB和BXC。 注意事项 AXB模式支持设置AXB绑定关系时长(通过duration参数设置),绑定关系到期后自动解绑;还支持设置单次通话进行的最长时间(通过maxDuration参数设置),到期后系统自动挂断通话。 若要使用录音功能,需要完成以下两个步骤: 创建隐私保护通话应用时,“是否开通录音”选择“是”。 调用本接口设置归属该应用的隐私号码绑定关系时设置“recordFlag”为“true”。 注:如果是在控制台设置归属该应用的隐私号码绑定关系,需在设置绑定关系时勾选“支持录音”。 若要使用短信功能,需要完成以下三个步骤: 创建隐私保护通话应用时,“是否开通短信”选择“是”; 订购号码时,“是否需要短信功能”选择“是”; 调用本接口设置归属该应用的隐私号码绑定关系时不携带“privateSms”或设置“privateSms”为“true”。 注:如果是在控制台设置归属该应用的隐私号码绑定关系,需在设置绑定关系时勾选“支持短信”。
-
请求参数 表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的回铃音。
-
请求参数 表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:其他用户呼叫A。 1:A呼叫其他用户。 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主叫场景,第一路呼叫为A拨打X号码,callerNum为A号码。 A被叫场景,第一路呼叫为B拨打X号码,callerNum为B号码(B为任意其他用户)。 calleeNum 是 String(1-32) 被叫号码,号码为全局号码格式(包含国家码),比如+86138****0021。 当呼叫场景经过转接时,此参数对应第一路呼叫的被叫号码。 说明: A主叫场景,第一路呼叫为A拨打X号码,calleeNum为X号码。 A被叫场景,第一路呼叫为B拨打X号码,calleeNum为X号码。 fwdDisplayNum 否 String(1-32) 转接呼叫时的显示号,号码为全局号码格式(包含国家码),比如+86138****0021。 当呼叫场景经过转接时,此参数对应第二路呼叫的主显号码。 说明: A主叫场景,第二路呼叫为X拨打B号码,fwdDisplayNum为X号码。 A被叫场景,第二路呼叫为X拨打A号码,fwdDisplayNum为X号码。 fwdDstNum 否 String(1-32) 转接呼叫时的转接号码。号码仅支持全局号码格式(包含国家码),比如+86138****0021。 当呼叫场景经过转接时,此参数对应第二路呼叫的被叫号码。 说明: A主叫场景,第二路呼叫为X拨打B号码,fwdDstNum为B号码。 A被叫场景,第二路呼叫为X拨打A号码,fwdDstNum为A号码。 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(1-128) 录音文件名。 说明: 参数值为空时,请访问“recordFileDownloadUrl”参数携带的录音文件下载地址下载录音文件。 recordBucketName 否 String(1-128) 录音文件名所在的目录名。 说明: 参数值为空时,请访问“recordFileDownloadUrl”参数携带的录音文件下载地址下载录音文件。 recordDomain 否 String(1-256) 存放录音文件的 域名 。 说明: 参数值为空时,请访问“recordFileDownloadUrl”参数携带的录音文件下载地址下载录音文件。 serviceType 否 String(1-32) 携带呼叫的业务类型信息,取值范围: 003:AX模式 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) 用户附属信息。 当客户在AX模式绑定接口、AX模式绑定信息修改接口或AX模式设置临时被叫接口中携带了“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.3757285803.338666679.5","bindNum":"+86138****0022","sessionId":"1200_1827_4294967295_20190124023003@callenabler246.huaweicaas.com","subscriptionId":"****","callerNum":"+86138****0021","calleeNum":"+86138****0022","fwdDisplayNum":"+86138****0022","fwdDstNum":"+86138****7021","callInTime":"2019-01-24 02:30:03","fwdStartTime":"2019-01-24 02:30:03","fwdAlertingTime":"2019-01-24 02:30:04","fwdAnswerTime":"2019-01-24 02:30:06","callEndTime":"2019-01-24 02:30:22","fwdUnaswRsn":0,"ulFailReason":0,"sipStatusCode":0,"callOutUnaswRsn":0,"recordFlag":1,"recordStartTime":"2019-01-24 02:30:06","recordDomain":"****.com","recordBucketName":"****","recordObjectName":"****.wav","ttsPlayTimes":0,"ttsTransDuration":0,"mptyId":"****","serviceType":"003","hostName":"callenabler246.huaweicaas.com"}]}
-
使用说明 前提条件 客户添加应用时需设置呼叫话单接收地址,并确保提供的地址能够正常处理隐私保护通话平台发送的通知消息。 注意事项 若平台给客户推送话单后未收到成功响应,视为推送失败,平台会重新推送话单,直至客户返回成功响应。平台最多重推6次,分别于1分钟、4分钟、9分钟、106分钟、203分钟和300分钟后重推。 若没有收到平台推送请参考收不到呼叫事件和话单通知如何处理? 使用限制 业务平台推送话单信息给开发者应用,仅支持POST方式。
-
请求参数 表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) 通话的呼叫方向。 固定取值为1。 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-128) 被叫号码,号码为全局号码格式(包含国家码),比如+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(1-128) 录音文件名。 说明: 参数值为空时,请访问“recordFileDownloadUrl”参数携带的录音文件下载地址下载录音文件。 recordBucketName 否 String(1-128) 录音文件名所在的目录名。 说明: 参数值为空时,请访问“recordFileDownloadUrl”参数携带的录音文件下载地址下载录音文件。 recordDomain 否 String(1-256) 存放录音文件的域名。 说明: 参数值为空时,请访问“recordFileDownloadUrl”参数携带的录音文件下载地址下载录音文件。 serviceType 否 String(1-32) 携带呼叫的业务类型信息,取值范围: 004:AXB模式或X模式 hostName 否 String(1-128) 该参数用于标识话单生成的服务器设备对应的主机名。 subscriptionId 否 String(1-64) 绑定ID。 notifyMode 否 String(1-32) 该参数仅在X模式场景携带,固定取值为Block,用于标识该话单为X模式话单。 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号码)的城市码。 说明: 使用该参数的场景请联系华为云客服获取。 callRelDirection 否 Integer 主被叫通话结束后的挂机方向。 1:主叫主动挂机 2:被叫主动挂机 说明: 使用该参数的场景请联系华为云客服获取。 callDuration 否 Integer 呼叫的通话时长,单位为秒。 说明: 使用该参数的场景请联系华为云客服获取。 userData 否 String(0-256) 用户附属信息。 当客户在该接口Block模式响应参数中携带了“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":"e01ed0af24040eab7ba27a1c441f91641.3663053204.1117803.14","bindNum":"+86138****0022","sessionId":"1200_366_0_20161228102743@callenabler.home1.com","subscriptionId":"********","callerNum":"+86138****0021","calleeNum":"+86138****0022","fwdDisplayNum":"+86138****0022","fwdDstNum":"+86138****7021","callInTime":"2019-01-03 03:11:18","fwdStartTime":"2019-01-03 03:11:20","fwdAlertingTime":"2019-01-03 03:11:21","fwdAnswerTime":"2019-01-03 03:11:22","callEndTime":"2019-01-03 03:11:42","fwdUnaswRsn":0,"ulFailReason":0,"sipStatusCode":0,"callOutUnaswRsn":0,"recordFlag":1,"recordStartTime":"2019-01-03 03:11:22","recordDomain":"****.com","recordBucketName":"****","recordObjectName":"****.wav","ttsPlayTimes":0,"ttsTransDuration":0,"mptyId":"********","serviceType":"004","hostName":"callenabler246.huaweicaas.com","userData":"d77b5e3cbd234159af401d63f559f896","notifyMode":"Block"}]}
-
使用说明 前提条件 客户添加应用时需设置呼叫话单接收地址,并确保提供的地址能够正常处理隐私保护通话平台发送的通知消息。 注意事项 若平台给客户推送话单后未收到成功响应,视为推送失败,平台会重新推送话单,直至客户返回成功响应。平台最多重推6次,分别于1分钟、4分钟、9分钟、106分钟、203分钟和300分钟后重推。 若没有收到平台推送请参考收不到呼叫事件和话单通知如何处理? 使用限制 业务平台推送话单信息给开发者应用,仅支持POST方式。
-
请求参数 AX模式中,A和X号码形成绑定关系,所有与A用户建立的通讯都是通过X号码建立:A呼叫X,呼叫转接给指定的呼叫对象(A主叫场景);其他用户呼叫X,呼叫转接给A(A被叫场景)。 注:以下流程和接口示例以A主叫场景为例,即A呼叫X,呼叫转接给指定的呼叫对象B,B用户接听为例。流程和接口示例仅供参考,请以实际消息为准。 图1 A主叫场景业务流程 表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主叫场景,呼入事件的主叫号码为A号码。 A被叫场景,呼入事件的主叫号码为B号码(B为任意其他用户)。 called 否 String(1-32) 被叫号码。 说明: A主叫/被叫场景,呼入事件的被叫号码为X号码。 subscriptionId 否 String(1-64) 绑定ID。 userData 否 String(1-256) 用户附属信息。 说明: 使用该参数的场景请联系华为云客服获取。 接口示例 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":"1200_1827_4294967295_20190124023003@callenabler246.huaweicaas.com","timestamp":"2019-01-24 02:30:03","caller":"+86138****0021","called":"+86138****0022","subscriptionId":"****"}} 表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。 说明: A主叫/被叫场景,呼出事件的主叫号码为X号码。 called 否 String(1-32) 被叫号码。 说明: A主叫场景,呼出事件的被叫号码为B号码。 A被叫场景,呼出事件的被叫号码为A号码。 subscriptionId 否 String(1-64) 绑定ID。 userData 否 String(1-256) 用户附属信息。 当客户在AX模式绑定接口、AX模式绑定信息修改接口或AX模式设置临时被叫接口中携带了“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":"1200_1827_4294967295_20190124023003@callenabler246.huaweicaas.com","timestamp":"2019-01-24 02:30:03","caller":"+86138****0022","called":"+86138****7021","subscriptionId":"****"}} 表7 alerting:振铃事件 参数名称 是否必选 参数类型 说明 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主叫/被叫场景,振铃事件的主叫号码为X号码。 called 否 String(1-32) 被叫号码。 说明: A主叫场景,振铃事件的被叫号码为B号码。 A被叫场景,振铃事件的被叫号码为A号码。 subscriptionId 否 String(1-64) 绑定ID。 userData 否 String(1-256) 用户附属信息。 当客户在AX模式绑定接口、AX模式绑定信息修改接口或AX模式设置临时被叫接口中携带了“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":"alerting","statusInfo":{"sessionId":"1200_1827_4294967295_20190124023003@callenabler246.huaweicaas.com","timestamp":"2019-01-24 02:30:04","caller":"+86138****0022","called":"+86138****7021","subscriptionId":"****"}} 表8 answer:应答事件 参数名称 是否必选 参数类型 说明 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主叫/被叫场景,应答事件的主叫号码为X号码。 called 否 String(1-32) 被叫号码。 说明: A主叫场景,应答事件的被叫号码为B号码。 A被叫场景,应答事件的被叫号码为A号码。 subscriptionId 否 String(1-64) 绑定ID。 userData 否 String(1-256) 用户附属信息。 当客户在AX模式绑定接口、AX模式绑定信息修改接口或AX模式设置临时被叫接口中携带了“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":"answer","statusInfo":{"sessionId":"1200_1827_4294967295_20190124023003@callenabler246.huaweicaas.com","timestamp":"2019-01-24 02:30:06","caller":"+86138****0022","called":"+86138****7021","subscriptionId":"****"}} 表9 disconnect:挂机事件 参数名称 是否必选 参数类型 说明 timestamp 是 String(1-128) 该呼叫事件发生时隐私保护通话平台的UNIX时间戳。 该参数取值为UTC时间(+8小时为北京时间)格式,即为“yyyy-MM-dd HH:mm:ss”。 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。 userData 否 String(1-256) 用户附属信息。 当客户在AX模式绑定接口、AX模式绑定信息修改接口或AX模式设置临时被叫接口中携带了“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":"disconnect","statusInfo":{"sessionId":"1200_1827_4294967295_20190124023003@callenabler246.huaweicaas.com","timestamp":"2019-01-24 02:30:22","caller":"+86138****0022","called":"+86138****7021","stateCode":0,"stateDesc":"The user releases the call.","subscriptionId":"****"}}
-
使用说明 前提条件 客户添加应用时需设置呼叫状态接收地址,并确保提供的地址能够正常处理隐私保护通话平台发送的通知消息。 如果需要单独接收呼入事件(callin),需联系客服,提供呼入事件状态接收地址。 注意事项 若平台给客户推送呼叫事件通知后未收到成功响应,视为推送失败,平台会重新推送呼叫事件通知,直至客户返回成功响应。平台最多重推6次,分别于1分钟、4分钟、9分钟、106分钟、203分钟和300分钟后重推。 若没有收到平台推送请参考收不到呼叫事件和话单通知如何处理? 使用限制 业务平台推送呼叫状态给开发者应用,仅支持POST方式。
-
接口示例 接口示例仅供参考,请以实际消息为准。 请求示例 PUT /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 { "subscriptionId":"****","calleeNum":"+86138****0021"} 响应示例 HTTP/1.1 200 OK Content-Type: application/json;charset=utf-8 Content-Length: xx { "resultcode":"0", "resultdesc":"Success"}
-
结果码说明 表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填写是否正确。 1010004 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模式的接口,不能调用其他模式的接口。 1012007 The record does not exist. 记录不存在。 未查询到绑定关系,请检查携带的subscriptionId参数是否填写正确,或是否属于该应用。 1012102 The number status is abnormal. 号码状态异常。 出现该错误码表示调用接口时指定的X号码因投诉或号码状态异常被隐私保护通话平台加入了黑名单,请查看订购号码时填写的邮箱是否有业务下线通知邮件,如果没有,请拨打400电话联系华为云客服处理。 1012010 The number $ has been bound. 绑定关系已存在。 请检查callerNum或calleeNum是否已和subscriptionId指定的X号码存在绑定关系,且绑定关系未过期,然后修改callerNum/calleeNum的值。 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. 响应超时。 重新发送一次请求,若依然返回响应超时,请联系管理员处理。
-
请求参数 表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参数说明 参数名称 是否必选 参数类型 说明 subscriptionId 是 String(1-64) 指定“AXB模式绑定接口”返回的绑定ID进行修改。 callerNum 否 String(4-31) 将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号码都必须是手机号码。 calleeNum 否 String(4-31) 将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天) 不携带该参数表示不修改绑定关系保持时间。 preVoice 否 ApiPlayInfo 修改个性化通话前等待音。 不携带该参数表示不修改通话前等待音。 说明: 仅部分号码支持,如需使用该功能请咨询华为云客服。 maxDuration 否 Integer 修改允许单次通话进行的最长时间,单位为分钟。 取值范围:0~1440 0:系统不主动结束通话,由主被叫双方结束通话。 1~1440:当通话时长达到此配置值,系统主动结束通话。 不携带时,表示不修改该参数值。 lastMinVoice 否 String(0-128) 该绑定关系的maxDuration不为0时该参数有效。 修改通话剩余最后一分钟时的提示音,填写为放音文件名,可在放音文件管理页面查看。 不携带时,表示不修改该参数值。 说明: 仅部分号码支持,如需使用该功能请咨询华为云客服。 privateSms 否 String(枚举) 修改该绑定关系是否支持短信功能。 若客户添加应用时未开通短信功能,请勿携带此参数。 取值范围: false:不支持短信 true:支持短信 不携带时,表示不修改该参数值。 recordFlag 否 String(枚举) 是否需要针对该绑定关系产生的所有通话录音。 false:表示不录音 true:表示录音。 该参数仅当客户添加应用时申请开通了录音功能才有效。 不携带时,表示不修改该参数值。 userData 否 String(1-256) 用户自定义数据。 不允许携带以下字符:“^”,“{”,“}”。 不允许包含中文字符,如果包含中文字符请采用Base64编码。 说明: 若在设置绑定关系时携带该参数,绑定关系对应的呼叫、话单和短信通知消息中也会携带该参数。 表5 ApiPlayInfo定义 参数名称 是否必选 参数类型 说明 callerHintTone 否 String(0-128) 修改callerNum的通话前等待音,填写为放音文件名,可在放音文件管理页面查看。 不携带时,表示不修改该参数值。 calleeHintTone 否 String(0-128) 修改calleeNum的通话前等待音,填写为放音文件名,可在放音文件管理页面查看。 不携带时,表示不修改该参数值。
-
接口示例 接口示例仅供参考,请以实际消息为准。 请求示例 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
-
使用说明 前提条件 已通过“话单通知API”获取了录音文件名(fileName)和录音文件存储的服务器域名(recordDomain)(不同的录音文件的fileName和recordDmain不同,这两个参数用来区分隐私保护通话平台保存的录音文件)。 注意事项 录音文件在平台只保存七天(隐私保护通话平台给客户服务器推送话单后开始计时),超过七天平台会自动删除该录音文件。请在七天期限内调用该接口获取下载地址并下载录音。 隐私保护通话平台给客户服务器推送话单七天之后再调用此接口获取下载地址,会返回“The record does not exist.”错误。 建议调用该接口时把connection设置为不支持重定向,再从Location头域中获取到录音文件的下载地址,具体操作可参考开发指南中编程语言的代码样例。
-
请求参数 表2 请求URL参数说明 参数名称 是否必选 参数类型 说明 fileName 是 String(1-128) 录音文件名。通过“话单通知接口”的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。不同编程语言中的时间格式转换方式不同,部分语言可参考表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. 无效请求。 参考各接口参数说明,检查请求携带的参数格式是否正确,如以下参数格式问题: 绑定接口填写的号码参数需为全局号码格式,如+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所属应用状态是否正常。 1011006 Under traffic control status 请求者(IP、手机号码)处于流控状态下。 请稍等一分钟再试。 1012012 Application does not open recording function. 应用未开启录音功能。 请确认app_key所属的应用是否开启了录音功能。 1012007 The record does not exist. 记录不存在。 请确认fileName参数的填写是否正确。 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. 响应超时。 重新发送一次请求,若依然返回响应超时,请联系管理员处理。
-
接口示例 接口示例仅供参考,请以实际消息为准。 请求示例 PUT /rest/provision/caas/privatenumber/v1.0 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 { "subscriptionId":"****","privateSms":"true"} 响应示例 HTTP/1.1 200 OK Content-Type: application/json;charset=utf-8 Content-Length: xx { "resultcode":"0", "resultdesc":"Success" }
-
结果码说明 表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. 无效请求。 参考各接口参数说明,检查请求携带的参数格式是否正确,如以下参数格式问题: 绑定接口填写的号码参数需为全局号码格式,如+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 The account does not exist. 账号不存在。 出现该错误码可能有以下两个原因: 调用接口时指定的X号码(privateNum)可能不是该应用已申请的隐私号码,请确认privateNum参数的填写是否正确; 调用接口时填写的X号码(privateNum)格式不正确,请根据接口文档修改号码格式后再次尝试。 1011004 The number is not applied for binding application. X号码和app_key没有绑定关系。 携带的app_key和X号码没有绑定关系,请检查携带的X号码是否属于该应用。 1012102 The number status is abnormal. 号码状态异常。 出现该错误码表示调用接口时指定的X号码因投诉或号码状态异常被隐私保护通话平台加入了黑名单,请查看订购号码时填写的邮箱是否有业务下线通知邮件,如果没有,请拨打400电话联系华为云客服处理。 1016001 The record does not exist. 记录不存在。 找不到绑定记录。请检查origNum或者subscriptionId参数的填写是否正确。 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号码)后再次绑定。 500 1010001 Internal system error. 系统错误。 请联系客服处理。 1023001 Internal error. 内部错误。 1023002 Response timeout. 响应超时。 重新发送一次请求,若依然返回响应超时,请联系管理员处理。
-
请求参数 表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参数说明 参数名称 是否必选 参数类型 说明 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) AX中的X号码。 填写为全局号码格式(包含国家码),例如:+86138****0021。 系统可通过subscriptionId或privateNum确定唯一一个绑定关系,即不携带subscriptionId时,必须携带privateNum。 subscriptionId 否 String(0-64) 指定“AX模式绑定接口”返回的绑定ID修改绑定信息。 请求携带了subscriptionId时,系统会以subscriptionId的值为准,不关注privateNum参数。 privateSms 否 String(枚举) 修改该绑定关系是否支持短信功能。 若客户添加应用时未开通短信功能,请勿携带此参数。 取值范围: false:不支持短信 true:支持短信 不携带时,表示不修改该参数值。 recordFlag 否 String(枚举) 是否需要针对该绑定关系产生的所有通话录音。 false:表示不录音 true:表示录音。 该参数仅当客户添加应用时申请开通了录音功能才有效。 不携带时,表示不修改该参数值。 maxDuration 否 Integer 修改允许单次通话进行的最长时间,单位为分钟。 取值范围:0~1440 0:系统不主动结束通话,由主被叫双方结束通话。 1~1440:当通话时长达到此配置值,系统主动结束通话。 不携带时,表示不修改该参数值。 lastMinVoice 否 String(0-128) 该绑定关系的maxDuration不为0时该参数有效。 修改通话剩余最后一分钟时的提示音,填写为放音文件名,可在放音文件管理页面查看。 不携带时,表示不修改该参数值。 说明: 仅部分号码支持,如需使用该功能请咨询华为云客服。 userData 否 String(1-256) 用户自定义数据。 不允许携带以下字符:“{”,“}”(即大括号)。 不允许包含中文字符,如果包含中文字符请采用Base64编码。 说明: 若在设置绑定关系时携带该参数,绑定关系对应的呼叫、话单和短信通知消息中也会携带该参数。 turnFlag 否 String(枚举) 修改隐私号开关机状态。 取值范围: on:开机状态 off:关机状态 不携带时,表示不修改该参数值。 callDirection 否 Integer 呼叫方向控制。表示该绑定关系允许的呼叫方向。 取值范围如下: 0:允许双向呼叫。 1:只允许A呼叫X号码。 2:只允许其他号码呼叫X号码。 不携带时,表示不修改该参数值。 calleeNumDisplay 否 String(枚举) 设置非A用户呼叫X时,A接到呼叫时的主显号码。 取值: 0:显示X号码; 1:显示真实主叫号码。 不携带时,表示不修改该参数值。 说明: 由于运营商管控,当前平台要求该参数必须设置为0,否则呼叫会被运营商拦截。
-
请求参数 表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。 当呼叫场景经过转接时,此参数对应第一路呼叫的主叫号码。 说明: 第一路呼叫为B拨打X号码,callerNum为B号码。 calleeNum 是 String(1-128) 被叫号码,号码为全局号码格式(包含国家码),比如+86138****0021。 当呼叫场景经过转接时,此参数对应第一路呼叫的被叫号码。 说明: 第一路呼叫为B拨打X号码,calleeNum为X号码。 fwdDisplayNum 否 String(1-32) 转接呼叫时的显示号,号码为全局号码格式(包含国家码),比如+86138****0021。 当呼叫场景经过转接时,此参数对应第二路呼叫的主显号码。 说明: 第二路呼叫为Y拨打A号码,fwdDisplayNum为Y号码。 fwdDstNum 否 String(1-32) 转接呼叫时的转接号码。号码仅支持全局号码格式(包含国家码),比如+86138****0021。 当呼叫场景经过转接时,此参数对应第二路呼叫的被叫号码。 说明: 第二路呼叫为Y拨打A号码,fwdDstNum为A号码。 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(1-128) 录音文件名。 说明: 参数值为空时,请访问“recordFileDownloadUrl”参数携带的录音文件下载地址下载录音文件。 recordBucketName 否 String(1-128) 录音文件名所在的目录名。 说明: 参数值为空时,请访问“recordFileDownloadUrl”参数携带的录音文件下载地址下载录音文件。 recordDomain 否 String(1-256) 存放录音文件的域名。 说明: 参数值为空时,请访问“recordFileDownloadUrl”参数携带的录音文件下载地址下载录音文件。 serviceType 否 String(1-32) 携带呼叫的业务类型信息,取值范围: 007:AXYB模式 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) 用户自定义数据。 若客户在调用AXYB模式绑定接口时携带了“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****0023","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":"007","hostName":"callenabler246.huaweicaas.com"}]}
-
使用说明 前提条件 客户添加应用时需设置呼叫话单接收地址,并确保提供的地址能够正常处理隐私保护通话平台发送的通知消息。 注意事项 若平台给客户推送话单后未收到成功响应,视为推送失败,平台会重新推送话单,直至客户返回成功响应。平台最多重推6次,分别于1分钟、4分钟、9分钟、106分钟、203分钟和300分钟后重推。 若没有收到平台推送请参考收不到呼叫事件和话单通知如何处理? 使用限制 业务平台推送话单信息给开发者应用,仅支持POST方式。
-
使用说明 前提条件 客户添加应用时需设置呼叫状态接收地址,并确保提供的地址能够正常处理隐私保护通话平台发送的通知消息。 如果需要单独接收呼入事件(callin),需联系客服,提供呼入事件状态接收地址。 注意事项 若平台给客户推送呼叫事件通知后未收到成功响应,视为推送失败,平台会重新推送呼叫事件通知,直至客户返回成功响应。平台最多重推6次,分别于1分钟、4分钟、9分钟、106分钟、203分钟和300分钟后重推。 若没有收到平台推送请参考收不到呼叫事件和话单通知如何处理? 使用限制 业务平台推送呼叫状态给开发者应用,仅支持POST方式。
-
请求参数 AXYB模式中,A和B通过X和Y号码形成绑定关系,使用隐私号码X和Y互相通讯(A拨打Y,接通B;B拨打X,接通A)。 以下流程和接口示例以B拨打X,呼叫通过Y转接至A,A用户接听为例,流程和接口示例仅供参考,请以实际消息为准。 图1 AXYB业务流程 表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。 说明: 呼入事件的主叫号码为B号码。 called 否 String(1-32) 被叫号码。 说明: 呼入事件的被叫号码为X号码。 subscriptionId 否 String(1-64) 绑定ID。 userData 否 String(1-256) 用户自定义数据。 说明: 使用该参数的场景请联系华为云客服获取。 接口示例 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":"1200_1029_4294967295_20190123091514@callenabler246.huaweicaas.com","timestamp":"2019-01-23 09:15:14","caller":"+86138****0021","called":"+86138****0022","subscriptionId":"****"}} 表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。 说明: 呼出事件的主叫号码为Y号码。 called 否 String(1-32) 被叫号码。 说明: 呼出事件的被叫号码为A号码。 subscriptionId 否 String(1-64) 绑定ID。 userData 否 String(1-256) 用户自定义数据。 若客户在调用AXYB模式绑定接口时携带了“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":"1200_1029_4294967295_20190123091514@callenabler246.huaweicaas.com","timestamp":"2019-01-23 09:15:15","caller":"+86138****0021","called":"+86138****7021","subscriptionId":"****"}} 表7 alerting:振铃事件 参数名称 是否必选 参数类型 说明 timestamp 是 String(1-128) 该呼叫事件发生时隐私保护通话平台的UNIX时间戳。 该参数取值为UTC时间(+8小时为北京时间)格式,即为“yyyy-MM-dd HH:mm:ss”。 sessionId 是 String(1-256) 唯一指定一条通话链路的标识ID。 caller 否 String(1-32) 主叫号码。 号码为全局号码格式(包含国家码),如+86138****0021。 说明: 振铃事件的主叫号码为Y号码。 called 否 String(1-32) 被叫号码。 说明: 振铃事件的被叫号码为A号码。 subscriptionId 否 String(1-64) 绑定ID。 userData 否 String(1-256) 用户自定义数据。 若客户在调用AXYB模式绑定接口时携带了“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":"alerting","statusInfo":{"sessionId":"1200_1029_4294967295_20190123091514@callenabler246.huaweicaas.com","timestamp":"2019-01-23 09:15:16","caller":"+86138****0021","called":"+86138****7021","subscriptionId":"****"}} 表8 answer:应答事件 参数名称 是否必选 参数类型 说明 timestamp 是 String(1-128) 该呼叫事件发生时隐私保护通话平台的UNIX时间戳。 该参数取值为UTC时间(+8小时为北京时间)格式,即为“yyyy-MM-dd HH:mm:ss”。 sessionId 是 String(1-256) 唯一指定一条通话链路的标识ID。 caller 否 String(1-32) 主叫号码。 号码为全局号码格式(包含国家码),如+86138****0021。 说明: 应答事件的主叫号码为Y号码。 called 否 String(1-32) 被叫号码。 说明: 应答事件的被叫号码为A号码。 subscriptionId 否 String(1-64) 绑定ID。 userData 否 String(1-256) 用户自定义数据。 若客户在调用AXYB模式绑定接口时携带了“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":"answer","statusInfo":{"sessionId":"1200_1029_4294967295_20190123091514@callenabler246.huaweicaas.com","timestamp":"2019-01-23 09:15:36","caller":"+86138****0021","called":"+86138****7021","subscriptionId":"****"}} 表9 disconnect:挂机事件 参数名称 是否必选 参数类型 说明 timestamp 是 String(1-128) 该呼叫事件发生时隐私保护通话平台的UNIX时间戳。 该参数取值为UTC时间(+8小时为北京时间)格式,即为“yyyy-MM-dd HH:mm:ss”。 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。 userData 否 String(1-256) 用户自定义数据。 若客户在调用AXYB模式绑定接口时携带了“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":"disconnect","statusInfo":{"sessionId":"1200_1029_4294967295_20190123091514@callenabler246.huaweicaas.com","timestamp":"2019-01-23 09:16:41","caller":"+86138****0021","called":"+86138****7021","stateCode":0,"stateDesc":"The user releases the call.","subscriptionId":"****"}}
-
请求参数 AXB模式中,A和B通过X号码形成绑定关系,使用隐私号码X互相通讯。 以下流程和接口示例以A拨打X,呼叫转接至B,B用户接听为例,流程和接口示例仅供参考,请以实际消息为准。 图1 AXB业务流程 表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号码。 subscriptionId 否 String(1-64) 绑定ID。 userData 否 String(1-256) 用户附属信息。 说明: 使用该参数的场景请联系华为云客服获取。 接口示例 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":"1200_1029_4294967295_20190123091514@callenabler246.huaweicaas.com","timestamp":"2019-01-23 09:15:14","caller":"+86138****0021","called":"+86138****0022","subscriptionId":"****"}} 表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) 用户附属信息。 当客户在AXB模式绑定接口、AXB模式绑定信息修改接口中携带了“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":"1200_1029_4294967295_20190123091514@callenabler246.huaweicaas.com","timestamp":"2019-01-23 09:15:15","caller":"+86138****0021","called":"+86138****7021","subscriptionId":"****"}} 表7 alerting:振铃事件 参数名称 是否必选 参数类型 说明 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) 用户附属信息。 当客户在AXB模式绑定接口、AXB模式绑定信息修改接口中携带了“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":"alerting","statusInfo":{"sessionId":"1200_1029_4294967295_20190123091514@callenabler246.huaweicaas.com","timestamp":"2019-01-23 09:15:16","caller":"+86138****0021","called":"+86138****7021","subscriptionId":"****"}} 表8 answer:应答事件 参数名称 是否必选 参数类型 说明 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) 用户附属信息。 当客户在AXB模式绑定接口、AXB模式绑定信息修改接口中携带了“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":"answer","statusInfo":{"sessionId":"1200_1029_4294967295_20190123091514@callenabler246.huaweicaas.com","timestamp":"2019-01-23 09:15:36","caller":"+86138****0021","called":"+86138****7021","subscriptionId":"****"}} 表9 disconnect:挂机事件 参数名称 是否必选 参数类型 说明 timestamp 是 String(1-128) 该呼叫事件发生时隐私保护通话平台的UNIX时间戳。 该参数取值为UTC时间(+8小时为北京时间)格式,即为“yyyy-MM-dd HH:mm:ss”。 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。 userData 否 String(1-256) 用户附属信息。 当客户在AXB模式绑定接口、AXB模式绑定信息修改接口中携带了“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":"disconnect","statusInfo":{"sessionId":"1200_1029_4294967295_20190123091514@callenabler246.huaweicaas.com","timestamp":"2019-01-23 09:16:41","caller":"+86138****0021","called":"+86138****7021","stateCode":0,"stateDesc":"The user releases the call.","subscriptionId":"****"}}
-
使用说明 前提条件 客户添加应用时需设置呼叫状态接收地址,并确保提供的地址能够正常处理隐私保护通话平台发送的通知消息。 如果需要单独接收呼入事件(callin),需联系客服,提供呼入事件状态接收地址。 注意事项 若平台给客户推送呼叫事件通知后未收到成功响应,视为推送失败,平台会重新推送呼叫事件通知,直至客户返回成功响应。平台最多重推6次,分别于1分钟、4分钟、9分钟、106分钟、203分钟和300分钟后重推。 若没有收到平台推送请参考收不到呼叫事件和话单通知如何处理? 使用限制 业务平台推送呼叫状态给开发者应用,仅支持POST方式。
-
接口示例 接口示例仅供参考,请以实际消息为准。 请求示例 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
-
使用说明 前提条件 已通过“话单通知API”获取了录音文件名(fileName)和录音文件存储的服务器域名(recordDomain)(不同的录音文件的fileName和recordDmain不同,这两个参数用来区分隐私保护通话平台保存的录音文件)。 注意事项 录音文件在平台只保存七天(隐私保护通话平台给客户服务器推送话单后开始计时),超过七天平台会自动删除该录音文件。请在七天期限内调用该接口获取下载地址并下载录音。 隐私保护通话平台给客户服务器推送话单七天之后再调用此接口获取下载地址,会返回“The record does not exist.”错误。 建议调用该接口时把connection设置为不支持重定向,再从Location头域中获取到录音文件的下载地址,具体操作可参考开发指南中编程语言的代码样例。
-
请求参数 表2 请求URL参数说明 参数名称 是否必选 参数类型 说明 fileName 是 String(1-128) 录音文件名。通过“话单通知接口”的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。不同编程语言中的时间格式转换方式不同,部分语言可参考表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. 无效请求。 参考各接口参数说明,检查请求携带的参数格式是否正确,如以下参数格式问题: 绑定接口填写的号码参数需为全局号码格式,如+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所属应用状态是否正常。 1011006 Under traffic control status 请求者(IP、手机号码)处于流控状态下。 请稍等一分钟再试。 1012012 Application does not open recording function. 应用未开启录音功能。 请确认app_key所属的应用是否开启了录音功能。 1012007 The record does not exist. 记录不存在。 请确认fileName参数的填写是否正确。 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. 响应超时。 重新发送一次请求,若依然返回响应超时,请联系管理员处理。
-
接口示例 接口示例仅供参考,请以实际消息为准。 请求示例 POST /notify 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 {"appKey":"****","smsEvent":{"smsIdentifier":"********", "notificationMode":"Notify", "calling":"+86138****0001", "virtualNumber":"+86138****0000", "event":"Text SMS ", "timeStamp":"2020-12-23T09:06:16.450Z", "extInfo":{"extParas":[{"key":"splitNum","value":"0"},{"key":"direction","value":"2"}]}, "sendResult":2 }} 响应示例 请求为Notify模式时 HTTP/1.1 200 OK
-
请求参数 表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参数说明 参数名称 是否必选 参数类型 说明 appKey 是 String(1-32) 隐私保护通话应用的APP_Key。 smsEvent 是 SMSEventInfoType 短信状态事件。 表5 SMSEventInfoType定义 参数名称 是否必选 参数类型 说明 smsIdentifier 是 String(1-64) 短信唯一标识。 若用户发送的是长短信,隐私保护通话平台会将长短信的多个分片合并为一个通知上报。 notificationMode 是 String(1-8) 通知模式: Notify:通知模式。 calling 否 String(1-32) 真实发送方号码。 号码为全局号码格式(包含国家码),比如+86138****7021。 called 否 String(1-32) 真实接收方号码。 仅在隐私保护通话平台转发短信成功后携带。 号码为全局号码格式(包含国家码),比如+86138****7022。 virtualNumber 否 String(1-32) X号码。 号码为全局号码格式(包含国家码),比如+86138****0001。 event 是 String(1-16) 短信状态事件。 TextSMS:文本短信 timeStamp 是 String(1-32) 短信事件发生的系统时间戳,UTC时间。 格式:yyyy-MM-dd'T'HH:mm:ss.SSS'Z' 其中SSS是毫秒,“T”和“Z”为固定字符。 extInfo 是 ExtensionInfoType 拓展信息。 subscriptionId 否 String(1-64) 绑定ID。 smsContent 否 String(1-2000) 用户发送的短信内容。 请参考如何设置才能收到短信内容?开通该功能。 sendResult 是 Integer 发送结果。 0:成功 1:因用户账户冻结,发送失败。 2:因绑定关系不存在,发送失败。 3:因X号码被暂停,发送失败。 4:非商用APP,发送失败。 5:因系统内部错误,发送失败。 8:黑名单管控,发送失败。 9:部分发送成功。 10:全部发送失败。 11:X号码不支持短信能力。 12:短信内容不包含特征关键词。 13:短信内容包含禁止词汇。 areaCode 否 String(0-32) 隐私保护号码(X号码)的城市码。 说明: 使用该参数的场景请联系华为云客服获取。 userData 否 String(1-256) 用户附属信息。 说明: 使用该参数的场景请联系华为云客服获取。 表6 ExtensionInfoType定义 参数名称 是否必选 参数类型 说明 extParas 是 JsonArray 扩展信息(Key-Value)列表。 格式如下: "extParas": [{"key": "splitNum","value": "value1"},{"key": "direction","value": "value2"}] Key、Value取值分别不能超过32个字节。 “key”取值为“splitNum”时表示实际短信发送成功数量,即长短信拆分后的短信数量。value1表示“splitNum”的取值。 “key”取值为“direction”时表示短信发送方向。value2表示“direction”取值,含义如下: 0:B发送短信给A。 1:A发送短信给B。 2:异常场景无法获取发送方向。
共99303条
- 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
- 27
- 28
- 29
- 30
- 31
- 32
- 33
- 34
- 35
- 36
- 37
- 38
- 39
- 40
- 41
- 42
- 43
- 44
- 45
- 46
- 47
- 48
- 49
- 50
- 51
- 52
- 53
- 54
- 55
- 56
- 57
- 58
- 59
- 60
- 61
- 62
- 63
- 64
- 65
- 66
- 67
- 68
- 69
- 70
- 71
- 72
- 73
- 74
- 75
- 76
- 77
- 78
- 79
- 80
- 81
- 82
- 83
- 84
- 85
- 86
- 87
- 88
- 89
- 90
- 91
- 92
- 93
- 94
- 95
- 96
- 97
- 98
- 99
- 100
- 101
- 102
- 103
- 104
- 105
- 106
- 107
- 108
- 109
- 110
- 111
- 112
- 113
- 114
- 115
- 116
- 117
- 118
- 119
- 120
- 121
- 122
- 123
- 124
- 125
- 126
- 127
- 128
- 129
- 130
- 131
- 132
- 133
- 134
- 135
- 136
- 137
- 138
- 139
- 140
- 141
- 142
- 143
- 144
- 145
- 146
- 147
- 148
- 149
- 150
- 151
- 152
- 153
- 154
- 155
- 156
- 157
- 158
- 159
- 160
- 161
- 162
- 163
- 164
- 165
- 166
- 167
- 168
- 169
- 170
- 171
- 172
- 173
- 174
- 175
- 176
- 177
- 178
- 179
- 180
- 181
- 182
- 183
- 184
- 185
- 186
- 187
- 188
- 189
- 190
- 191
- 192
- 193
- 194
- 195
- 196
- 197
- 198
- 199
- 200
- 201
- 202
- 203
- 204
- 205
- 206
- 207
- 208
- 209
- 210
- 211
- 212
- 213
- 214
- 215
- 216
- 217
- 218
- 219
- 220
- 221
- 222
- 223
- 224
- 225
- 226
- 227
- 228
- 229
- 230
- 231
- 232
- 233
- 234
- 235
- 236
- 237
- 238
- 239
- 240
- 241
- 242
- 243
- 244
- 245
- 246
- 247
- 248
- 249
- 250
- 251
- 252
- 253
- 254
- 255
- 256
- 257
- 258
- 259
- 260
- 261
- 262
- 263
- 264
- 265
- 266
- 267
- 268
- 269
- 270
- 271
- 272
- 273
- 274
- 275
- 276
- 277
- 278
- 279
- 280
- 281
- 282
- 283
- 284
- 285
- 286
- 287
- 288
- 289
- 290
- 291
- 292
- 293
- 294
- 295
- 296
- 297
- 298
- 299
- 300
- 301
- 302
- 303
- 304
- 305
- 306
- 307
- 308
- 309
- 310
- 311
- 312
- 313
- 314
- 315
- 316
- 317
- 318
- 319
- 320
- 321
- 322
- 323
- 324
- 325
- 326
- 327
- 328
- 329
- 330
- 331
- 332
- 333
- 334
- 335
- 336
- 337
- 338
- 339
- 340
- 341
- 342
- 343
- 344
- 345
- 346
- 347
- 348
- 349
- 350
- 351
- 352
- 353
- 354
- 355
- 356
- 357
- 358
- 359
- 360
- 361
- 362
- 363
- 364
- 365
- 366
- 367
- 368
- 369
- 370
- 371
- 372
- 373
- 374
- 375
- 376
- 377
- 378
- 379
- 380
- 381
- 382
- 383
- 384
- 385
- 386
- 387
- 388
- 389
- 390
- 391
- 392
- 393
- 394
- 395
- 396
- 397
- 398
- 399
- 400
- 401
- 402
- 403
- 404
- 405
- 406
- 407
- 408
- 409
- 410
- 411
- 412
- 413
- 414
- 415
- 416
- 417
- 418
- 419
- 420
- 421
- 422
- 423
- 424
- 425
- 426
- 427
- 428
- 429
- 430
- 431
- 432
- 433
- 434
- 435
- 436
- 437
- 438
- 439
- 440
- 441
- 442
- 443
- 444
- 445
- 446
- 447
- 448
- 449
- 450
- 451
- 452
- 453
- 454
- 455
- 456
- 457
- 458
- 459
- 460
- 461
- 462
- 463
- 464
- 465
- 466
- 467
- 468
- 469
- 470
- 471
- 472
- 473
- 474
- 475
- 476
- 477
- 478
- 479
- 480
- 481
- 482
- 483
- 484
- 485
- 486
- 487
- 488
- 489
- 490
- 491
- 492
- 493
- 494
- 495
- 496
- 497
- 498
- 499
- 500
- 501
- 502
- 503
- 504
- 505
- 506
- 507
- 508
- 509
- 510
- 511
- 512
- 513
- 514
- 515
- 516
- 517
- 518
- 519
- 520
- 521
- 522
- 523
- 524
- 525
- 526
- 527
- 528
- 529
- 530
- 531
- 532
- 533
- 534
- 535
- 536
- 537
- 538
- 539
- 540
- 541
- 542
- 543
- 544
- 545
- 546
- 547
- 548
- 549
- 550
- 551
- 552
- 553
- 554
- 555
- 556
- 557
- 558
- 559
- 560
- 561
- 562
- 563
- 564
- 565
- 566
- 567
- 568
- 569
- 570
- 571
- 572
- 573
- 574
- 575
- 576
- 577
- 578
- 579
- 580
- 581
- 582
- 583
- 584
- 585
- 586
- 587
- 588
- 589
- 590
- 591
- 592
- 593
- 594
- 595
- 596
- 597
- 598
- 599
- 600
- 601
- 602
- 603
- 604
- 605
- 606
- 607
- 608
- 609
- 610
- 611
- 612
- 613
- 614
- 615
- 616
- 617
- 618
- 619
- 620
- 621
- 622
- 623
- 624
- 625
- 626
- 627
- 628
- 629
- 630
- 631
- 632
- 633
- 634
- 635
- 636
- 637
- 638
- 639
- 640
- 641
- 642
- 643
- 644
- 645
- 646
- 647
- 648
- 649
- 650
- 651
- 652
- 653
- 654
- 655
- 656
- 657
- 658
- 659
- 660
- 661
- 662
- 663
- 664
- 665
- 666
- 667
- 668
- 669
- 670
- 671
- 672
- 673
- 674
- 675
- 676
- 677
- 678
- 679
- 680
- 681
- 682
- 683
- 684
- 685
- 686
- 687
- 688
- 689
- 690
- 691
- 692
- 693
- 694
- 695
- 696
- 697
- 698
- 699
- 700
- 701
- 702
- 703
- 704
- 705
- 706
- 707
- 708
- 709
- 710
- 711
- 712
- 713
- 714
- 715
- 716
- 717
- 718
- 719
- 720
- 721
- 722
- 723
- 724
- 725
- 726
- 727
- 728
- 729
- 730
- 731
- 732
- 733
- 734
- 735
- 736
- 737
- 738
- 739
- 740
- 741
- 742
- 743
- 744
- 745
- 746
- 747
- 748
- 749
- 750
- 751
- 752
- 753
- 754
- 755
- 756
- 757
- 758
- 759
- 760
- 761
- 762
- 763
- 764
- 765
- 766
- 767
- 768
- 769
- 770
- 771
- 772
- 773
- 774
- 775
- 776
- 777
- 778
- 779
- 780
- 781
- 782
- 783
- 784
- 785
- 786
- 787
- 788
- 789
- 790
- 791
- 792
- 793
- 794
- 795
- 796
- 797
- 798
- 799
- 800
- 801
- 802
- 803
- 804
- 805
- 806
- 807
- 808
- 809
- 810
- 811
- 812
- 813
- 814
- 815
- 816
- 817
- 818
- 819
- 820
- 821
- 822
- 823
- 824
- 825
- 826
- 827
- 828
- 829
- 830
- 831
- 832
- 833
- 834
- 835
- 836
- 837
- 838
- 839
- 840
- 841
- 842
- 843
- 844
- 845
- 846
- 847
- 848
- 849
- 850
- 851
- 852
- 853
- 854
- 855
- 856
- 857
- 858
- 859
- 860
- 861
- 862
- 863
- 864
- 865
- 866
- 867
- 868
- 869
- 870
- 871
- 872
- 873
- 874
- 875
- 876
- 877
- 878
- 879
- 880
- 881
- 882
- 883
- 884
- 885
- 886
- 887
- 888
- 889
- 890
- 891
- 892
- 893
- 894
- 895
- 896
- 897
- 898
- 899
- 900
- 901
- 902
- 903
- 904
- 905
- 906
- 907
- 908
- 909
- 910
- 911
- 912
- 913
- 914
- 915
- 916
- 917
- 918
- 919
- 920
- 921
- 922
- 923
- 924
- 925
- 926
- 927
- 928
- 929
- 930
- 931
- 932
- 933
- 934
- 935
- 936
- 937
- 938
- 939
- 940
- 941
- 942
- 943
- 944
- 945
- 946
- 947
- 948
- 949
- 950
- 951
- 952
- 953
- 954
- 955
- 956
- 957
- 958
- 959
- 960
- 961
- 962
- 963
- 964
- 965
- 966
- 967
- 968
- 969
- 970
- 971
- 972
- 973
- 974
- 975
- 976
- 977
- 978
- 979
- 980
- 981
- 982
- 983
- 984
- 985
- 986
- 987
- 988
- 989
- 990
- 991
- 992
- 993
- 994
- 995
- 996
- 997
- 998
- 999
- 1000
- 1001
- 1002
- 1003
- 1004
- 1005
- 1006
- 1007
- 1008
- 1009
- 1010
- 1011
- 1012
- 1013
- 1014
- 1015
- 1016
- 1017
- 1018
- 1019
- 1020
- 1021
- 1022
- 1023
- 1024
- 1025
- 1026
- 1027
- 1028
- 1029
- 1030
- 1031
- 1032
- 1033
- 1034
- 1035
- 1036
- 1037
- 1038
- 1039
- 1040
- 1041
- 1042
- 1043
- 1044
- 1045
- 1046
- 1047
- 1048
- 1049
- 1050
- 1051
- 1052
- 1053
- 1054
- 1055
- 1056
- 1057
- 1058
- 1059
- 1060
- 1061
- 1062
- 1063
- 1064
- 1065
- 1066
- 1067
- 1068
- 1069
- 1070
- 1071
- 1072
- 1073
- 1074
- 1075
- 1076
- 1077
- 1078
- 1079
- 1080
- 1081
- 1082
- 1083
- 1084
- 1085
- 1086
- 1087
- 1088
- 1089
- 1090
- 1091
- 1092
- 1093
- 1094
- 1095
- 1096
- 1097
- 1098
- 1099
- 1100
- 1101
- 1102
- 1103
- 1104
- 1105
- 1106
- 1107
- 1108
- 1109
- 1110
- 1111
- 1112
- 1113
- 1114
- 1115
- 1116
- 1117
- 1118
- 1119
- 1120
- 1121
- 1122
- 1123
- 1124
- 1125
- 1126
- 1127
- 1128
- 1129
- 1130
- 1131
- 1132
- 1133
- 1134
- 1135
- 1136
- 1137
- 1138
- 1139
- 1140
- 1141
- 1142
- 1143
- 1144
- 1145
- 1146
- 1147
- 1148
- 1149
- 1150
- 1151
- 1152
- 1153
- 1154
- 1155
- 1156
- 1157
- 1158
- 1159
- 1160
- 1161
- 1162
- 1163
- 1164
- 1165
- 1166
- 1167
- 1168
- 1169
- 1170
- 1171
- 1172
- 1173
- 1174
- 1175
- 1176
- 1177
- 1178
- 1179
- 1180
- 1181
- 1182
- 1183
- 1184
- 1185
- 1186
- 1187
- 1188
- 1189
- 1190
- 1191
- 1192
- 1193
- 1194
- 1195
- 1196
- 1197
- 1198
- 1199
- 1200
- 1201
- 1202
- 1203
- 1204
- 1205
- 1206
- 1207
- 1208
- 1209
- 1210
- 1211
- 1212
- 1213
- 1214
- 1215
- 1216
- 1217
- 1218
- 1219
- 1220
- 1221
- 1222
- 1223
- 1224
- 1225
- 1226
- 1227
- 1228
- 1229
- 1230
- 1231
- 1232
- 1233
- 1234
- 1235
- 1236
- 1237
- 1238
- 1239
- 1240
- 1241
- 1242
- 1243
- 1244
- 1245
- 1246
- 1247
- 1248
- 1249
- 1250
- 1251
- 1252
- 1253
- 1254
- 1255
- 1256
- 1257
- 1258
- 1259
- 1260
- 1261
- 1262
- 1263
- 1264
- 1265
- 1266
- 1267
- 1268
- 1269
- 1270
- 1271
- 1272
- 1273
- 1274
- 1275
- 1276
- 1277
- 1278
- 1279
- 1280
- 1281
- 1282
- 1283
- 1284
- 1285
- 1286
- 1287
- 1288
- 1289
- 1290
- 1291
- 1292
- 1293
- 1294
- 1295
- 1296
- 1297
- 1298
- 1299
- 1300
- 1301
- 1302
- 1303
- 1304
- 1305
- 1306
- 1307
- 1308
- 1309
- 1310
- 1311
- 1312
- 1313
- 1314
- 1315
- 1316
- 1317
- 1318
- 1319
- 1320
- 1321
- 1322
- 1323
- 1324
- 1325
- 1326
- 1327
- 1328
- 1329
- 1330
- 1331
- 1332
- 1333
- 1334
- 1335
- 1336
- 1337
- 1338
- 1339
- 1340
- 1341
- 1342
- 1343
- 1344
- 1345
- 1346
- 1347
- 1348
- 1349
- 1350
- 1351
- 1352
- 1353
- 1354
- 1355
- 1356
- 1357
- 1358
- 1359
- 1360
- 1361
- 1362
- 1363
- 1364
- 1365
- 1366
- 1367
- 1368
- 1369
- 1370
- 1371
- 1372
- 1373
- 1374
- 1375
- 1376
- 1377
- 1378
- 1379
- 1380
- 1381
- 1382
- 1383
- 1384
- 1385
- 1386
- 1387
- 1388
- 1389
- 1390
- 1391
- 1392
- 1393
- 1394
- 1395
- 1396
- 1397
- 1398
- 1399
- 1400
- 1401
- 1402
- 1403
- 1404
- 1405
- 1406
- 1407
- 1408
- 1409
- 1410
- 1411
- 1412
- 1413
- 1414
- 1415
- 1416
- 1417
- 1418
- 1419
- 1420
- 1421
- 1422
- 1423
- 1424
- 1425
- 1426
- 1427
- 1428
- 1429
- 1430
- 1431
- 1432
- 1433
- 1434
- 1435
- 1436
- 1437
- 1438
- 1439
- 1440
- 1441
- 1442
- 1443
- 1444
- 1445
- 1446
- 1447
- 1448
- 1449
- 1450
- 1451
- 1452
- 1453
- 1454
- 1455
- 1456
- 1457
- 1458
- 1459
- 1460
- 1461
- 1462
- 1463
- 1464
- 1465
- 1466
- 1467
- 1468
- 1469
- 1470
- 1471
- 1472
- 1473
- 1474
- 1475
- 1476
- 1477
- 1478
- 1479
- 1480
- 1481
- 1482
- 1483
- 1484
- 1485
- 1486
- 1487
- 1488
- 1489
- 1490
- 1491
- 1492
- 1493
- 1494
- 1495
- 1496
- 1497
- 1498
- 1499
- 1500
- 1501
- 1502
- 1503
- 1504
- 1505
- 1506
- 1507
- 1508
- 1509
- 1510
- 1511
- 1512
- 1513
- 1514
- 1515
- 1516
- 1517
- 1518
- 1519
- 1520
- 1521
- 1522
- 1523
- 1524
- 1525
- 1526
- 1527
- 1528
- 1529
- 1530
- 1531
- 1532
- 1533
- 1534
- 1535
- 1536
- 1537
- 1538
- 1539
- 1540
- 1541
- 1542
- 1543
- 1544
- 1545
- 1546
- 1547
- 1548
- 1549
- 1550
- 1551
- 1552
- 1553
- 1554
- 1555
- 1556
- 1557
- 1558
- 1559
- 1560
- 1561
- 1562
- 1563
- 1564
- 1565
- 1566
- 1567
- 1568
- 1569
- 1570
- 1571
- 1572
- 1573
- 1574
- 1575
- 1576
- 1577
- 1578
- 1579
- 1580
- 1581
- 1582
- 1583
- 1584
- 1585
- 1586
- 1587
- 1588
- 1589
- 1590
- 1591
- 1592
- 1593
- 1594
- 1595
- 1596
- 1597
- 1598
- 1599
- 1600
- 1601
- 1602
- 1603
- 1604
- 1605
- 1606
- 1607
- 1608
- 1609
- 1610
- 1611
- 1612
- 1613
- 1614
- 1615
- 1616
- 1617
- 1618
- 1619
- 1620
- 1621
- 1622
- 1623
- 1624
- 1625
- 1626
- 1627
- 1628
- 1629
- 1630
- 1631
- 1632
- 1633
- 1634
- 1635
- 1636
- 1637
- 1638
- 1639
- 1640
- 1641
- 1642
- 1643
- 1644
- 1645
- 1646
- 1647
- 1648
- 1649
- 1650
- 1651
- 1652
- 1653
- 1654
- 1655
- 1656
- 1657
- 1658
- 1659
- 1660
- 1661
- 1662
- 1663
- 1664
- 1665
- 1666
- 1667
- 1668
- 1669
- 1670
- 1671
- 1672
- 1673
- 1674
- 1675
- 1676
- 1677
- 1678
- 1679
- 1680
- 1681
- 1682
- 1683
- 1684
- 1685
- 1686
- 1687
- 1688
- 1689
- 1690
- 1691
- 1692
- 1693
- 1694
- 1695
- 1696
- 1697
- 1698
- 1699
- 1700
- 1701
- 1702
- 1703
- 1704
- 1705
- 1706
- 1707
- 1708
- 1709
- 1710
- 1711
- 1712
- 1713
- 1714
- 1715
- 1716
- 1717
- 1718
- 1719
- 1720
- 1721
- 1722
- 1723
- 1724
- 1725
- 1726
- 1727
- 1728
- 1729
- 1730
- 1731
- 1732
- 1733
- 1734
- 1735
- 1736
- 1737
- 1738
- 1739
- 1740
- 1741
- 1742
- 1743
- 1744
- 1745
- 1746
- 1747
- 1748
- 1749
- 1750
- 1751
- 1752
- 1753
- 1754
- 1755
- 1756
- 1757
- 1758
- 1759
- 1760
- 1761
- 1762
- 1763
- 1764
- 1765
- 1766
- 1767
- 1768
- 1769
- 1770
- 1771
- 1772
- 1773
- 1774
- 1775
- 1776
- 1777
- 1778
- 1779
- 1780
- 1781
- 1782
- 1783
- 1784
- 1785
- 1786
- 1787
- 1788
- 1789
- 1790
- 1791
- 1792
- 1793
- 1794
- 1795
- 1796
- 1797
- 1798
- 1799
- 1800
- 1801
- 1802
- 1803
- 1804
- 1805
- 1806
- 1807
- 1808
- 1809
- 1810
- 1811
- 1812
- 1813
- 1814
- 1815
- 1816
- 1817
- 1818
- 1819
- 1820
- 1821
- 1822
- 1823
- 1824
- 1825
- 1826
- 1827
- 1828
- 1829
- 1830
- 1831
- 1832
- 1833
- 1834
- 1835
- 1836
- 1837
- 1838
- 1839
- 1840
- 1841
- 1842
- 1843
- 1844
- 1845
- 1846
- 1847
- 1848
- 1849
- 1850
- 1851
- 1852
- 1853
- 1854
- 1855
- 1856
- 1857
- 1858
- 1859
- 1860
- 1861
- 1862
- 1863
- 1864
- 1865
- 1866
- 1867
- 1868
- 1869
- 1870
- 1871
- 1872
- 1873
- 1874
- 1875
- 1876
- 1877
- 1878
- 1879
- 1880
- 1881
- 1882
- 1883
- 1884
- 1885
- 1886
- 1887
- 1888
- 1889
- 1890
- 1891
- 1892
- 1893
- 1894
- 1895
- 1896
- 1897
- 1898
- 1899
- 1900
- 1901
- 1902
- 1903
- 1904
- 1905
- 1906
- 1907
- 1908
- 1909
- 1910
- 1911
- 1912
- 1913
- 1914
- 1915
- 1916
- 1917
- 1918
- 1919
- 1920
- 1921
- 1922
- 1923
- 1924
- 1925
- 1926
- 1927
- 1928
- 1929
- 1930
- 1931
- 1932
- 1933
- 1934
- 1935
- 1936
- 1937
- 1938
- 1939
- 1940
- 1941
- 1942
- 1943
- 1944
- 1945
- 1946
- 1947
- 1948
- 1949
- 1950
- 1951
- 1952
- 1953
- 1954
- 1955
- 1956
- 1957
- 1958
- 1959
- 1960
- 1961
- 1962
- 1963
- 1964
- 1965
- 1966
- 1967
- 1968
- 1969
- 1970
- 1971
- 1972
- 1973
- 1974
- 1975
- 1976
- 1977
- 1978
- 1979
- 1980
- 1981
- 1982
- 1983
- 1984
- 1985
- 1986
- 1987
- 1988
- 1989
- 1990
- 1991
- 1992
- 1993
- 1994
- 1995
- 1996
- 1997
- 1998
- 1999
- 2000
- 2001
- 2002
- 2003
- 2004
- 2005
- 2006
- 2007
- 2008
- 2009
- 2010
- 2011
- 2012
- 2013
- 2014
- 2015
- 2016
- 2017
- 2018
- 2019
- 2020
- 2021
- 2022
- 2023
- 2024
- 2025
- 2026
- 2027
- 2028
- 2029
- 2030
- 2031
- 2032
- 2033
- 2034
- 2035
- 2036
- 2037
- 2038
- 2039
- 2040
- 2041
- 2042
- 2043
- 2044
- 2045
- 2046
- 2047
- 2048
- 2049
- 2050
- 2051
- 2052
- 2053
- 2054
- 2055
- 2056
- 2057
- ...
- 2058
- 2059
- 2060
- 2061
- 2062
- 2063
- 2064
- 2065
- 2066
- 2067
- 2068
- 2069
- 2070
- 2071
- 2072
- 2073
- 2074
- 2075
- 2076
- 2077
- 2078
- 2079
- 2080
- 2081
- 2082
- 2083
- 2084
- 2085
- 2086
- 2087
- 2088
- 2089
- 2090
- 2091
- 2092
- 2093
- 2094
- 2095
- 2096
- 2097
- 2098
- 2099
- 2100
- 2101
- 2102
- 2103
- 2104
- 2105
- 2106
- 2107
- 2108
- 2109
- 2110
- 2111
- 2112
- 2113
- 2114
- 2115
- 2116
- 2117
- 2118
- 2119
- 2120
- 2121
- 2122
- 2123
- 2124
- 2125
- 2126
- 2127
- 2128
- 2129
- 2130
- 2131
- 2132
- 2133
- 2134
- 2135
- 2136
- 2137
- 2138
- 2139
- 2140
- 2141
- 2142
- 2143
- 2144
- 2145
- 2146
- 2147
- 2148
- 2149
- 2150
- 2151
- 2152
- 2153
- 2154
- 2155
- 2156
- 2157
- 2158
- 2159
- 2160
- 2161
- 2162
- 2163
- 2164
- 2165
- 2166
- 2167
- 2168
- 2169
- 2170
- 2171
- 2172
- 2173
- 2174
- 2175
- 2176
- 2177
- 2178
- 2179
- 2180
- 2181
- 2182
- 2183
- 2184
- 2185
- 2186
- 2187
- 2188
- 2189
- 2190
- 2191
- 2192
- 2193
- 2194
- 2195
- 2196
- 2197
- 2198
- 2199
- 2200
- 2201
- 2202
- 2203
- 2204
- 2205
- 2206
- 2207
- 2208
- 2209
- 2210
- 2211
- 2212
- 2213
- 2214
- 2215
- 2216
- 2217
- 2218
- 2219
- 2220
- 2221
- 2222
- 2223
- 2224
- 2225
- 2226
- 2227
- 2228
- 2229
- 2230
- 2231
- 2232
- 2233
- 2234
- 2235
- 2236
- 2237
- 2238
- 2239
- 2240
- 2241
- 2242
- 2243
- 2244
- 2245
- 2246
- 2247
- 2248
- 2249
- 2250
- 2251
- 2252
- 2253
- 2254
- 2255
- 2256
- 2257
- 2258
- 2259
- 2260
- 2261
- 2262
- 2263
- 2264
- 2265
- 2266
- 2267
- 2268
- 2269
- 2270
- 2271
- 2272
- 2273
- 2274
- 2275
- 2276
- 2277
- 2278
- 2279
- 2280
- 2281
- 2282
- 2283
- 2284
- 2285
- 2286
- 2287
- 2288
- 2289
- 2290
- 2291
- 2292
- 2293
- 2294
- 2295
- 2296
- 2297
- 2298
- 2299
- 2300
- 2301
- 2302
- 2303
- 2304
- 2305
- 2306
- 2307
- 2308
- 2309
- 2310
- 2311
- 2312
- 2313
- 2314
- 2315
- 2316
- 2317
- 2318
- 2319
- 2320
- 2321
- 2322
- 2323
- 2324
- 2325
- 2326
- 2327
- 2328
- 2329
- 2330
- 2331
- 2332
- 2333
- 2334
- 2335
- 2336
- 2337
- 2338
- 2339
- 2340
- 2341
- 2342
- 2343
- 2344
- 2345
- 2346
- 2347
- 2348
- 2349
- 2350
- 2351
- 2352
- 2353
- 2354
- 2355
- 2356
- 2357
- 2358
- 2359
- 2360
- 2361
- 2362
- 2363
- 2364
- 2365
- 2366
- 2367
- 2368
- 2369
- 2370
- 2371
- 2372
- 2373
- 2374
- 2375
- 2376
- 2377
- 2378
- 2379
- 2380
- 2381
- 2382
- 2383
- 2384
- 2385
- 2386
- 2387
- 2388
- 2389
- 2390
- 2391
- 2392
- 2393
- 2394
- 2395
- 2396
- 2397
- 2398
- 2399
- 2400
- 2401
- 2402
- 2403
- 2404
- 2405
- 2406
- 2407
- 2408
- 2409
- 2410
- 2411
- 2412
- 2413
- 2414
- 2415
- 2416
- 2417
- 2418
- 2419
- 2420
- 2421
- 2422
- 2423
- 2424
- 2425
- 2426
- 2427
- 2428
- 2429
- 2430
- 2431
- 2432
- 2433
- 2434
- 2435
- 2436
- 2437
- 2438
- 2439
- 2440
- 2441
- 2442
- 2443
- 2444
- 2445
- 2446
- 2447
- 2448
- 2449
- 2450
- 2451
- 2452
- 2453
- 2454
- 2455
- 2456
- 2457
- 2458
- 2459
- 2460
- 2461
- 2462
- 2463
- 2464
- 2465
- 2466
- 2467
- 2468
- 2469
- 2470
- 2471
- 2472
- 2473
- 2474
- 2475
- 2476
- 2477
- 2478
- 2479
- 2480
- 2481
- 2482
- 2483
- 2484
- 2485
- 2486
- 2487
- 2488
- 2489
- 2490
- 2491
- 2492
- 2493
- 2494
- 2495
- 2496
- 2497
- 2498
- 2499
- 2500
- 2501
- 2502
- 2503
- 2504
- 2505
- 2506
- 2507
- 2508
- 2509
- 2510
- 2511
- 2512
- 2513
- 2514
- 2515
- 2516
- 2517
- 2518
- 2519
- 2520
- 2521
- 2522
- 2523
- 2524
- 2525
- 2526
- 2527
- 2528
- 2529
- 2530
- 2531
- 2532
- 2533
- 2534
- 2535
- 2536
- 2537
- 2538
- 2539
- 2540
- 2541
- 2542
- 2543
- 2544
- 2545
- 2546
- 2547
- 2548
- 2549
- 2550
- 2551
- 2552
- 2553
- 2554
- 2555
- 2556
- 2557
- 2558
- 2559
- 2560
- 2561
- 2562
- 2563
- 2564
- 2565
- 2566
- 2567
- 2568
- 2569
- 2570
- 2571
- 2572
- 2573
- 2574
- 2575
- 2576
- 2577
- 2578
- 2579
- 2580
- 2581
- 2582
- 2583
- 2584
- 2585
- 2586
- 2587
- 2588
- 2589
- 2590
- 2591
- 2592
- 2593
- 2594
- 2595
- 2596
- 2597
- 2598
- 2599
- 2600
- 2601
- 2602
- 2603
- 2604
- 2605
- 2606
- 2607
- 2608
- 2609
- 2610
- 2611
- 2612
- 2613
- 2614
- 2615
- 2616
- 2617
- 2618
- 2619
- 2620
- 2621
- 2622
- 2623
- 2624
- 2625
- 2626
- 2627
- 2628
- 2629
- 2630
- 2631
- 2632
- 2633
- 2634
- 2635
- 2636
- 2637
- 2638
- 2639
- 2640
- 2641
- 2642
- 2643
- 2644
- 2645
- 2646
- 2647
- 2648
- 2649
- 2650
- 2651
- 2652
- 2653
- 2654
- 2655
- 2656
- 2657
- 2658
- 2659
- 2660
- 2661
- 2662
- 2663
- 2664
- 2665
- 2666
- 2667
- 2668
- 2669
- 2670
- 2671
- 2672
- 2673
- 2674
- 2675
- 2676
- 2677
- 2678
- 2679
- 2680
- 2681
- 2682
- 2683
- 2684
- 2685
- 2686
- 2687
- 2688
- 2689
- 2690
- 2691
- 2692
- 2693
- 2694
- 2695
- 2696
- 2697
- 2698
- 2699
- 2700
- 2701
- 2702
- 2703
- 2704
- 2705
- 2706
- 2707
- 2708
- 2709
- 2710
- 2711
- 2712
- 2713
- 2714
- 2715
- 2716
- 2717
- 2718
- 2719
- 2720
- 2721
- 2722
- 2723
- 2724
- 2725
- 2726
- 2727
- 2728
- 2729
- 2730
- 2731
- 2732
- 2733
- 2734
- 2735
- 2736
- 2737
- 2738
- 2739
- 2740
- 2741
- 2742
- 2743
- 2744
- 2745
- 2746
- 2747
- 2748
- 2749
- 2750
- 2751
- 2752
- 2753
- 2754
- 2755
- 2756
- 2757
- 2758
- 2759
- 2760
- 2761
- 2762
- 2763
- 2764
- 2765
- 2766
- 2767
- 2768
- 2769
- 2770
- 2771
- 2772
- 2773
- 2774
- 2775
- 2776
- 2777
- 2778
- 2779
- 2780
- 2781
- 2782
- 2783
- 2784
- 2785
- 2786
- 2787
- 2788
- 2789
- 2790
- 2791
- 2792
- 2793
- 2794
- 2795
- 2796
- 2797
- 2798
- 2799
- 2800
- 2801
- 2802
- 2803
- 2804
- 2805
- 2806
- 2807
- 2808
- 2809
- 2810
- 2811
- 2812
- 2813
- 2814
- 2815
- 2816
- 2817
- 2818
- 2819
- 2820
- 2821
- 2822
- 2823
- 2824
- 2825
- 2826
- 2827
- 2828
- 2829
- 2830
- 2831
- 2832
- 2833
- 2834
- 2835
- 2836
- 2837
- 2838
- 2839
- 2840
- 2841
- 2842
- 2843
- 2844
- 2845
- 2846
- 2847
- 2848
- 2849
- 2850
- 2851
- 2852
- 2853
- 2854
- 2855
- 2856
- 2857
- 2858
- 2859
- 2860
- 2861
- 2862
- 2863
- 2864
- 2865
- 2866
- 2867
- 2868
- 2869
- 2870
- 2871
- 2872
- 2873
- 2874
- 2875
- 2876
- 2877
- 2878
- 2879
- 2880
- 2881
- 2882
- 2883
- 2884
- 2885
- 2886
- 2887
- 2888
- 2889
- 2890
- 2891
- 2892
- 2893
- 2894
- 2895
- 2896
- 2897
- 2898
- 2899
- 2900
- 2901
- 2902
- 2903
- 2904
- 2905
- 2906
- 2907
- 2908
- 2909
- 2910
- 2911
- 2912
- 2913
- 2914
- 2915
- 2916
- 2917
- 2918
- 2919
- 2920
- 2921
- 2922
- 2923
- 2924
- 2925
- 2926
- 2927
- 2928
- 2929
- 2930
- 2931
- 2932
- 2933
- 2934
- 2935
- 2936
- 2937
- 2938
- 2939
- 2940
- 2941
- 2942
- 2943
- 2944
- 2945
- 2946
- 2947
- 2948
- 2949
- 2950
- 2951
- 2952
- 2953
- 2954
- 2955
- 2956
- 2957
- 2958
- 2959
- 2960
- 2961
- 2962
- 2963
- 2964
- 2965
- 2966
- 2967
- 2968
- 2969
- 2970
- 2971
- 2972
- 2973
- 2974
- 2975
- 2976
- 2977
- 2978
- 2979
- 2980
- 2981
- 2982
- 2983
- 2984
- 2985
- 2986
- 2987
- 2988
- 2989
- 2990
- 2991
- 2992
- 2993
- 2994
- 2995
- 2996
- 2997
- 2998
- 2999
- 3000
- 3001
- 3002
- 3003
- 3004
- 3005
- 3006
- 3007
- 3008
- 3009
- 3010
- 3011
- 3012
- 3013
- 3014
- 3015
- 3016
- 3017
- 3018
- 3019
- 3020
- 3021
- 3022
- 3023
- 3024
- 3025
- 3026
- 3027
- 3028
- 3029
- 3030
- 3031
- 3032
- 3033
- 3034
- 3035
- 3036
- 3037
- 3038
- 3039
- 3040
- 3041
- 3042
- 3043
- 3044
- 3045
- 3046
- 3047
- 3048
- 3049
- 3050
- 3051
- 3052
- 3053
- 3054
- 3055
- 3056
- 3057
- 3058
- 3059
- 3060
- 3061
- 3062
- 3063
- 3064
- 3065
- 3066
- 3067
- 3068
- 3069
- 3070
- 3071
- 3072
- 3073
- 3074
- 3075
- 3076
- 3077
- 3078
- 3079
- 3080
- 3081
- 3082
- 3083
- 3084
- 3085
- 3086
- 3087
- 3088
- 3089
- 3090
- 3091
- 3092
- 3093
- 3094
- 3095
- 3096
- 3097
- 3098
- 3099
- 3100
- 3101
- 3102
- 3103
- 3104
- 3105
- 3106
- 3107
- 3108
- 3109
- 3110
- 3111
- 3112
- 3113
- 3114
- 3115
- 3116
- 3117
- 3118
- 3119
- 3120
- 3121
- 3122
- 3123
- 3124
- 3125
- 3126
- 3127
- 3128
- 3129
- 3130
- 3131
- 3132
- 3133
- 3134
- 3135
- 3136
- 3137
- 3138
- 3139
- 3140
- 3141
- 3142
- 3143
- 3144
- 3145
- 3146
- 3147
- 3148
- 3149
- 3150
- 3151
- 3152
- 3153
- 3154
- 3155
- 3156
- 3157
- 3158
- 3159
- 3160
- 3161
- 3162
- 3163
- 3164
- 3165
- 3166
- 3167
- 3168
- 3169
- 3170
- 3171
- 3172
- 3173
- 3174
- 3175
- 3176
- 3177
- 3178
- 3179
- 3180
- 3181
- 3182
- 3183
- 3184
- 3185
- 3186
- 3187
- 3188
- 3189
- 3190
- 3191
- 3192
- 3193
- 3194
- 3195
- 3196
- 3197
- 3198
- 3199
- 3200
- 3201
- 3202
- 3203
- 3204
- 3205
- 3206
- 3207
- 3208
- 3209
- 3210
- 3211
- 3212
- 3213
- 3214
- 3215
- 3216
- 3217
- 3218
- 3219
- 3220
- 3221
- 3222
- 3223
- 3224
- 3225
- 3226
- 3227
- 3228
- 3229
- 3230
- 3231
- 3232
- 3233
- 3234
- 3235
- 3236
- 3237
- 3238
- 3239
- 3240
- 3241
- 3242
- 3243
- 3244
- 3245
- 3246
- 3247
- 3248
- 3249
- 3250
- 3251
- 3252
- 3253
- 3254
- 3255
- 3256
- 3257
- 3258
- 3259
- 3260
- 3261
- 3262
- 3263
- 3264
- 3265
- 3266
- 3267
- 3268
- 3269
- 3270
- 3271
- 3272
- 3273
- 3274
- 3275
- 3276
- 3277
- 3278
- 3279
- 3280
- 3281
- 3282
- 3283
- 3284
- 3285
- 3286
- 3287
- 3288
- 3289
- 3290
- 3291
- 3292
- 3293
- 3294
- 3295
- 3296
- 3297
- 3298
- 3299
- 3300
- 3301
- 3302
- 3303
- 3304
- 3305
- 3306
- 3307
- 3308
- 3309
- 3310
- 3310
推荐文章