云服务器内容精选
-
“语音回呼场景API”代码样例 /*jshint esversion: 6 */var https = require('https');var data = require('./data.js');var util = require('./reqUtil.js');var record = require('./getRecordLink.js');/** * voiceCallAPI * @param displayNbr * @param callerNbr * @param displayCalleeNbr * @param calleeNbr * @returns */function voiceCallAPI(displayNbr, callerNbr, displayCalleeNbr, calleeNbr) { if(displayNbr === undefined || displayNbr === null || callerNbr === undefined || callerNbr === null) { return; } if(displayCalleeNbr === undefined || displayCalleeNbr === null || calleeNbr === undefined || calleeNbr === null) { return; } var method = 'POST'; var uri = '/rest/httpsessions/click2Call/v2.0'; var xaksk = util.buildAKSKHeader(data.data.click2call_appid, data.data.click2call_secret); var options = util.createOptions(method, uri, null, xaksk); var body = { /* 必填参数 */ 'displayNbr': displayNbr,//主叫用户手机终端的来电显示号码。 'callerNbr': callerNbr,//发起呼叫时所使用的主叫号码。 'displayCalleeNbr': displayCalleeNbr,//被叫用户终端的来电显示号码。 'calleeNbr': calleeNbr//发起呼叫时所拨打的被叫号码。 /* 选填参数 */// 'bindNbr': '+86123456789', //CallEnabler业务号码,即绑定号码// 'maxDuration': 0, //允许单次通话进行的最长时间// 'lastMinVoice': 'lastmin_voice1.wav', //最后一分钟放音提示音// 'lastMinToUE': 'both', //最后一分钟放音的播放对象// 'playPreVoice': 'false', //设置主叫(callerNbr)应答语音回呼后,呼叫被叫(calleeNbr)前,是否向主叫(callerNbr)播放提示音// 'preVoice': 'pre_voice1.wav', //设置主叫(callerNbr)应答语音回呼后,呼叫被叫(calleeNbr)前向主叫播放的提示音// 'waitVoice': 'wait_voice1.wav', //设置主叫应答语音回呼后的等待音// 'calleeMedia': 'all', //指定被叫的媒体音播放方式// 'statusUrl': 'aHR0cDovLzIxOC40LjMzLjU1Ojg4ODgvdGVzdA==', //要获取通话状态需要在请求中加入statusUrl// 'feeUrl': 'aHR0cDovLzIxOC40LjMzLjU1Ojg4ODgvdGVzdA==', //要获取话单需要在请求中加入feeUrl// 'recordFlag': 'false', //与调测信息中的recordFlag保持一致// 'recordHintTone': 'recordhint_voice1.wav', //设置使用录音功能的提示音// 'partyTypeRequiredInDisconnect': 'false', //disconnect状态是否需要携带通话主动挂机的用户类型// '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();}voiceCallAPI('+8653159511234', '+8613500000001', '+8653159511234', '+8613500000002');var xaksk = util.buildAKSKHeader(data.data.click2call_appid, data.data.click2call_secret);var location = record.getRecordLinkAPI('1200_366_0_20161228102743.wav', 'ostor.huawei.com', xaksk);console.log('The record file download link is: ' + location);
-
“呼叫状态通知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 util = require('./reqUtil.js');var querystring = require('querystring');/** * Get the download link of record file. * @param fileName record file name * @param recordDomain domain name of record file restore server * @returns */function getRecordLinkAPI(fileName, recordDomain, xaksk) { if(fileName === undefined || fileName === null || recordDomain === undefined || recordDomain === null){ return; } if(xaksk === undefined || xaksk === null){ return; } var location; var method = 'GET'; var uri = '/rest/provision/voice/record/v1.0'; var queryParams = querystring.stringify({'fileName': fileName, 'recordDomain': recordDomain}); var options = util.createOptions(method, uri, queryParams, xaksk); var req = https.request(options, function (res) { if(301 === res.statusCode){ location = Object.getOwnPropertyDescriptor(res.headers, 'location').value; } var resHeaders = JSON.stringify(res.headers); res.setEncoding('utf8'); res.on('data', function (chunk) { console.log('resp:', chunk); //打印响应数据 }); }); req.on('error', function(e) { console.error('problem with request: ' + e); //打印错误信息 }); req.end(); //结束请求 return location;}module.exports = { getRecordLinkAPI};
更多精彩内容
CDN加速
GaussDB
文字转换成语音
免费的服务器
如何创建网站
域名网站购买
私有云桌面
云主机哪个好
域名怎么备案
手机云电脑
SSL证书申请
云点播服务器
免费OCR是什么
电脑云桌面
域名备案怎么弄
语音转文字
文字图片识别
云桌面是什么
网址安全检测
网站建设搭建
国外CDN加速
SSL免费证书申请
短信批量发送
图片OCR识别
云数据库MySQL
个人域名购买
录音转文字
扫描图片识别文字
OCR图片识别
行驶证识别
虚拟电话号码
电话呼叫中心软件
怎么制作一个网站
Email注册网站
华为VNC
图像文字识别
企业网站制作
个人网站搭建
华为云计算
免费租用云托管
云桌面云服务器
ocr文字识别免费版
HTTPS证书申请
图片文字识别转换
国外域名注册商
使用免费虚拟主机
云电脑主机多少钱
鲲鹏云手机
短信验证码平台
OCR图片文字识别
SSL证书是什么
申请企业邮箱步骤
免费的企业用邮箱
云免流搭建教程
域名价格