• 沒有找到結果。

"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":"[email protected]"

}

代码样例

前往代码样例查看。

常见问题

● 调用接口时请求不通,没有任何返回信息,怎么处理?

● 返回“1010023 Display number invalid.”错误码如何处理?

● 如何配置和接收呼叫状态和话单通知?地址是否支持http?

● 语音通知中使用放音文件和语音模板有什么区别?

● 一个语音通知可以播放几个语音文件?格式是什么?

● 语音通话的固话号码(displayNbr、displayCalleeNbr)是什么?如何获取?

3.3 语音通知呼叫状态通知 API

接口功能

语音通话平台通过此接口向客户推送语音通话业务用户呼叫时的状态信息,如呼入、

呼出、振铃、应答、挂机等状态的信息。

请求方向

语音通话平台(客户端) → 客户服务器(服务端)

使用说明

● 前提条件

– SP在开发应用时,若需订阅呼叫状态通知,必须要提供呼叫状态接收URL

– 提供呼叫状态接收URL有以下两种方式:

提前通过应用管理向语音通话平台提交呼叫状态接收URL。

SP应用调用场景API时,填写statusUrl。

● 使用限制

语音通话平台推送呼叫状态给开发者应用,仅支持POST方式。

接口类型

3-9 接口类型说明 请求方法 POST

访问URI 开发者应用接收呼叫状态URL 通信协议 HTTPS/HTTP

请求参数

SP调用语音通知API,语音通话平台发起呼叫,给用户播放自定义的语音文件或TTS合 成语音文件,并可进行收号,获得应答信息并反馈给SP。

注:以下流程以语音通话平台呼叫A,给A播放语音文件并收号为例。流程和接口示例 仅供参考,请以实际消息为准。

3-10 请求 Headers 参数说明 参数名称 是否

必选

参数类型 说明

Content-Type 是 String 固定填写为application/json;charset=UTF-8。

Authoriza

tion 是 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-11。

3-11 不同编程语言的时间格式

编程语言 时间格式

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()转换后的时间格式去除毫秒后即 为本接口要求的时间格式。

3-12 请求 Body 参数说明

参数名称 是否必选 参数类型 说明

eventType 是 String(枚

举) 该参数标识API事件通知的类型。取 值范围如下:

callout:呼出事件

alerting:振铃事件

answer:应答事件

collectInfo:放音收号结果事件

disconnect:挂机事件

statusInfo 否 CallStatusI

nfo 呼叫状态事件的信息。

当eventType参数为callout、

alerting、answer、collectInfo、

disconnect时携带。

CallStatusInfo

3-13 callout:呼出事件

参数名称 是否必选 参数类型 说明

timestamp 是 String(1-1

28) 该呼叫事件发生时语音通话平台的 UNIX时间戳。

该参数取值为UTC时间(+8小时为北 京时间)格式,即为“yyyy-MM-dd HH:mm:ss”。

userData 否 String(1-2

56) 用户附属信息,此参数的值与“语音 通知API”中的"userData"参数值一 致。

sessionId 是 String(1-2

56) 唯一指定一条通话链路的标识ID。

caller 否 String(1-3

2) 主叫号码。

号码仅支持全局号码格式(包含国家 码),比如+86138****7021。

注:呼出事件的主叫号码为SP设置的 来电显示号码(displayNbr)。

called 否 String(1-3

2) 被叫号码。

号码仅支持全局号码格式(包含国家 码),比如+86138****7021。

注:呼出事件的被叫号码为A号码。

接口示例

POST /status HTTP/1.1 Content-Length: xx

{"eventType":"callout","statusInfo":

{"sessionId":"1202_14260_4294967295_20190124024846@callenabler245.huaweicaas.com","timestamp":"20 19-01-24 02:48:46","caller":"+86138****0022","called":"+86138****0021"}}

3-14 alerting:振铃事件

参数名称 是否必选 参数类型 说明

timestamp 是 String(1-1

28) 该呼叫事件发生时语音通话平台的 UNIX时间戳。

该参数取值为UTC时间(+8小时为北 京时间)格式,即为“yyyy-MM-dd HH:mm:ss”。

userData 否 String(1-2

56) 用户附属信息,此参数的值与“语音 通知API”中的"userData"参数值一 致。

sessionId 是 String(1-2

56) 唯一指定一条通话链路的标识ID。

caller 否 String(1-3

2) 主叫号码。

号码仅支持全局号码格式(包含国家 码),比如+86138****7021。

注:振铃事件的主叫号码为SP设置的 来电显示号码(displayNbr)。

called 否 String(1-3

2) 被叫号码。

号码仅支持全局号码格式(包含国家 码),比如+86138****7021。

注:振铃事件的被叫号码为A号码。

接口示例

POST /status HTTP/1.1 Content-Length: xx

{"eventType":"alerting","statusInfo":

{"sessionId":"1202_14260_4294967295_20190124024846@callenabler245.huaweicaas.com","timestamp":"20 19-01-24 02:48:47","caller":"+86138****0022","called":"+86138****0021"}}

3-15 answer:应答事件

参数名称 是否必选 参数类型 说明

timestamp 是 String(1-1

28) 该呼叫事件发生时语音通话平台的 UNIX时间戳。

该参数取值为UTC时间(+8小时为北 京时间)格式,即为“yyyy-MM-dd HH:mm:ss”。

userData 否 String(1-2

56) 用户附属信息,此参数的值与“语音 通知API”中的"userData"参数值一 致。

sessionId 是 String(1-2

56) 唯一指定一条通话链路的标识ID。

caller 否 String(1-3

2) 主叫号码。

号码仅支持全局号码格式(包含国家 码),比如+86138****7021。

注:应答事件的主叫号码为SP设置的 来电显示号码(displayNbr)。

called 否 String(1-3

2) 被叫号码。

号码仅支持全局号码格式(包含国家 码),比如+86138****7021。

注:应答事件的被叫号码为A号码。

接口示例

POST /status HTTP/1.1 Content-Length: xx

{"eventType":"answer","statusInfo":

{"sessionId":"1202_14260_4294967295_20190124024846@callenabler245.huaweicaas.com","timestamp":"20 19-01-24 02:49:12","caller":"+86138****0022","called":"+86138****0021"}}

3-16 collectInfo:放音收号结果事件

参数名称 是否必选 参数类型 说明

timestamp 是 String(1-1

28) 该呼叫事件发生时语音通话平台的 UNIX时间戳。

该参数取值为UTC时间(+8小时为北 京时间)格式,即为“yyyy-MM-dd HH:mm:ss”。

sessionId 是 String(1-2

56) 唯一指定一条通话链路的标识ID。

digitInfo 否 String(1-6

4) 语音通知场景中携带收号的结果。

(即用户输入的数字)

接口示例

POST /status HTTP/1.1 Content-Length: xx

{"eventType":"collectInfo","statusInfo":

{"sessionId":"1202_14260_4294967295_20190124024846@callenabler245.huaweicaas.com","timestamp":"20 19-01-24 02:49:12","digitInfo":"02"}}

3-17 disconnect:挂机事件

参数名称 是否必选 参数类型 说明

timestamp 是 String(1-1

28) 该呼叫事件发生时语音通话平台的 UNIX时间戳。

该参数取值为UTC时间(+8小时为北 京时间)格式,即为“yyyy-MM-dd HH:mm:ss”。

userData 否 String(1-2

56) 用户附属信息,此参数的值与“语音 通知API”中的"userData"参数值一 致。

sessionId 是 String(1-2

56) 唯一指定一条通话链路的标识ID。

caller 否 String(1-3

2) 主叫号码。

号码仅支持全局号码格式(包含国家 码),比如+86138****7021。

注:挂机事件的主叫号码为SP设置的 来电显示号码(displayNbr)。

called 否 String(1-3

2) 被叫号码。

号码仅支持全局号码格式(包含国家 码),比如+86138****7021。

注:挂机事件的被叫号码为A号码。

stateCode 否 Integer 通话挂机的原因值,仅当eventType 为disconnect时携带。

取值范围及表示的含义请参考通话挂 机原因值说明。

stateDesc 否 String(1-1

28) 通话挂机的原因值的描述,仅当 eventType为disconnect时携带。

接口示例

POST /status HTTP/1.1 Content-Length: xx

{"eventType":"disconnect","statusInfo":

{"sessionId":"1202_14260_4294967295_20190124024846@callenabler245.huaweicaas.com","timestamp":"20

响应参数

接收到事件通知时,第三方服务器响应返回200则为成功,否则语音通话平台会认为推 送失败。

响应示例HTTP/1.1 200 OK

Content-Type: application/json;charset=UTF-8

代码样例

前往代码样例查看。

常见问题

● 如何配置和接收呼叫状态和话单通知?地址是否支持http?

● 呼叫状态和话单通知什么时候推送?

● 呼叫状态和话单通知多个用户如何推送?

● 接收呼叫状态和话单通知后需要返回响应消息吗?

● 接收呼叫状态和话单通知,参数区分大小写吗?

● 语音通话的呼叫状态通知和话单通知支持重推吗?

● 语音通话的通话记录如何获取?

● 为什么没有收到呼叫状态通知和话单通知?