mirror of
https://github.com/jambonz/jambonz-feature-server.git
synced 2025-12-21 17:17:58 +00:00
feat: add metadata to create call as tag
This commit is contained in:
@@ -197,7 +197,8 @@ router.post('/', async(req, res) => {
|
||||
callSid,
|
||||
accountSid: req.body.account_sid,
|
||||
applicationSid: app.application_sid,
|
||||
traceId: rootSpan.traceId
|
||||
traceId: rootSpan.traceId,
|
||||
metadata: req.body.metadata
|
||||
});
|
||||
cs = new RestCallSession({
|
||||
logger: sipLogger,
|
||||
|
||||
@@ -13,6 +13,7 @@ class CallInfo {
|
||||
this.direction = opts.direction;
|
||||
this.traceId = opts.traceId;
|
||||
this.callTerminationBy = undefined;
|
||||
this.metadata = opts.metadata;
|
||||
if (opts.req) {
|
||||
const u = opts.req.getParsedHeader('from');
|
||||
const uri = parseUri(u.uri);
|
||||
@@ -91,6 +92,7 @@ class CallInfo {
|
||||
this.from = from || req.callingNumber;
|
||||
this.to = to;
|
||||
if (tag) this._customerData = tag;
|
||||
if (this.metadata) this._customerData = {...this._customerData , ...this.metadata}
|
||||
}
|
||||
|
||||
this.localSipAddress = srf.locals.localSipAddress;
|
||||
|
||||
@@ -1,50 +1,51 @@
|
||||
const test = require('tape');
|
||||
const { sippUac } = require('./sipp')('test_fs');
|
||||
const bent = require('bent');
|
||||
const clearModule = require('clear-module');
|
||||
const {provisionCallHook} = require('./utils')
|
||||
const getJSON = bent('json')
|
||||
const test = require("tape");
|
||||
const { sippUac } = require("./sipp")("test_fs");
|
||||
const bent = require("bent");
|
||||
const clearModule = require("clear-module");
|
||||
const { provisionCallHook } = require("./utils");
|
||||
const getJSON = bent("json");
|
||||
|
||||
const waitFor = (ms) => new Promise((resolve) => setTimeout(resolve, ms));
|
||||
|
||||
process.on('unhandledRejection', (reason, p) => {
|
||||
console.log('Unhandled Rejection at: Promise', p, 'reason:', reason);
|
||||
process.on("unhandledRejection", (reason, p) => {
|
||||
console.log("Unhandled Rejection at: Promise", p, "reason:", reason);
|
||||
});
|
||||
|
||||
function connect(connectable) {
|
||||
return new Promise((resolve, reject) => {
|
||||
connectable.on('connect', () => {
|
||||
connectable.on("connect", () => {
|
||||
return resolve();
|
||||
});
|
||||
});
|
||||
}
|
||||
|
||||
test('test create-call timeout', async(t) => {
|
||||
test("test create-call timeout", async (t) => {
|
||||
clearModule.all();
|
||||
const {srf, disconnect} = require('../app');
|
||||
const { srf, disconnect } = require("../app");
|
||||
|
||||
try {
|
||||
await connect(srf);
|
||||
|
||||
// give UAS app time to come up
|
||||
const p = sippUac('uas-timeout-cancel.xml', '172.38.0.10');
|
||||
const p = sippUac("uas-timeout-cancel.xml", "172.38.0.10");
|
||||
await waitFor(1000);
|
||||
|
||||
// GIVEN
|
||||
let account_sid = '622f62e4-303a-49f2-bbe0-eb1e1714e37a';
|
||||
const post = bent('http://127.0.0.1:3000/', 'POST', 'json', 201);
|
||||
post('v1/createCall', {
|
||||
'account_sid':account_sid,
|
||||
'timeout': 1,
|
||||
"call_hook": {
|
||||
"url": "https://public-apps.jambonz.us/hello-world",
|
||||
"method": "POST"
|
||||
let account_sid = "622f62e4-303a-49f2-bbe0-eb1e1714e37a";
|
||||
const post = bent("http://127.0.0.1:3000/", "POST", "json", 201);
|
||||
post("v1/createCall", {
|
||||
account_sid: account_sid,
|
||||
timeout: 1,
|
||||
call_hook: {
|
||||
url: "https://public-apps.jambonz.us/hello-world",
|
||||
method: "POST",
|
||||
},
|
||||
"from": "15083718299",
|
||||
"to": {
|
||||
"type": "phone",
|
||||
"number": "15583084809"
|
||||
}});
|
||||
from: "15083718299",
|
||||
to: {
|
||||
type: "phone",
|
||||
number: "15583084809",
|
||||
},
|
||||
});
|
||||
//THEN
|
||||
await p;
|
||||
disconnect();
|
||||
@@ -55,50 +56,69 @@ test('test create-call timeout', async(t) => {
|
||||
}
|
||||
});
|
||||
|
||||
test('test create-call call-hook basic authentication', async(t) => {
|
||||
test("test create-call call-hook basic authentication", async (t) => {
|
||||
clearModule.all();
|
||||
const {srf, disconnect} = require('../app');
|
||||
const { srf, disconnect } = require("../app");
|
||||
|
||||
try {
|
||||
await connect(srf);
|
||||
|
||||
|
||||
// GIVEN
|
||||
let from = 'call_hook_basic_authentication';
|
||||
let account_sid = '622f62e4-303a-49f2-bbe0-eb1e1714e37a';
|
||||
let from = "call_hook_basic_authentication";
|
||||
let account_sid = "622f62e4-303a-49f2-bbe0-eb1e1714e37a";
|
||||
|
||||
// Give UAS app time to come up
|
||||
const p = sippUac('uas.xml', '172.38.0.10', from);
|
||||
const p = sippUac("uas.xml", "172.38.0.10", from);
|
||||
await waitFor(1000);
|
||||
|
||||
const post = bent('http://127.0.0.1:3000/', 'POST', 'json', 201);
|
||||
post('v1/createCall', {
|
||||
'account_sid':account_sid,
|
||||
"call_hook": {
|
||||
"url": "http://127.0.0.1:3100/",
|
||||
"method": "POST",
|
||||
"username": "username",
|
||||
"password": "password"
|
||||
const post = bent("http://127.0.0.1:3000/", "POST", "json", 201);
|
||||
post("v1/createCall", {
|
||||
account_sid: account_sid,
|
||||
call_hook: {
|
||||
url: "http://127.0.0.1:3100/",
|
||||
method: "POST",
|
||||
username: "username",
|
||||
password: "password",
|
||||
},
|
||||
"from": from,
|
||||
"to": {
|
||||
"type": "phone",
|
||||
"number": "15583084809"
|
||||
}});
|
||||
call_status_hook: {
|
||||
url: "http://127.0.0.1:3100/callStatus",
|
||||
method: "POST",
|
||||
},
|
||||
from: from,
|
||||
to: {
|
||||
type: "phone",
|
||||
number: "15583084809",
|
||||
},
|
||||
metadata: {
|
||||
customer: "acme",
|
||||
referenceId: "deadbeef",
|
||||
},
|
||||
});
|
||||
|
||||
let verbs = [
|
||||
{
|
||||
"verb": "say",
|
||||
"text": "hello"
|
||||
}
|
||||
verb: "say",
|
||||
text: "hello",
|
||||
},
|
||||
];
|
||||
provisionCallHook(from, verbs);
|
||||
//THEN
|
||||
await p;
|
||||
|
||||
let obj = await getJSON(`http:127.0.0.1:3100/lastRequest/${from}`)
|
||||
t.ok(obj.headers.Authorization = 'Basic dXNlcm5hbWU6cGFzc3dvcmQ=',
|
||||
'create-call: call-hook contains basic authentication header');
|
||||
let obj = await getJSON(`http:127.0.0.1:3100/lastRequest/${from}`);
|
||||
t.ok(
|
||||
(obj.headers.Authorization === "Basic dXNlcm5hbWU6cGFzc3dvcmQ="),
|
||||
"create-call: call-hook contains basic authentication header"
|
||||
);
|
||||
t.ok(
|
||||
(obj.customerData.customer === 'acme'),
|
||||
"create-call: metadata is working"
|
||||
);
|
||||
obj = await getJSON(`http:127.0.0.1:3100/lastRequest/${from}_callStatus`);
|
||||
t.ok(
|
||||
(obj.customerData.customer === 'acme'),
|
||||
"create-call: metadata is working"
|
||||
);
|
||||
disconnect();
|
||||
} catch (err) {
|
||||
console.log(`error received: ${err}`);
|
||||
|
||||
Reference in New Issue
Block a user