华为云用户手册

  • 响应消息 响应参数 表1 响应参数 参数 参数类型 取值范围 描述 error_code String 最大长度:10 状态码。 具体请参见状态码。 error_msg String 最大长度:256 错误描述信息。 响应示例: HTTP/1.1 204 No Content Content-Type: application/json;charset=UTF-8 Content-Length: length Date: response time
  • 状态码 状态码4xx:由于明显的客户端错误(例如,格式错误的请求语法、参数错误等),华为云会返回4xx错误码,请及时检查请求消息的正确性,重新发起请求。 状态码5xx:由于华为云系统原因,导致无法完成明显有效请求的处理,可及时联系华为云客服处理。 HTTP状态码 错误码 描述 400 CBC.0100 参数错误。 400 CBC.99005010 订单状态不允许取消。 403 CBC.0151 访问拒绝。 500 CBC.0999 其他错误。 400 CBC.99000089 抱歉,当前订单号不能操作,请使用组合交易单号操作。
  • 请求消息 请求参数 参数 是否必选 参数类型 取值范围 描述 order_id 是 String 最大长度:64 订单ID。 取值为调用“查询订单列表”接口时响应消息中的“order_id”字段的值。 请求示例 PUT https://bss.myhuaweicloud.com/v2/orders/customer-orders/cancel HTTP/1.1 Content-Type: application/json X-Auth-Token:MIIPAgYJKoZIhvcNAQcCo...ggg1BBIINPXsidG9rZ { "order_id": " CS 170926155954NO7" }
  • 功能介绍 该接口即将下线,“支付包年/包月产品订单”新接口请参考支付包年/包月产品订单。 客户可以对待支付状态的包年/包月产品订单进行支付。 客户登录费用中心支付包年包月产品的待支付订单请单击这里。 余额支付包括现金账户和信用账户两种支付方式,如果两个账户都有余额,则优先现金账户支付。 同时使用订单折扣和优惠券的互斥规则如下: 如果优惠券的限制属性上存在simultaneousUseWithEmpowerDiscount字段,并且值为0,则优惠券和伙伴授予折扣不能同时使用。 如果优惠券的限制属性上存在simultaneousUseWithContractDiscount字段,并且值为0,则优惠券和商务授权折扣不能同时使用。 如果优惠券的限制属性上存在minConsumeDiscount字段,当折扣ID包含的所有订单项上的折扣率discount_ratio都小于minConsumeDiscount字段时,则折扣ID和优惠券不能同时使用。 如果优惠券的限制属性上存在simultaneousUseWithPromotionDiscount字段,并且值为0,则优惠券和促销折扣不能同时使用。 财务托管企业子调用该接口时,若企业主帐号存在订单可用的优惠券,则支付订单时会自动使用,无需在请求参数中携带优惠券ID。
  • 状态码 状态码4xx:由于明显的客户端错误(例如,格式错误的请求语法、参数错误等),华为云会返回4xx错误码,请及时检查请求消息的正确性,重新发起请求。 状态码5xx:由于华为云系统原因,导致无法完成明显有效请求的处理,可及时联系华为云客服处理。 HTTP状态码 错误码 描述 400 CBC.30000010 无效订单(可能是订单不存在),不能进行操作。 400 CBC.99003106 订单状态已发生变更,不能进行支付操作。 400 CBC.99003108 您选择的折扣不可用于该订单。 400 CBC.99003110 订单已经过了支付截止时间,请重新提交订单。 400 CBC.99003112 优惠券或储值卡已被使用。 400 CBC.99003116 选择的优惠券限制不能和折扣同时使用。 400 CBC.99003117 选择的优惠券配置了最小折扣比例,而选择的折扣小于这个折扣比例。 例如:优惠券配置的最小折扣比例为90%,而选择的折扣在所有订单行上都小于90%,则该折扣不可使用。 400 CBC.99003141 云服务配额或容量不足或规格发生变化。 400 CBC.99003147 代金券和折扣券不能同时使用。 400 CBC.99003155 企业项目资金配额不足/项目不可用。 400 CBC.99003156 云商店券和专用代金券不能同时使用。 400 CBC.99003162 支付时间超过设定的生效时间。 400 CBC.99003198 企业组织预算不足。 400 CBC.99005003 余额不足。 400 CBC.99006093 获取不到税率信息。 400 CBC.99008040 操作频繁。 500 CBC.0999 其他错误。 400 CBC.99000089 抱歉,当前订单号不能操作,请使用组合交易单号操作。 400 CBC.99008056 今日创建交易已达上限。
  • 请求消息 请求参数 无。 请求示例 GET https://bss.myhuaweicloud.com/v2/orders/customer-orders/order-coupons?order_id=CS170926155954NO7 HTTP/1.1 Content-Type: application/json X-Auth-Token:MIIPAgYJKoZIhvcNAQcCo...ggg1BBIINPXsidG9rZ
  • 状态码 状态码4xx:由于明显的客户端错误(例如,格式错误的请求语法、参数错误等),华为云会返回4xx错误码,请及时检查请求消息的正确性,重新发起请求。 状态码5xx:由于华为云系统原因,导致无法完成明显有效请求的处理,可及时联系华为云客服处理。 HTTP状态码 错误码 描述 400 CBC.0100 参数错误。 400 CBC.0101 参数无效。 400 CBC.30000010 无效订单(可能是订单不存在),不能进行操作。 403 CBC.0155 不允许执行当前请求。 原因可能为账号鉴权信息不正确、账号或子账号没有接口调用权限。 500 CBC.0999 其他错误。
  • 请求消息 请求参数 无 请求示例 GET https://bss.myhuaweicloud.com/v2/orders/customer-orders/details/CS19040119281JMYC?limit=10&offset=0 HTTP/1.1 Content-Type: application/json X-Auth-Token:MIIPAgYJKoZIhvcNAQcCo...ggg1BBIINPXsidG9rZ
  • URI GET /v2/orders/customer-orders/details/{order_id} 参数说明请参见下表。 表1 路径参数 参数 是否必选 取值范围 描述 order_id 是 最大长度:64 订单ID。 查询订单列表时系统会返回订单ID。 表2 查询参数 参数 是否必选 取值范围 描述 offset 否 [0-最大整数] 偏移量,从0开始。默认值为0。 此参数不携带或携带值为空或携带值为null,取默认值0。 说明: offset用于分页处理,如不涉及分页,请使用默认值0。offset表示相对于满足条件的第一个数据的偏移量。如offset = 1,则返回满足条件的第二个数据至最后一个数据。 示例1,满足查询条件的结果共10条数据,limit取值为10,offset取值为1,则返回的数据为2~10,第一条数据不返回。 示例2,查询总数20条,期望每页返回10条数据,则获取第一页数据,入参offset填写0,limit填写10;获取第二页数据,入参offset填写10,limit填写10。 limit 否 [1-100] 每页大小。默认值为10。 此参数不携带或携带值为空或携带值为null,取默认值10。 表3 消息头参数 参数 是否必选 参数类型 取值范围 描述 X-Language 否 String 最大长度:10 语言。 zh_CN:中文 en_US:英文 缺省为zh_CN。
  • 状态码 状态码4xx:由于明显的客户端错误(例如,格式错误的请求语法、参数错误等),华为云会返回4xx错误码,请及时检查请求消息的正确性,重新发起请求。 状态码5xx:由于华为云系统原因,导致无法完成明显有效请求的处理,可及时联系华为云客服处理。 HTTP状态码 错误码 描述 400 CBC.0100 参数错误。 400 CBC.0101 参数无效。 403 CBC.0155 不允许执行当前请求。 原因可能为账号鉴权信息不正确、账号或子账号没有接口调用权限。 500 CBC.0999 其他错误。
  • 请求消息 请求参数 无。 请求示例 GET https://bss.myhuaweicloud.com/v2/orders/customer-orders?order_id=CS1905251035OA1AF&customer_id=c9e731c4663646988ef4cdb3122837b6&create_time_begin=2020-05-06T08:05:01Z&create_time_end=2020-05-07T08:05:01Z&service_type_code=hws.service.type.obs&status=5&order_type=1&limit=10&offset=0&order_by=-createTime&payment_time_begin=2020-05-06T08:05:01Z&payment_time_end=2020-05-07T08:05:01Z HTTP/1.1 Content-Type: application/json X-Auth-Token:MIIPAgYJKoZIhvcNAQcCo...ggg1BBIINPXsidG9rZ
  • URI GET /v2/orders/customer-orders 表1 查询参数 参数 是否必选 参数类型 取值范围 描述 order_id 否 String 最大长度:64 订单ID。大小写不敏感。 此参数不携带或携带值为空时,不作为筛选条件;携带值为null时,作为筛选条件;不支持携带值为空串。 说明: 使用特殊字符进行查询的时候,请注意进行URL编码转换,如“%”的转码应为“%25”。 create_time_begin 否 String 最大长度:20 订单创建开始时间。 UTC时间,格式:yyyy-MM-dd'T'HH:mm:ss'Z',如“2019-05-06T08:05:01Z”。 其中,HH范围是0~23,mm和ss范围是0~59。 订单创建开始时间与订单创建结束时间间隔不能超过1年。 此参数不携带或携带值为空时,不作为筛选条件;不支持携带值为空串或携带值为null。 create_time_end 否 String 最大长度:20 订单创建结束时间。 UTC时间,格式:yyyy-MM-dd'T'HH:mm:ss'Z',如“2019-05-06T08:05:01Z”。 其中,HH范围是0~23,mm和ss范围是0~59。 订单创建开始时间与订单创建结束时间间隔不能超过1年。 此参数不携带或携带值为空时,不作为筛选条件;不支持携带值为空串或携带值为null。 service_type_code 否 String 最大长度:64 云服务类型编码,例如OBS的云服务类型编码为"hws.service.type.obs"。大小写不敏感。 您可以调用查询云服务类型列表接口获取。 此参数不携带或携带值为空时,不作为筛选条件;携带值为空串或携带值为null时,作为筛选条件。 status 否 Integer - 订单状态: 1:待审核 3:处理中 4:已取消 5:已完成 6:待支付 9:待确认 此参数不携带或携带值为空或携带值为null时,不作为筛选条件;不支持携带值为空串。 order_type 否 String 最大长度:64 订单类型: 1:开通 2:续订 3:变更 4:退订 10:包年/包月转按需 11:按需转包年/包月 13:试用 14:转商用 15:费用调整 此参数不携带或携带值为空时,不作为筛选条件;不支持携带值为空串或携带值为null。 limit 否 Integer [1-100] 每次查询的订单数量,默认值为10。 此参数不携带或携带值为空或携带值为null时,取默认值10;不支持携带值为空串。 offset 否 Integer [0-最大整数] 偏移量,从0开始。默认值为0。 此参数不携带或携带值为空或携带值为null时,取默认值0;不支持携带值为空串。 说明: offset用于分页处理,如不涉及分页,请使用默认值0。offset表示相对于满足条件的第一个数据的偏移量。如offset = 1,则返回满足条件的第二个数据至最后一个数据。 示例1,满足查询条件的结果共10条数据,limit取值为10,offset取值为1,则返回的数据为2~10,第一条数据不返回。 示例2,查询总数20条,期望每页返回10条数据,则获取第一页数据,入参offset填写0,limit填写10;获取第二页数据,入参offset填写10,limit填写10。 order_by 否 String 最大长度:36 查询的订单列表排序。大小写不敏感。 支持按照创建时间进行排序,带-表示倒序。 创建时间:升序为createTime,倒序为-createTime。 此参数不携带或携带值为空或携带值为空串或携带值为null时,按照创建时间倒序排列。 payment_time_begin 否 String 最大长度:20 订单支付开始时间。 UTC时间,格式:yyyy-MM-dd'T'HH:mm:ss'Z',如“2019-05-06T08:05:01Z”。 其中,HH范围是0~23,mm和ss范围是0~59。 订单支付开始时间与订单支付结束时间间隔不能超过1年。 此参数不携带或携带值为空时,不作为筛选条件;不支持携带值为空串或携带值为null。 payment_time_end 否 String 最大长度:20 订单支付结束时间。 UTC时间,格式:yyyy-MM-dd'T'HH:mm:ss'Z',如“2019-05-06T08:05:01Z”。 其中,HH范围是0~23,mm和ss范围是0~59。 订单支付开始时间与订单支付结束时间间隔不能超过1年。 此参数不携带或携带值为空时,不作为筛选条件;不支持携带值为空串或携带值为null。
  • 请求消息 请求参数 无。 请求示例 GET https://bss.myhuaweicloud.com/v1.0/{domain_id}/common/order-mgr/orders-resource/CS*****YE?offset=1&limit=10 HTTP/1.1 Content-Type: application/json X-Auth-Token:MIIPAgYJKoZIhvcNAQcCo...ggg1BBIINPXsidG9rZ
  • 状态码 状态码4xx:由于明显的客户端错误(例如,格式错误的请求语法、参数错误等),华为云会返回4xx错误码,请及时检查请求消息的正确性,重新发起请求。 状态码5xx:由于华为云系统原因,导致无法完成明显有效请求的处理,可及时联系华为云客服处理。 HTTP状态码 错误码 描述 200 CBC.0000 成功。 500 CBC.0999 其他错误。 400 CBC.0100 参数错误。 403 CBC.0151 访问拒绝。 400 CBC.99000083 不支持该订单查询资源开通详情。
  • URI GET /v1.0/{domain_id}/common/order-mgr/orders-resource/{order_id} 参数说明请参见下表。 表1 路径参数 参数 是否必选 取值范围 描述 domain_id 是 最大长度:64 客户账号ID。获取方法请参见如何获取客户的customer_id/domain_id。 order_id 是 最大长度:64 订单ID。 订购包年/包月产品时系统会生成一个订单ID。 表2 查询参数 参数 是否必选 参数类型 取值范围 描述 offset 是 Integer [1-2147483647] 页数,默认值为1。 limit 是 Integer [1-50] 每页查询条数,默认值为10。
  • 响应参数 接收到话单通知时,第三方服务器返回200响应,同时若携带表6中的响应参数,系统则会根据resultcode参数值判断是否推送成功。 表6 响应消息参数说明 参数名称 是否必选 参数类型 说明 resultcode 否 String(0-32) 请求返回的结果码。 0为成功 其他均为失败 resultdesc 否 String(0-128) 请求返回的结果描述。 响应示例 HTTP/1.1 200 OK Content-Type: application/json;charset=UTF-8 {"resultcode":"0","resultdesc":"Success"}
  • 表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+"\n"+安全随机数+"\n"+时间戳))生成。其中,url使用客户设置的话单推送URL,随机数需使用安全随机数。 Nonce:客户发送请求时生成的一个随机数,长度为1~128位,可包含数字和大小写字母。例如:66C92B11FF8A425FB8D4CCFE0ED9ED1F。 Created:随机数生成时间。采用UTC+8(北京时间)格式,例如: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事件通知的类型。取值范围如下: fee:话单事件 feeLst 否 FeeInfo[1-50] 呼叫话单事件的信息,参数取值为列表,最大50条。 当eventType参数为fee时携带。 FeeInfo 表5 fee:话单事件 参数名称 是否必须 参数类型 默认值 描述 direction 是 Integer (0-1) 无 通话的呼叫方向,以语音通话平台为基准。 0表示呼出(外呼) spId 是 String(1-32) 无 客户的云服务账号。 appKey 是 String(1-32) 无 应用的app_key。 icid 否 String(1-64) 无 呼叫记录的唯一标识。 bindNum 是 String(1-32) 无 发起此次呼叫的固话号码。 号码仅支持全局号码格式(包含国家码),比如+8675528****02。 sessionId 是 String(1-256) 无 通话链路的唯一标识。 callerNum 是 String(1-32) 无 主叫号码,号码为全局号码格式(包含国家码),比如+86138****0021。 注:callerNum为SP设置的来电显示号码(displayNbr)。 calleeNum 是 String(1-128) 无 被叫号码,号码为全局号码格式(包含国家码),比如+86138****0021。 注:calleeNum为A号码。 callEndTime 否 String(1-128) 无 呼叫结束时间。 该参数为UTC时间(+8小时为北京时间),时间格式为“yyyy-MM-dd HH:mm:ss”。 fwdUnaswRsn 否 Integer 无 转接呼叫操作失败的Q850原因值。详细说明参见附录1-Q850原因值说明。 failTime 否 String(1-128) 无 呼入、呼出的失败时间。 该参数为UTC时间(+8小时为北京时间),时间格式为“yyyy-MM-dd HH:mm:ss”。 ulFailReason 否 Integer 无 通话失败的拆线点。详细说明参见附录2-呼叫拆线点说明。 sipStatusCode 否 Integer 无 呼入、呼出的失败SIP状态码。 callOutStartTime 否 String(1-128) 无 Initcall的呼出开始时间 该参数为UTC时间(+8小时为北京时间),时间格式为“yyyy-MM-dd HH:mm:ss”。 callOutAlertingTime 否 String(1-128) 无 Initcall的呼出振铃时间 该参数为UTC时间(+8小时为北京时间),时间格式为“yyyy-MM-dd HH:mm:ss”。 callOutAnswerTime 否 String(1-128) 无 Initcall的呼出应答时间 该参数为UTC时间(+8小时为北京时间),时间格式为“yyyy-MM-dd HH:mm:ss”。 callOutUnaswRsn 否 Integer NA Initcall的呼出失败的Q850原因值。 详细说明参见附录1-Q850原因值说明。 recordFlag 否 Integer (0-1) 无 该字段用于录音标识,参数值范围如: 0:表示未录音 1:表示有录音 ttsPlayTimes 否 integer 无 应用 TTS 功能时,使用TTS的总次数。 ttsTransDuration 否 integer 无 应用TTS功能时,TTS Server进行TTS转换的总时长。单位为秒。 serviceType 否 String(1-32) 无 携带呼叫的业务类型信息,取值范围: 001:语音播放 hostName 否 String(1-128) 无 该参数用于标识话单生成的服务器设备对应的主机名。 userData 否 String(0-256) 无 用户附属信息,此参数的值与“语音验证码场景API”中的"userData"参数值一致。 响应示例 POST /status HTTP/1.1 Content-Length: xx {"eventType":"fee","feeLst":[{"direction":0,"spId":"CaaS_Test_01","appKey":"7VN6w60Pl3e1E5C8310517x32698","icid":"CAE-20190124105808-12009374","bindNum":"+8675528****02","sessionId":"1200_164_4294967295_20190124025808@callenabler245.huaweicaas.com","callerNum":"+86138****0021","calleeNum":"+86138****7021","callEndTime":"2019-01-24 02:58:36","fwdUnaswRsn":0,"ulFailReason":0,"sipStatusCode":0,"callOutStartTime":"2019-01-24 02:58:08","callOutAlertingTime":"2019-01-24 02:58:13","callOutAnswerTime":"2019-01-24 02:58:24","callOutUnaswRsn":0,"recordFlag":0,"ttsPlayTimes":0,"ttsTransDuration":0,"serviceType":"001","hostName":"callenabler245.huaweicaas.com"}]}
  • 使用说明 前提条件 SP在开发应用时,若需订阅话单通知,必须要提供话单接收URL(feeUrl),并且确保URL能够正常处理语音通话平台发送的通知信息。 提供话单接收URL有以下两种方式: 提前通过应用管理向语音通话平台提交话单接收URL。 SP应用调用场景API时,填写feeUrl参数。 注意事项 若平台给SP推送话单后未收到成功响应,视为推送失败,会重新推送话单,直至客户返回成功响应。平台最多重推6次,每次时间间隔1小时。 单个用户(一路呼叫)的话单通知是根据呼叫状态顺序推送的,一通通话会推送一条话单。但同一个应用下,如果多个用户(多路呼叫)的通话结束时间(callEndTime)相同,话单会合并在一起发送,最多不超过50条。 使用限制 语音通话平台推送话单信息给开发者应用,仅支持POST方式。
  • 语音回呼场景请求参数 语音回呼,也叫双向回呼,用户使用语音回呼软件呼叫另一方,语音通话平台依次呼叫主被叫号码,建立通话,实现主被叫号码间的点对点通信。 注:以下流程以用户A请求呼叫用户B,语音通话平台依次呼叫主叫号码A和被叫号码B,B用户接听为例。流程和接口示例仅供参考,请以实际消息为准。 表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+"\n"+安全随机数+"\n"+时间戳))生成。其中,url使用客户设置的话单推送URL,随机数需使用安全随机数。 Nonce:客户发送请求时生成的一个随机数,长度为1~128位,可包含数字和大小写字母。例如:66C92B11FF8A425FB8D4CCFE0ED9ED1F。 Created:随机数生成时间。采用UTC+8(北京时间)格式,例如: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:应答事件 disconnect:挂机事件 statusInfo 否 CallStatusInfo 呼叫状态事件的信息。 当eventType参数为callout、alerting、answer、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。 注: 语音回呼业务: 语音通话平台呼叫A时的呼出事件主叫号码为SP设置的主叫端来电显示号码(displayNbr)。 语音通话平台呼叫B时的呼出事件主叫号码为SP设置的被叫端来电显示号码(displayCalleeNbr)。 called 否 String(1-32) 被叫号码。 号码仅支持全局号码格式(包含国家码),比如+86138****7021。 注:语音回呼场景 语音通话平台呼叫A时的呼出事件被叫号码为A。 语音通话平台呼叫B时的呼出事件被叫号码为B。 接口示例 POST /status HTTP/1.1 Content-Length: xx {"eventType":"callout","statusInfo":{"sessionId":"1201_612_4294967295_20190124030424@callenabler245.huaweicaas.com","timestamp":"2019-01-24 03:04:24","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。 注: 语音回呼业务: 语音通话平台呼叫A时的振铃事件主叫号码为SP设置的主叫端来电显示号码(displayNbr)。 语音通话平台呼叫B时的振铃事件主叫号码为SP设置的被叫端来电显示号码(displayCalleeNbr)。 called 否 String(1-32) 被叫号码。 号码仅支持全局号码格式(包含国家码),比如+86138****7021。 注:语音回呼场景 语音通话平台呼叫A时的振铃事件被叫号码为A。 语音通话平台呼叫B时的振铃事件被叫号码为B。 接口示例 POST /status HTTP/1.1 Content-Length: xx {"eventType":"alerting","statusInfo":{"sessionId":"1201_612_4294967295_20190124030424@callenabler245.huaweicaas.com","timestamp":"2019-01-24 03:04:26","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。 注: 语音回呼业务: 语音通话平台呼叫A时的应答事件主叫号码为SP设置的主叫端来电显示号码(displayNbr)。 语音通话平台呼叫B时的应答事件主叫号码为SP设置的被叫端来电显示号码(displayCalleeNbr)。 called 否 String(1-32) 被叫号码。 号码仅支持全局号码格式(包含国家码),比如+86138****7021。 注:语音回呼场景 语音通话平台呼叫A时的应答事件被叫号码为A。 语音通话平台呼叫B时的应答事件被叫号码为B。 接口示例 POST /status HTTP/1.1 Content-Length: xx {"eventType":"answer","statusInfo":{"sessionId":"1201_612_4294967295_20190124030424@callenabler245.huaweicaas.com","timestamp":"2019-01-24 03:04:31","caller":"+86138****0022","called":"+86138****0021"}} 表8 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。 注: 语音回呼业务: 若A先挂机,则挂机事件主叫号码为SP设置的主叫端来电显示号码(displayNbr);若B先挂机,则挂机事件主叫号码为SP设置的被叫端来电显示号码(displayCalleeNbr)。 called 否 String(1-32) 被叫号码。 号码仅支持全局号码格式(包含国家码),比如+86138****7021。 注: 语音回呼场景,若A先挂机,则挂机事件被叫号码为A号码;若B先挂机,则挂机事件被叫号码为B号码。 partyType 否 String(枚举) 当通知类型“eventType”为“disconnect”且客户调用“语音回呼场景API”时将“partyTypeRequiredInDisconnect”参数设置为“true”时才会携带。 取值范围如下: caller:主叫 callee:被叫 platform:平台 stateCode 否 Integer 通话挂机的原因值,仅当eventType为disconnect时携带。 取值范围及表示的含义请参考通话挂机原因值说明。 stateDesc 否 String(1-128) 通话挂机的原因值的描述,仅当eventType为disconnect时携带。 接口示例 POST /status HTTP/1.1 Content-Length: xx {"eventType":"disconnect","statusInfo":{"sessionId":"1201_612_4294967295_20190124030424@callenabler245.huaweicaas.com","timestamp":"2019-01-24 03:04:49","caller":"+86138****0022","called":"+86138****0021","stateCode":0,"stateDesc":"The user releases the call."}}
  • 响应参数 接收到话单通知时,第三方服务器返回200响应,同时若携带表6中的响应参数,系统则会根据resultcode参数值判断是否推送成功。 表6 响应消息参数说明 参数名称 是否必选 参数类型 说明 resultcode 否 String(0-32) 请求返回的结果码。 0为成功 其他均为失败 resultdesc 否 String(0-128) 请求返回的结果描述。 响应示例 HTTP/1.1 200 OK Content-Type: application/json;charset=UTF-8 {"resultcode":"0","resultdesc":"Success"}
  • 语音回呼场景请求参数 表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+"\n"+安全随机数+"\n"+时间戳))生成。其中,url使用客户设置的话单推送URL,随机数需使用安全随机数。 Nonce:客户发送请求时生成的一个随机数,长度为1~128位,可包含数字和大小写字母。例如:66C92B11FF8A425FB8D4CCFE0ED9ED1F。 Created:随机数生成时间。采用UTC+8(北京时间)格式,例如: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事件通知的类型。取值范围如下: fee:话单事件 feeLst 否 FeeInfo[1-50] 呼叫话单事件的信息,参数取值为列表,最大50条。 当eventType参数为fee时携带。 FeeInfo 表5 fee:话单事件 参数名称 是否必须 参数类型 描述 direction 是 Integer (0-1) 通话的呼叫方向,以语音通话平台为基准。 0表示呼出(外呼) spId 是 String(1-32) 客户的云服务账号。 appKey 是 String(1-32) 应用的app_key。 icid 否 String(1-64) 呼叫记录的唯一标识。 bindNum 是 String(1-32) 发起此次呼叫的固话号码。 号码仅支持全局号码格式(包含国家码),比如+8675528****02。 sessionId 是 String(1-256) 通话链路的唯一标识。 callerNum 是 String(1-32) 主叫号码,号码为全局号码格式(包含国家码),比如+86138****0021。 当呼叫场景经过转接时,此参数对应第一路呼叫的号显号码。 注: 语音回呼业务: 第一路呼叫是语音通话平台呼叫A,callerNum为SP设置的主叫端来电显示号码(displayNbr)。 calleeNum 是 String(1-32) 被叫号码,号码为全局号码格式(包含国家码),比如+86138****0021。 当呼叫场景经过转接时,此参数对应第一路呼叫的被叫号码。 注:语音回呼场景,第一路呼叫是语音通话平台呼叫A,calleeNum为A号码。 fwdDisplayNum 否 String(1-32) 转接呼叫时的显示号码,号码为全局号码格式(包含国家码),比如+86138****0021。 当呼叫场景经过转接时,此参数对应第二路呼叫的固话号码。 注: 语音回呼业务: 第二路呼叫是语音通话平台呼叫B,fwdDisplayNum为SP设置的被叫端来电显示号码(displayCalleeNbr)。 fwdDstNum 否 String(1-32) 转接呼叫时的转接号码。号码仅支持全局号码格式(包含国家码),比如+86138****0021。 当呼叫场景经过转接时,此参数对应第二路呼叫的被叫号码。 注:语音回呼场景,第二路呼叫是语音通话平台呼叫B,fwdDstNum为B号码。 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原因值。详细说明参见附录1-Q850原因值说明。 failTime 否 String(1-128) 呼入、呼出的失败时间。 该参数为UTC时间(+8小时为北京时间),时间格式为“yyyy-MM-dd HH:mm:ss”。 ulFailReason 否 Integer 通话失败的拆线点。详细说明参见附录2-呼叫拆线点说明。 sipStatusCode 否 Integer 呼入、呼出的失败SIP状态码。 callOutStartTime 否 String(1-128) Initcall的呼出开始时间 该参数为UTC时间(+8小时为北京时间),时间格式为“yyyy-MM-dd HH:mm:ss”。 callOutAlertingTime 否 String(1-128) Initcall的呼出振铃时间 该参数为UTC时间(+8小时为北京时间),时间格式为“yyyy-MM-dd HH:mm:ss”。 callOutAnswerTime 否 String(1-128) Initcall的呼出应答时间 该参数为UTC时间(+8小时为北京时间),时间格式为“yyyy-MM-dd HH:mm:ss”。 callOutUnaswRsn 否 Integer Initcall的呼出失败的Q850原因值。 详细说明参见附录1-Q850原因值说明。 recordFlag 否 Integer (0-1) 该字段用于录音标识,参数值范围如: 0:表示未录音 1:表示有录音 recordStartTime 否 String(1-128) 录音开始时间,时间格式为“yyyy-MM-dd HH:mm:ss”。 recordObjectName 否 String(1-128) 录音文件名。 说明: 参数值为空时,请访问“recordFileDownloadUrl”参数携带的录音文件下载地址下载录音文件。 recordBucketName 否 String(1-128) 录音文件名所在的目录名。 说明: 参数值为空时,请访问“recordFileDownloadUrl”参数携带的录音文件下载地址下载录音文件。 recordDomain 否 String(1-256) 存放录音文件的 域名 。 说明: 参数值为空时,请访问“recordFileDownloadUrl”参数携带的录音文件下载地址下载录音文件。 recordFileDownloadUrl 否 String(1-1024) 录音文件下载地址,可通过该URL在浏览器中下载录音文件。 说明: 使用该参数的场景请联系华为云客服获取。 ttsPlayTimes 否 integer 应用TTS功能时,使用TTS的总次数。 预留参数,无需关注。 ttsTransDuration 否 integer 应用TTS功能时,TTS Server进行TTS转换的总时长。单位为秒。 预留参数,无需关注。 serviceType 否 String(1-32) 携带呼叫的业务类型信息,取值范围: 002:语音回呼 hostName 否 String(1-128) 该参数用于标识话单生成的服务器设备对应的主机名。 userData 否 String(1-256) 用户附属信息,此参数的值与“语音回呼场景API”中的"userData"参数值一致。 接口样例 POST /status HTTP/1.1 Content-Length: xx {"eventType":"fee","feeLst":[{"direction":0,"spId":"CaaS_Test_01","appKey":"ka4kESI5s3YyurL1wpx63s9YnEm2","icid":"CAE-20190124110424-12019775","bindNum":"+86755****5678","sessionId":"1201_612_4294967295_20190124030424@callenabler245.huaweicaas.com","callerNum":"+86138****0022","calleeNum":"+86138****0021","fwdDisplayNum":"+86138****0022","fwdDstNum":"+86138****7021","fwdStartTime":"2019-01-24 03:04:31","fwdAlertingTime":"2019-01-24 03:04:36","fwdAnswerTime":"2019-01-24 03:04:38","callEndTime":"2019-01-24 03:04:49","fwdUnaswRsn":0,"ulFailReason":0,"sipStatusCode":0,"callOutStartTime":"2019-01-24 03:04:24","callOutAlertingTime":"2019-01-24 03:04:27","callOutAnswerTime":"2019-01-24 03:04:31","callOutUnaswRsn":0,"recordFlag":0,"ttsPlayTimes":0,"ttsTransDuration":0,"serviceType":"002","hostName":"callenabler245.huaweicaas.com"}]}
  • 使用说明 前提条件 SP在开发应用时,若需订阅话单通知,必须要提供话单接收URL(feeUrl),并且确保URL能够正常处理语音通话平台发送的通知信息。 提供话单接收URL有以下两种方式: 提前通过应用管理向语音通话平台提交话单接收URL。 SP应用调用场景API时,填写feeUrl参数。 注意事项 若平台给SP推送话单后未收到成功响应,视为推送失败,会重新推送话单,直至客户返回成功响应。平台最多重推6次,每次时间间隔1小时。若6次重推后仍然推送失败,后台会生成话单文件,请联系华为云客服手动推送。 单个用户(一路呼叫)的话单通知是根据呼叫状态顺序推送的,一通通话会推送一条话单。但同一个应用下,如果多个用户(多路呼叫)的通话结束时间(callEndTime)相同,话单会合并在一起发送,最多不超过50条。 使用限制 语音通话平台推送话单信息给开发者应用,仅支持POST方式。
  • 请求参数 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+"\n"+安全随机数+"\n"+时间戳))生成。其中,url使用客户设置的话单推送URL,随机数需使用安全随机数。 Nonce:客户发送请求时生成的一个随机数,长度为1~128位,可包含数字和大小写字母。例如:66C92B11FF8A425FB8D4CCFE0ED9ED1F。 Created:随机数生成时间。采用UTC+8(北京时间)格式,例如: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.1 Content-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.1 Content-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.1 Content-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.1 Content-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.1 Content-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."}}
  • 请求参数 SP调用语音验证码API,语音通话平台发起呼叫,给用户播放语音验证码。 注:以下流程以语音通话平台呼叫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+"\n"+安全随机数+"\n"+时间戳))生成。其中,url使用客户设置的话单推送URL,随机数需使用安全随机数。 Nonce:客户发送请求时生成的一个随机数,长度为1~128位,可包含数字和大小写字母。例如:66C92B11FF8A425FB8D4CCFE0ED9ED1F。 Created:随机数生成时间。采用UTC+8(北京时间)格式,例如: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:应答事件 disconnect:挂机事件 statusInfo 否 CallStatusInfo 呼叫状态事件的信息。 当eventType参数为callout、alerting、answer、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.1 Content-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.1 Content-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.1 Content-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 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.1 Content-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."}}
  • 使用说明 前提条件 SP在开发应用时,若需订阅话单通知,必须要提供话单接收URL(feeUrl),并且确保URL能够正常处理语音通话平台发送的通知信息。 提供话单接收URL有以下两种方式: 提前通过应用管理向语音通话平台提交话单接收URL。 SP应用调用场景API时,填写feeUrl参数。 注意事项 若平台给SP推送话单后未收到成功响应,视为推送失败,会重新推送话单,直至客户返回成功响应。平台最多重推6次,每次时间间隔1小时。 单个用户(一路呼叫)的话单通知是根据呼叫状态顺序推送的,一通通话会推送一条话单。但同一个应用下,如果多个用户(多路呼叫)的通话结束时间(callEndTime)相同,话单会合并在一起发送,最多不超过50条。 使用限制 语音通话平台推送话单信息给开发者应用,仅支持POST方式。
  • 响应参数 接收到话单通知时,第三方服务器返回200响应,同时若携带表6中的响应参数,系统则会根据resultcode参数值判断是否推送成功。 表6 响应消息参数说明 参数名称 是否必选 参数类型 说明 resultcode 否 String(0-32) 请求返回的结果码。 0为成功 其他均为失败 resultdesc 否 String(0-128) 请求返回的结果描述。 响应示例 HTTP/1.1 200 OK Content-Type: application/json;charset=UTF-8 {"resultcode":"0","resultdesc":"Success"}
  • 业务影响 单节点使用率超过85%:无法为新副本分配空间,但是新的主分片仍然可以被分配,从而确保业务操作的连续性不受影响,然而,集群的高可用性上有风险。 单节点使用率超过90%:系统将自动触发分片迁移机制,将该节点上的分片重新分配至磁盘使用率较低的其他数据节点。这一过程可能导致集群暂时无法分配新的分片,进而影响到业务的正常运行,因为分片的迁移和重新分配可能会导致查询延迟增加或临时的服务中断,从而对业务连续性造成影响。 单节点使用率超过95%:系统会对Elasticsearch集群中对应节点里每个索引强制设置“read_only_allow_delete”属性,此时该节点上的所有索引将无法写入数据,只能读取和删除对应索引。 单节点使用率过高,可通过扩容Elasticsearch集群操作动态调整集群节点的数量和容量。新扩容的节点不会立即分配索引,可打开Cerebro看下节点索引分配情况,做进一步观察,也可以修改“indices.recovery.max_bytes_per_sec”和“cluster.routing.allocation.cluster_concurrent_rebalance”两个参数值增加索引分配速度。
  • 解决方案 当新建的索引分片被全部分配在一个node节点上时,有以下2种解决办法: 扩容集群需要新建索引时,按照如下所示设置对应参数。 PUT INDEX_NAME/_settings { "index.routing.allocation.total_shards_per_node": 2 } 即单个索引在每个节点上最多分配2个shards。其中,具体每个节点最多分配多少个shards,请根据集群数据节点个数、索引分片(主、副)的数量自行决定。 如果是shards集中分配在数量过少的节点上导致索引shards分配到同一个节点上,可以使用POST _cluster/reroute的move命令迁移分片到其他节点,rebalance模块会自动分配其他更合适的分片与其交换节点。根据具体业务使用场景可以适当调节balance.index,balance.shard配置。
  • 原因分析 新建索引分片被集中分配于一个node节点上可能有以下原因: 之前索引的分配导致某个节点上的shards数量过少,新建索引shards分配被balance.shard参数主导,为了平衡所有索引的全部分片,将shards集中分配在数量过少的节点上。 节点扩容,当新节点加入时新节点上的shards数量为0,此时集群会自动进行rebalance,但是rebalance需要时间,此时新建索引很容易会被balance.shard参数主导,平衡所有索引的分片,即都分配在新节点上看起来更加平衡。 涉及集群平衡性shard分配主要有两个配置参数: cluster.routing.allocation.balance.index(默认值0.45f) cluster.routing.allocation.balance.shard(默认值0.55f) “balance.index”:值越大,shard分配越倾向于使得每个索引的所有分片在节点上均匀分布,如a索引共有6个shards,数据节点有3个,该配置值倾向于让a索引2、2、2平衡分配。 “balance.shard”:值越大,shard分配越倾向于使得所有分片(所有索引的)在节点上平衡,如索引a有2个shards,索引b有4个shards,该配置倾向于所有6个分片进行2、2、2平衡分配。 balance.index和balance.shard共同负责shards分配。
  • Elasticsearch和OpenSearch集群支持扩容子网吗? 在Elasticsearch和OpenSearch集群使用过程中,当现有子网无法满足业务需求时,可以切换子网实现子网扩容。 切换子网后,新子网将用于后续新增节点的操作,包括扩容、添加Master/Client节点、开启终端节点服务,新增节点将通过新子网自动申请并绑定IP地址。 一个集群最多支持同时关联两个子网。 子网切换操作不会影响已有节点的网络配置。 登录 云搜索服务 管理控制台。 选择“集群管理”进入Elasticsearch或OpenSearch集群列表。 单击目标集群的名称,进入集群基本信息页面。 在“当前子网”右侧,单击“切换子网”,在弹窗中选择其他子网,如果没有满足要求的子网,也可以单击“新建子网”,跳转到网络控制台新建子网。 图1 切换子网 修改完成后,单击“确定”启动更改任务。 父主题: CSS 集群管理
共100000条
提示

您即将访问非华为云网站,请注意账号财产安全