语音通话 VOICECALL-Python:“呼叫状态通知API”代码样例

时间:2024-09-25 15:29:01

“呼叫状态通知API”代码样例

# -*- coding: utf-8 -*-
'''
呼叫事件通知
客户平台收到语音通话平台的呼叫事件通知的接口通知
'''
import json

#呼叫事件通知样例
jsonBody = json.dumps({
    'eventType': 'callout',
    'statusInfo': {
        'sessionId': '1201_612_4294967295_20190124030424@callenabler245.huaweicaas.com',
        'timestamp': '2019-01-24 03:04:24',
        'caller': '+86138*******2',
        'called': '+86138*******1',
        'userData': 'customerId123'
    }
}).encode('ascii')

print(jsonBody)

'''
呼叫事件通知
@see: 详细内容以接口文档为准
@param param: jsonBody
@return: 
'''
def onCallEvent(jsonBody):
    jsonObj = json.loads(jsonBody) #将通知消息解析为jsonObj
    eventType = jsonObj['eventType'] #通知事件类型

    if ('fee' == eventType):
        print('EventType error: ' + eventType)
        return

    if ('statusInfo' not in jsonObj):
        print('param error: no statusInfo.')
        return
    statusInfo = jsonObj['statusInfo'] #呼叫状态事件信息

    print('eventType: ' + eventType) #打印通知事件类型

    #callout:呼出事件
    if ('callout' == eventType):
        '''
        Example: 此处以解析sessionId为例,请按需解析所需参数并自行实现相关处理

        'timestamp': 该呼叫事件发生时语音通话平台的UNIX时间戳
        'userData': 用户附属信息
        'sessionId': 通话链路的标识ID
        'caller': 主叫号码
        'called': 被叫号码
        '''
        if ('sessionId' in statusInfo):
            print('sessionId: ' + statusInfo['sessionId'])
        return
    #alerting:振铃事件
    if ('alerting' == eventType):
        '''
        Example: 此处以解析sessionId为例,请按需解析所需参数并自行实现相关处理

        'timestamp': 该呼叫事件发生时语音通话平台的UNIX时间戳
        'userData': 用户附属信息
        'sessionId': 通话链路的标识ID
        'caller': 主叫号码
        'called': 被叫号码
        '''
        if ('sessionId' in statusInfo):
            print('sessionId: ' + statusInfo['sessionId'])
        return
    #answer:应答事件
    if ('answer' == eventType):
        '''
        Example: 此处以解析sessionId为例,请按需解析所需参数并自行实现相关处理

        'timestamp': 该呼叫事件发生时语音通话平台的UNIX时间戳
        'userData': 用户附属信息
        'sessionId': 通话链路的标识ID
        'caller': 主叫号码
        'called': 被叫号码
        '''
        if ('sessionId' in statusInfo):
            print('sessionId: ' + statusInfo['sessionId'])
        return
    #collectInfo:放音收号结果事件,仅应用于语音通知场景
    if ('collectInfo' == eventType):
        '''
        Example: 此处以解析digitInfo为例,请按需解析所需参数并自行实现相关处理

        'timestamp': 该呼叫事件发生时语音通话平台的UNIX时间戳
        'sessionId': 通话链路的标识ID
        'digitInfo': 放音收号场景中,语音通话平台对开发者进行放音收号操作的结果描述
        '''
        if ('digitInfo' in statusInfo):
            print('digitInfo: ' + statusInfo['digitInfo'])
        return
    #disconnect:挂机事件
    if ('disconnect' == eventType):
        '''
        Example: 此处以解析sessionId为例,请按需解析所需参数并自行实现相关处理

        'timestamp': 该呼叫事件发生时语音通话平台的UNIX时间戳
        'userData': 用户附属信息
        'sessionId': 通话链路的标识ID
        'caller': 主叫号码
        'called': 被叫号码
        'partyType': 挂机的用户类型,仅在语音回呼场景携带
        'stateCode': 通话挂机的原因值
        'stateDesc': 通话挂机的原因值的描述
        '''
        if ('sessionId' in statusInfo):
            print('sessionId: ' + statusInfo['sessionId'])
        return

if __name__ == '__main__':
    onCallEvent(jsonBody) #呼叫事件处理
support.huaweicloud.com/devg-VoiceCall/rtc_04_0015.html