云服务器内容精选

  • 接口示例 请求示例 示例1 POST /rest/httpsessions/callnotify/v2.0 HTTP/1.1 content-type: application/json;charset=UTF-8 authorization: AKSK realm="SDP",profile="UsernameToken",type="Appkey" x-aksk: UsernameToken Username="ZRBRz4bAXoFgEH7o4Ew308eXc1RA",PasswordDigest="****",Nonce="ac1c911c4792492687f8f6b2264a491e",Created="2018-05-26T00:35:30Z" content-length:xx { "displayNbr":"+86186****5611", "calleeNbr":"+8675581****01", "playInfoList":[{"notifyVoice":"welcome.wav"},{"notifyVoice":"welcome.wav","collectInd":4}], "statusUrl":"****", "feeUrl":"****", "userData":"testUserData" } 示例2 语音通话平台上设置的模板ID=test_template,模板内容为“您有${NUM_2}件快递请到${TXT_32}领取”。 下面的API将播放文本“您有3件快递请到人民公园正门领取”。 POST /rest/httpsessions/callnotify/v2.0?app_key=z4Sdu8p7nml5Wd790aENW64oV5Fp HTTP/1.1 content-type: application/json;charset=UTF-8 authorization: AKSK realm="SDP",profile="UsernameToken",type="Appkey" x-aksk: UsernameToken Username="ZRBRz4bAXoFgEH7o4Ew308eXc1RA",PasswordDigest="****",Nonce="ac1c911c4792492687f8f6b2264a491e",Created="2018-05-26T00:35:30Z" content-length:xx { "displayNbr":"+86186****5611", "calleeNbr":"+8675581****01", "playInfoList":[{"templateId":"test_template", "templateParas":["3","人民公园正门"],"collectInd":5}], "statusUrl":"****", "feeUrl":"****", "userData":"testUserData" } 响应示例 HTTP/1.1 200 OK Content-Type: application/json;charset=UTF-8 { "resultcode":"0", "resultdesc":"Success", "sessionId":"1200_366_0_20161228102743@callenabler.home1.com" }
  • 结果码 请根据以下结果码进行调测,如果有疑问,可联系管理员进行确认。 表8 结果码说明 响应码 结果码 英文描述 中文描述 处理方法 200 0 Success. 成功。 无需处理。 400 1023006 Authorization not contained in the HTTP header. Authentication fails. Check whether the authentication request is correct. 鉴权失败,请检查鉴权请求正确性。 请检查消息头中是否携带了Authorization,PasswordDigest字段填写是否正确,携带的app_key填写是否正确,且生成随机数的时间与发送请求时的本地时间不能相差太大。 请检查账户余额是否充足,若不足请充值后再次尝试。如何给账户充值 1023007 realm not contained in Authorization. Authorization字段中未找到realm属性。 请检查Authorization字段中的是否携带了realm属性。 1023008 profile not contained in Authorization. Authorization字段中未找到profile属性。 请检查Authorization字段中的是否携带了profile属性。 1023009 The value of realm in Authorization must be SDP. Authorization中realm属性值应该为“SDP”。 请检查Authorization字段中的realm属性值是否为“SDP”。 1023010 The value of profile in Authorization must be UsernameToken. Authorization中profile属性值应该为“UsernameToken”。 请检查Authorization字段中的profile属性值是否为“UsernameToken”。 1023011 The value of type in Authorization must be app_key. Authorization中type属性值应该为“Appkey”。 请检查Authorization字段中的type属性值是否为“Appkey”。 1023012 type not contained in Authorization. Authorization字段中未找到type属性。 请检查Authorization字段中是否携带了type属性。 1023033 HTTP header not found X-AKSK field. HTTP头未找到X-AKSK字段。 请检查HTTP消息头中是否携带了X-AKSK字段。 1023034 UserName not contained in X-AKSK. X-AKSK字段中未找到UserName属性。 请检查X-AKSK字段中的是否携带了Username属性。 1023035 Nonce not contained in X-AKSK. X-AKSK字段中未找到Nonce属性。 请检查X-AKSK字段中的是否携带了Nonce属性。 1023036 Created not contained in X-AKSK. X-AKSK字段中未找到Created属性。 请检查X-AKSK字段中的是否携带了Created属性。 1023037 PasswordDigest not contained in X-AKSK. X-AKSK字段中未找到PasswordDigest属性。 请检查X-AKSK字段中的是否携带了PasswordDigest属性。 1023038 UsernameToken not contained in X-AKSK. X-AKSK中没有携带UsernameToken。 请检查X-AKSK字段中的是否携带了UsernameToken属性。 401 1010010 Invalid digest. PasswordDigest校验失败。 请检查PasswordDigest字段填写是否正确。 1010013 Time out limit. 时间超出限制。 请确认X-AKSK鉴权时,生成随机数的时间与发送请求时的本地时间不能相差太大(具体差值请与管理员确认) 403 1010002 Invalid request. 非法请求。 检查请求携带的参数格式是否都合法。 1010003 Invalid app_key. 无效的app_key。 检查请求携带的app_key是否填写正确,app_key从应用管理页面获取,若填写正确,请在应用管理页面检查请求携带的app_key所属应用状态是否正常。 1010006 Invalid Rest API. 无效的Rest API。 检查请求方法填写是否正确。 1010008 The status of the app_key is unavailable. app_key被暂停使用。 请在应用管理页面检查请求携带的app_key所属应用状态是否正常。 1010009 No more APIs can be invoked. API达到调用上限。 请稍等一分钟后再试,并联系管理员申请更高的应用使用配额。 1010010 The flow control upper limit is reached on the platform. 平台达到系统流控上限。 请稍等一分钟后再试。 1010011 The app is not allowed to access a commercial address. APP没有访问商用地址的权限。 请在应用管理页面检查请求携带的app_key所属应用状态是否正常。 1010021 Application unavailable. 应用不可用。 请在应用管理页面检查请求携带的app_key所属应用状态是否正常。 1010023 Invalid display number. 号码填写不合法。 检查displayNbr和displayCalleeNbr参数的填写是否合法,与号码管理页面的“固话号码”保持一致。若合法,请确认该号码是否已申请并下发。申请号码在号码订购页面申请,号码下发后可在号码管理页面查看。 1010024 Invalid caller number. 主叫号码不合法。 检查callerNbr参数的填写是否合法。 1010040 The app_key is not allowed to invoke the API. app_key没有调用本API的权限。 请联系管理员确认该app_key对应的应用是否具有语音通知能力。 1012001 Resource of number is not to be applied. 资源未申请。 app_key和业务号码未绑定。 1012005 %s of templateParas does not meet template requirements. 参数templateParas中的%s不符合模板定义的要求。 请检查templateParas携带的变量值格式与长度是否符合templateId对应的模板内容中变量的定义。 1012006 The service number is not applied. 业务号码未申请。 请确认是否申请业务号码。 1012012 Application does not open recording function. 应用未开启录音功能。 请在应用管理页面确认请求携带的app_key是否开启了录音功能。 1013001 Calls exceed the SP limit. 请求次数超过SP配置上限。 请和管理员确认开发者呼叫数量限制。 1013002 Calls exceed the APP limit. 请求次数超过应用配置上限。 请和管理员确认应用呼叫数量限制。 1013003 Calls exceed the display number limit. SP的主显号码受限。 请和管理员确认显示号码呼叫数量限制。 1013004 Callee in blacklist. 被叫用户是黑名单。 被叫号码在运营商黑名单库。 1013010 Caller in blacklist. 主叫用户是黑名单。 主叫号码在运营商黑名单库。 1013011 Callee is not on the whitelist. 被叫用户不在白名单中。 请和管理员确认被叫号码白名单限制。 1013100 Common error code . 未知错误。 请和管理员确认安全管控限制。 1013101 Abnormal call restricted . 呼叫行为异常。 请和管理员确认安全管控限制。 1013111 International callin is forbidden. 国际呼入限制。 请检查请求的号码格式是否为国际号码格式。 1013112 International callout is forbidden. 国际呼出限制。 请检查请求的号码格式是否为国际号码格式。 1013113 Abnormal call duration restricted. 通话时间异常。 请检查请求的号码是否通话时间异常。 1013115 Abnormal call completion rate restricted. 呼叫接通率异常。 请检查请求的号码是否呼叫接通率异常。 1013116 Caller call frequency restricted. 主叫呼叫频次限制。 请检查主叫号码是否有呼叫频次限制。 1013117 Callee call frequency restricted. 被叫呼叫频次限制。 请检查被叫号码是否有呼叫频次限制。 1013118 Service number call frequency restricted. 业务号码呼叫频次限制。 请检查业务号码是否有呼叫频次限制。 1013119 Service number suspend. 业务号码被暂停。 请和管理员确认号码状态。 1013120 Ip address is null. IPv4地址未携带。 请客户接口携带请求发送方IPv4地址。 1013121 Call black time forbidden. 呼叫时段限制。 呼叫时段为休息时段,请工作时段再呼叫。 1013122 Sub enterprise is suspended. 子企业已被暂停。 查看是否因投诉被下线,可查看订购号码时填写的邮箱是否有业务下线通知邮件。 1020165 The number of app_key voice call ports exceeds the upper limit. 超出语音呼叫端口数限制。 请稍等一分钟后再试。建议联系管理员为该应用申请更多的端口配额。 1020166 The app client ip is not in ip white list. 请求发送方app IP不在白名单列表中。 运营商IP地域管控,此地区无法呼通。 1020168 The call is rejected because the login IP of the peer app is blacklisted . 请求发送方app登录IP是黑名单。 运营商IP地域管控,此地区无法呼通。 1020171 The call is rejected because the login IP of the peer app is blacklisted area. 请求发送方app登录IP在受限地域。 运营商IP地域管控,此地区无法呼通。 1020176 Authentication failed, try again later 鉴权失败,稍后重试。 IP因鉴权失败次数过多导致被拉黑,请30分钟后重试,或联系管理员放通该IP。 500 1010001 Internal system error. 系统错误。 请联系管理员处理。 1020001 Parameter error. 参数错误。 检查请求携带的参数格式是否都合法。 1020002 Internal error. 内部错误。 请联系管理员处理。 1020150 The app_key is invalid. app_key无效。 检查请求携带的app_key是否填写正确,app_key从应用管理页面获取,若填写正确,请在应用管理页面检查请求携带的app_key所属应用状态是否正常。 1020151 The bindNum is invalid. 业务号码无效。 业务号码无效,请联系管理员处理。 1020154 Insufficient voice ports. 语音端口不足。 请稍等一分钟后再试,并联系管理员申请扩容语音端口。 1023001 Internal error. 内部错误。 请联系管理员处理。 1023002 Response timeout. 响应超时。 重新发送一次请求。
  • 响应参数 表7 响应消息参数说明 参数名称 是否必选 参数类型 默认值 说明 resultcode 是 String(1-32) 无 请求返回的结果码。 resultdesc 是 String(1-128) 无 请求返回的结果描述。 sessionId 是 String(1-256) 无 请求返回的会话sessionId,如果请求失败,则sessionId为空。 idlePort 否 Integer 无 请求参数中returnIdlePort为true时响应消息携带该参数。 该参数表示平台呼叫端口空闲可用数量,取值范围0~65535。
  • 接口功能 语音通知是SP将被叫号码和语音通知文件名(语音文件需要提前通过放音文件管理页面上传)或语音通知文本(通过语音模板管理页面提交)发送给业务平台,由业务平台呼叫被叫,被叫接听后业务平台向被叫播放语音,并进行收号。SP可以要求业务平台播放多段语音,每段语音的内容都可以是下列两种语音中的一种: 语音文件中录制的语音。 文本(需要先通过模板定义)通过 TTS 服务转换成的语音。 业务体验描述: SP想要给用户A通知一段或多段语音。 SP向语音通话平台发送播放语音通知业务请求。 语音通话平台呼叫用户A的号码。 用户A接听。 语音通话平台向用户A播放语音。
  • 请求参数 表2 请求URL参数说明 参数名称 是否必选 参数类型 默认值 说明 version 是 String(枚举) 无 版本,取值为v2.0。 表3 请求Headers参数说明 参数名称 是否必选 参数类型 说明 Content-Type 是 String 固定填写为application/json;charset=UTF-8。 Authorization 是 String 固定填写为AKSK realm="SDP",profile="UsernameToken",type="Appkey"。 X-AKSK 是 String 取值为UsernameToken Username="APP_Key的值", PasswordDigest="PasswordDigest的值", Nonce="随机数", Created="随机数生成时间"。 PasswordDigest:根据PasswordDigest = Base64 (HMAC-SHA256 (Password,Nonce + Created))生成。其中,Password为APP_Secret的值。Nonce、Created、Password直接进行字符串拼接即可,无需包含+号和空格。 Nonce:客户发送请求时生成的一个随机数,长度为1~128位,可包含数字和大小写字母。例如:66C92B11FF8A425FB8D4CCFE0ED9ED1F。 Created:随机数生成时间。采用标准UTC格式,例如:2018-02-12T15:30:20Z。不同编程语言中将UTC时间戳转换为普通时间时使用的格式不同,部分语言可参考表4。 表4 不同编程语言的时间格式 编程语言 时间格式 Java yyyy-MM-dd'T'HH:mm:ss'Z' PHP Y-m-d\TH:i:s\Z Python %Y-%m-%dT%H:%M:%SZ C# yyyy-MM-ddTHH:mm:ssZ Node.js toISOString().replace(/.[0-9]+\Z/, 'Z') 注:Node.js中,使用toISOString()转换后的时间格式去除毫秒后即为本接口要求的时间格式。 表5 请求Body参数说明 参数名称 是否必选 参数类型 默认值 说明 displayNbr 是 String(4-31) 无 固话号码,被叫终端上显示的主叫号码,需要提前在订购号码页面申请该号码。 号码格式(固话):国家码+区号+固话,与号码管理页面的“固话号码”保持一致。 若该号码为“暂停”状态,语音通话平台会从该应用下随机选取一个其他可用的固话号码进行外呼。 calleeNbr 是 String(4-31) 无 被叫号码。 手机号码格式:+{国家码}{手机号码}。示例:+86134****2222。 固话格式:+{国家码}{区号}{固话号码},其中区号需去掉首位的0。示例:国家码86,区号0755,固话号码28****01,填写为+8675528****01。 playInfoList 是 PlayContentInfo[1-5] 无 播放信息列表,最大支持5个,每个播放信息携带的参数都可以不相同。 statusUrl 否 String(1-128) 无 此参数请采用BASE64编码进行加密。 此字段用于设置SP接收状态上报的URL。 语音通话平台将业务触发过程中通话的状态信息(包括呼出、振铃、摘机和挂机信息)推送至此服务器,SP根据通话状态信息确定用户状态。 URL可填写为http://IP:Port或 域名 ,推荐使用域名,支持http和https。且该域名对应多个服务器,避免单点故障无法接收通知。 URL只能由大小写字母(a-z、A-Z),数字(0-9),中划线(-),英文冒号(:),英文点号(.),以及英文斜杠(/)组成,不支持其它字符。 feeUrl 否 String(1-128) 无 此参数请采用BASE64编码进行加密。 此参数用于设置SP接收话单上报的URL。 语音通话平台将业务产生的话单推送至此服务器。 URL可填写为http://IP:Port或域名,推荐使用域名,支持http和https。且该域名对应多个服务器,避免单点故障无法接收话单。 URL只能由大小写字母(a-z、A-Z),数字(0-9),中划线(-),英文冒号(:),英文点号(.),以及英文斜杠(/)组成,不支持其它字符。 returnIdlePort 否 String(枚举) false 指示是否需要返回平台的空闲端口数量。 true:需要返回 false:不需要返回 如果不携带该参数,系统默认该参数为false。 userData 否 String(1-256) 无 用户附属信息,此标识由第三方服务器定义,会在后续的通知消息中携带此信息。 不允许携带以下字符:“{”,“}”(即大括号)。 不允许包含中文字符,如果包含中文字符请采用Base64编码。 表6 PlayContentInfo定义 参数名称 是否必选 参数类型 默认值 说明 notifyVoice 否 String(1-128) 无 通知语音的放音文件名。需要先通过放音文件管理页面上传放音文件并通过审核才能使用。 当前系统只支持Wave格式的音频文件,文件如“notifyvoice.wav”。 该参数和templateId是二选一的关系,即两个参数必须携带其中一个。 templateId 否 String(1-32) 无 语音通知模板ID,用于唯一标识语音通知模板。语音通知模板为TTS文本的模板,需要先通过语音模板管理页面提交模板并通过审核才能使用,并获取对应的模板ID。 该参数和notifyVoice是二选一的关系。需要与templateParas参数配合使用。 templateParas 否 String(1-32)[1-10] 无 语音通知模板的变量值列表,用于依次填充templateId参数指定的模板内容中的变量。 该参数需填写为JSONArray格式。具体可参考变量规则。 参数内容必须是“UTF-8”编码,不能包含以下3个字符:“$”,“{”,“}”。 当接口中携带“templateId”参数时,必须携带此参数,若未携带此参数系统将返回“非法请求”错误。 列表中变量值的个数及长度必须和templateId对应模板内容中定义的变量个数及长度保持一致;例如templateId对应的模板内容有2个变量且变量长度分别为5和6,则此处需要设置2个变量值且内容长度分别小于等于5和6。 如模板内容为“您有${NUM_2}件快递请到${TXT_32}领取”时,该参数可填写为["3","人民公园正门"]。 collectInd 否 Integer(0-32) 0 是否进行收号。若进行收号,请在语音通知内容播放完毕后的5秒之内进行按键操作,系统会将用户输入的号码通过语音通知呼叫状态通知API发送给SP。 取值范围: 0:不收号 1~32:收号,并且取值表示收号位长,最大支持32位。 若不携带该参数,则默认不收号。 replayAfterCollection 否 String(枚举) false 当collectInd字段设置为非0时此参数有效。 此字段用于设置是否在收号后重新播放notifyVoice、ttsContent或templateId指定的放音。 true:播放。 false:不播放。 默认值:false。 collectContentTriggerReplaying 否 String(1-32) 无 当replayAfterCollection字段设置为true时此参数有效。 此字段用于设置触发重新放音的收号内容。只有实际收号内容与该参数值一致时,才重新放音。例如:该参数设置为1,当用户根据收号语音提示按1,两者一致,则重复放音。
  • 请求参数 SP调用语音通知API,语音通话平台发起呼叫,给用户播放自定义的语音文件或TTS合成语音文件,并可进行收号,获得应答信息并反馈给SP。 注:以下流程以语音通话平台呼叫A,给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(appSecret, url+安全随机数+时间戳))生成。其中,url使用客户设置的状态推送URL,随机数需使用安全随机数。 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(枚举) 该参数标识API事件通知的类型。取值范围如下: callout:呼出事件 alerting:振铃事件 answer:应答事件 collectInfo:放音收号结果事件 disconnect:挂机事件 statusInfo 否 CallStatusInfo 呼叫状态事件的信息。 当eventType参数为callout、alerting、answer、collectInfo、disconnect时携带。 CallStatusInfo 表5 callout:呼出事件 参数名称 是否必选 参数类型 说明 timestamp 是 String(1-128) 该呼叫事件发生时语音通话平台的UNIX时间戳。 该参数取值为UTC时间(+8小时为北京时间)格式,即为“yyyy-MM-dd HH:mm:ss”。 userData 否 String(1-256) 用户附属信息,此参数的值与“语音通知API”中的"userData"参数值一致。 sessionId 是 String(1-256) 唯一指定一条通话链路的标识ID。 caller 否 String(1-32) 主叫号码。 号码仅支持全局号码格式(包含国家码),比如+86138****7021。 注:呼出事件的主叫号码为SP设置的来电显示号码(displayNbr)。 called 否 String(1-32) 被叫号码。 号码仅支持全局号码格式(包含国家码),比如+86138****7021。 注:呼出事件的被叫号码为A号码。 接口示例 POST /status HTTP/1.1Content-Length: xx {"eventType":"callout","statusInfo":{"sessionId":"1202_14260_4294967295_20190124024846@callenabler245.huaweicaas.com","timestamp":"2019-01-24 02:48:46","caller":"+86138****0022","called":"+86138****0021"}} 表6 alerting:振铃事件 参数名称 是否必选 参数类型 说明 timestamp 是 String(1-128) 该呼叫事件发生时语音通话平台的UNIX时间戳。 该参数取值为UTC时间(+8小时为北京时间)格式,即为“yyyy-MM-dd HH:mm:ss”。 userData 否 String(1-256) 用户附属信息,此参数的值与“语音通知API”中的"userData"参数值一致。 sessionId 是 String(1-256) 唯一指定一条通话链路的标识ID。 caller 否 String(1-32) 主叫号码。 号码仅支持全局号码格式(包含国家码),比如+86138****7021。 注:振铃事件的主叫号码为SP设置的来电显示号码(displayNbr)。 called 否 String(1-32) 被叫号码。 号码仅支持全局号码格式(包含国家码),比如+86138****7021。 注:振铃事件的被叫号码为A号码。 接口示例 POST /status HTTP/1.1Content-Length: xx {"eventType":"alerting","statusInfo":{"sessionId":"1202_14260_4294967295_20190124024846@callenabler245.huaweicaas.com","timestamp":"2019-01-24 02:48:47","caller":"+86138****0022","called":"+86138****0021"}} 表7 answer:应答事件 参数名称 是否必选 参数类型 说明 timestamp 是 String(1-128) 该呼叫事件发生时语音通话平台的UNIX时间戳。 该参数取值为UTC时间(+8小时为北京时间)格式,即为“yyyy-MM-dd HH:mm:ss”。 userData 否 String(1-256) 用户附属信息,此参数的值与“语音通知API”中的"userData"参数值一致。 sessionId 是 String(1-256) 唯一指定一条通话链路的标识ID。 caller 否 String(1-32) 主叫号码。 号码仅支持全局号码格式(包含国家码),比如+86138****7021。 注:应答事件的主叫号码为SP设置的来电显示号码(displayNbr)。 called 否 String(1-32) 被叫号码。 号码仅支持全局号码格式(包含国家码),比如+86138****7021。 注:应答事件的被叫号码为A号码。 接口示例 POST /status HTTP/1.1Content-Length: xx {"eventType":"answer","statusInfo":{"sessionId":"1202_14260_4294967295_20190124024846@callenabler245.huaweicaas.com","timestamp":"2019-01-24 02:49:12","caller":"+86138****0022","called":"+86138****0021"}} 表8 collectInfo:放音收号结果事件 参数名称 是否必选 参数类型 说明 timestamp 是 String(1-128) 该呼叫事件发生时语音通话平台的UNIX时间戳。 该参数取值为UTC时间(+8小时为北京时间)格式,即为“yyyy-MM-dd HH:mm:ss”。 sessionId 是 String(1-256) 唯一指定一条通话链路的标识ID。 digitInfo 否 String(1-64) 语音通知场景中携带收号的结果。(即用户输入的数字) 接口示例 POST /status HTTP/1.1Content-Length: xx {"eventType":"collectInfo","statusInfo":{"sessionId":"1202_14260_4294967295_20190124024846@callenabler245.huaweicaas.com","timestamp":"2019-01-24 02:49:12","digitInfo":"02"}} 表9 disconnect:挂机事件 参数名称 是否必选 参数类型 说明 timestamp 是 String(1-128) 该呼叫事件发生时语音通话平台的UNIX时间戳。 该参数取值为UTC时间(+8小时为北京时间)格式,即为“yyyy-MM-dd HH:mm:ss”。 userData 否 String(1-256) 用户附属信息,此参数的值与“语音通知API”中的"userData"参数值一致。 sessionId 是 String(1-256) 唯一指定一条通话链路的标识ID。 caller 否 String(1-32) 主叫号码。 号码仅支持全局号码格式(包含国家码),比如+86138****7021。 注:挂机事件的主叫号码为SP设置的来电显示号码(displayNbr)。 called 否 String(1-32) 被叫号码。 号码仅支持全局号码格式(包含国家码),比如+86138****7021。 注:挂机事件的被叫号码为A号码。 stateCode 否 Integer 通话挂机的原因值,仅当eventType为disconnect时携带。 取值范围及表示的含义请参考通话挂机原因值说明。 stateDesc 否 String(1-128) 通话挂机的原因值的描述,仅当eventType为disconnect时携带。 接口示例 POST /status HTTP/1.1Content-Length: xx {"eventType":"disconnect","statusInfo":{"sessionId":"1202_14260_4294967295_20190124024846@callenabler245.huaweicaas.com","timestamp":"2019-01-24 02:49:23","caller":"+86138****0022","called":"+86138****0021","stateCode":0,"stateDesc":"The user releases the call."}}