更新时间:2025-08-11 GMT+08:00
分享

公共依赖

使用样例时需要引用以下依赖文件:

data.js

exports.data = {
    //base_url(APP接入地址)、appid、secret,购买服务时下发,请替换为实际值
    /* please replace the appId and secret, when you use the demo. */
    click2call_appid: "*****",
    click2call_secret: "*****",
    
    callnotify_appid: "*****",
    callnotify_secret: "*****",
    
    callverify_appid: "*****",
    callverify_secret: "*****",
        
    t_transmit_appid: "*****",
    t_transmit_secret: "*****",
    
    /* please replace the IP and Port, when you use the demo. */
    base_url: 'https://{domain}:{port}'
};

reqUtil.js

/*jshint esversion: 6 */
var data = require('./data.js');
var url = require('url'); 
/**
 * Build the X-AKSK value.
 * @param appKey
 * @param appSecret
 * @returns
 */
function buildAKSKHeader(appKey, appSecret){
    var crypto = require('crypto');
    var util = require('util');
    var time = new Date(Date.now()).toISOString().replace(/.[0-9]+\Z/, 'Z'); //Created
    var nonce = crypto.randomBytes(16).toString('hex'); //Nonce
    var passwordDigestBase64Str = crypto.createHmac('sha256', appSecret).update(nonce + time).digest('base64'); //PasswordDigest
    return util.format('UsernameToken Username="%s",PasswordDigest="%s",Nonce="%s",Created="%s"', appKey, passwordDigestBase64Str, nonce, time);
}
/**
 * Build the options value.
 * @param method
 * @param uri
 * @param queryParams
 * @param xaksk
 * @returns
 */
function createOptions(method, uri, queryParams, xaksk){
    if(method === undefined || method === null){
        return;
    }
    var path;
    if(queryParams === undefined || queryParams === null){
        path = uri;
    } else {
        path = uri + '?' + queryParams;
    }
    var headers = {
            'Content-Type': 'application/json; charset=UTF-8',
            'Authorization': 'AKSK realm="SDP",profile="UsernameToken",type="Appkey"',
            'X-AKSK': xaksk
         };
    var urlobj = url.parse(data.data.base_url);
    var options = {
            host: urlobj.hostname,
            port: urlobj.port,
            path: path,
            method: method,
            headers: headers,
            strictSSL: false,
            rejectUnauthorized: false
    };
    return options;
}
module.exports = {
        buildAKSKHeader,
        createOptions
};

相关文档