云服务器内容精选

  • “呼叫状态通知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);
  • “语音通知场景API”代码样例 /*jshint esversion: 6 */var https = require('https');var data = require('./data.js');var util = require('./reqUtil.js');/** * voiceNotifyAPI * @param displayNbr * @param calleeNbr * @param playInfoList * @returns */function voiceNotifyAPI(displayNbr, calleeNbr, playInfoList) { if(displayNbr === undefined || displayNbr === null || calleeNbr === undefined || calleeNbr === null) { return; } if(playInfoList === undefined || playInfoList === null) { return; } var method = 'POST'; var uri = '/rest/httpsessions/callnotify/v2.0'; //v1.0 or v2.0 var xaksk = util.buildAKSKHeader(data.data.callnotify_appid, data.data.callnotify_secret); var options = util.createOptions(method, uri, null, xaksk); var body = { /* 必填参数 */ 'displayNbr': displayNbr,//主叫用户手机终端的来电显示号码。 'calleeNbr': calleeNbr,//被叫用户终端的来电显示号码。 'playInfoList': playInfoList//播放信息列表,最大支持5个,每个播放信息携带的参数都可以不相同。 /* 选填参数 */// 'bindNbr': '+86123456789', //CallEnabler业务号码,即绑定号码// 'statusUrl': 'aHR0cDovLzIxOC40LjMzLjU1Ojg4ODgvdGVzdA==', //要获取通话状态需要在请求中加入statusUrl// 'feeUrl': 'aHR0cDovLzIxOC40LjMzLjU1Ojg4ODgvdGVzdA==', //要获取话单需要在请求中加入feeUrl// 'returnIdlePort': 'false', //指示是否需要返回平台空闲呼叫端口数量// 'userData': 'customerId123' //设置用户的附属信息 }; var req = https.request(options, function (res) { var resHeaders = JSON.stringify(res.headers); res.setEncoding('utf8'); res.on('data', function (chunk) { console.log(chunk); }); }); req.on('error', function(e) { console.error('problem with request: ' + e); }); console.log(JSON.stringify(body)); req.write(JSON.stringify(body)); req.end();}/** * getPlayInfoList * @param notifyVoice * @param templateId * @param templateParas * @returns */function getPlayInfoList(notifyVoice, templateId, templateParas) { var playInfoList = [{ 'notifyVoice': notifyVoice,//通知语音的放音文件名 'templateId': templateId,//语音通知模板ID,用于唯一标识语音通知模板。 'templateParas': templateParas,//语音通知模板的变量值列表,用于依次填充templateId参数指定的模板内容中的变量。// 'collectInd': 0, //是否进行收号// 'replayAfterCollection': 'false', //设置是否在收号后重新播放notifyVoice或templateId指定的放音// 'collectContentTriggerReplaying': '1' //设置触发重新放音的收号内容 }]; return playInfoList;}var playInfoList = getPlayInfoList('notifyvoice.wav', 'xxxxxx', ['3', '人民公园正门']);voiceNotifyAPI('+8653159511234', '+8613500000001', playInfoList);