语音通话 VoiceCall-Node.js:“呼叫状态通知API”代码样例

时间:2025-01-26 10:40:09

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

/** * 呼叫事件通知 * 客户平台收到RTC业务平台的呼叫事件通知的接口通知 *///呼叫事件通知样例var jsonBody = JSON.stringify({    'eventType': 'callout',    'statusInfo': {        'sessionId': '1201_612_4294967295_20190124030424@callenabler245.huaweicaas.com',        'timestamp': '2019-01-24 03:04:24',        'caller': '+8613800000022',        'called': '+8613800000021'    }});console.log('jsonBody:', jsonBody);/** * 呼叫事件通知 * @brief 详细内容以接口文档为准 * @param jsonBody */function onCallEvent(jsonBody) {    var jsonObj = JSON.parse(jsonBody); //将通知消息解析为jsonObj    var eventType = jsonObj.eventType; //通知事件类型    if ('fee' === eventType) {        console.log('EventType error:', eventType);        return;    }    if (!jsonObj.hasOwnProperty('statusInfo')) {        console.log('param error: no statusInfo.');        return;    }    var statusInfo = jsonObj.statusInfo; //呼叫状态事件信息    console.log('eventType:', eventType); //打印通知事件类型    //callout:呼出事件    if ('callout' === eventType) {        /**         * Example: 此处以解析sessionId为例,请按需解析所需参数并自行实现相关处理         *         * 'timestamp': 该呼叫事件发生时RTC业务平台的UNIX时间戳         * 'userData': 用户附属信息         * 'sessionId': 通话链路的标识ID         * 'caller': 主叫号码         * 'called': 被叫号码         */        if (statusInfo.hasOwnProperty('sessionId')) {            console.log('sessionId:', statusInfo.sessionId);        }        return;    }    //alerting:振铃事件    if ('alerting' === eventType) {        /**         * Example: 此处以解析sessionId为例,请按需解析所需参数并自行实现相关处理         *         * 'timestamp': 该呼叫事件发生时RTC业务平台的UNIX时间戳         * 'userData': 用户附属信息         * 'sessionId': 通话链路的标识ID         * 'caller': 主叫号码         * 'called': 被叫号码         */        if (statusInfo.hasOwnProperty('sessionId')) {            console.log('sessionId:', statusInfo.sessionId);        }        return;    }    //answer:应答事件    if ('answer' === eventType) {        /**         * Example: 此处以解析sessionId为例,请按需解析所需参数并自行实现相关处理         *         * 'timestamp': 该呼叫事件发生时RTC业务平台的UNIX时间戳         * 'userData': 用户附属信息         * 'sessionId': 通话链路的标识ID         * 'caller': 主叫号码         * 'called': 被叫号码         */        if (statusInfo.hasOwnProperty('sessionId')) {            console.log('sessionId:', statusInfo.sessionId);        }        return;    }    //collectInfo:放音收号结果事件,仅应用于语音通知场景    if ('collectInfo' === eventType) {        /**         * Example: 此处以解析digitInfo为例,请按需解析所需参数并自行实现相关处理         *         * 'timestamp': 该呼叫事件发生时RTC业务平台的UNIX时间戳         * 'sessionId': 通话链路的标识ID         * 'digitInfo': 放音收号场景中,RTC业务平台对开发者进行放音收号操作的结果描述         */        if (statusInfo.hasOwnProperty('digitInfo')) {            console.log('digitInfo:', statusInfo.digitInfo);        }        return;    }    //disconnect:挂机事件    if ('disconnect' === eventType) {        /**         * Example: 此处以解析sessionId为例,请按需解析所需参数并自行实现相关处理         *         * 'timestamp': 该呼叫事件发生时RTC业务平台的UNIX时间戳         * 'userData': 用户附属信息         * 'sessionId': 通话链路的标识ID         * 'caller': 主叫号码         * 'called': 被叫号码         * 'partyType': 挂机的用户类型,仅在语音回呼场景携带         * 'stateCode': 通话挂机的原因值         * 'stateDesc': 通话挂机的原因值的描述         */        if (statusInfo.hasOwnProperty('sessionId')) {            console.log('sessionId:', statusInfo.sessionId);        }        return;    }}//呼叫事件处理onCallEvent(jsonBody); 
support.huaweicloud.com/devg-VoiceCall/rtc_04_0017.html