mirror of
https://github.com/jambonz/jambonz-feature-server.git
synced 2026-02-15 02:39:35 +00:00
support referTo with tel: prefix (#1297)
* support referTo with tel: prefix * fix review comment
This commit is contained in:
@@ -111,7 +111,12 @@ class TaskSipRefer extends Task {
|
|||||||
/* get IP address of the SBC to use as hostname if needed */
|
/* get IP address of the SBC to use as hostname if needed */
|
||||||
const {host} = parseUri(dlg.remote.uri);
|
const {host} = parseUri(dlg.remote.uri);
|
||||||
|
|
||||||
if (!referTo.startsWith('<') && !referTo.startsWith('sip') && !referTo.startsWith('"')) {
|
if (
|
||||||
|
!referTo.startsWith('<') &&
|
||||||
|
!referTo.startsWith('sip:') &&
|
||||||
|
!referTo.startsWith('"') &&
|
||||||
|
!referTo.startsWith('tel:')
|
||||||
|
) {
|
||||||
/* they may have only provided a phone number/user */
|
/* they may have only provided a phone number/user */
|
||||||
referTo = `sip:${referTo}@${host}`;
|
referTo = `sip:${referTo}@${host}`;
|
||||||
}
|
}
|
||||||
@@ -124,7 +129,12 @@ class TaskSipRefer extends Task {
|
|||||||
if (!referredByDisplayName) {
|
if (!referredByDisplayName) {
|
||||||
referredByDisplayName = cs.req?.callingName;
|
referredByDisplayName = cs.req?.callingName;
|
||||||
}
|
}
|
||||||
if (!referredBy.startsWith('<') && !referredBy.startsWith('sip') && !referredBy.startsWith('"')) {
|
if (
|
||||||
|
!referredBy.startsWith('<') &&
|
||||||
|
!referredBy.startsWith('sip:') &&
|
||||||
|
!referredBy.startsWith('"') &&
|
||||||
|
!referredBy.startsWith('tel:')
|
||||||
|
) {
|
||||||
/* they may have only provided a phone number/user */
|
/* they may have only provided a phone number/user */
|
||||||
referredBy = `${referredByDisplayName ? `"${referredByDisplayName}"` : ''}<sip:${referredBy}@${host}>`;
|
referredBy = `${referredByDisplayName ? `"${referredByDisplayName}"` : ''}<sip:${referredBy}@${host}>`;
|
||||||
}
|
}
|
||||||
|
|||||||
1
package-lock.json
generated
1
package-lock.json
generated
@@ -8630,6 +8630,7 @@
|
|||||||
},
|
},
|
||||||
"node_modules/unix-dgram": {
|
"node_modules/unix-dgram": {
|
||||||
"version": "2.0.6",
|
"version": "2.0.6",
|
||||||
|
"hasInstallScript": true,
|
||||||
"license": "ISC",
|
"license": "ISC",
|
||||||
"optional": true,
|
"optional": true,
|
||||||
"dependencies": {
|
"dependencies": {
|
||||||
|
|||||||
@@ -58,6 +58,46 @@ test('\'refer\' tests w/202 and NOTIFY', {timeout: 25000}, async(t) => {
|
|||||||
}
|
}
|
||||||
});
|
});
|
||||||
|
|
||||||
|
test('\'refer\' tests tel:', {timeout: 25000}, async(t) => {
|
||||||
|
clearModule.all();
|
||||||
|
const {srf, disconnect} = require('../app');
|
||||||
|
|
||||||
|
try {
|
||||||
|
await connect(srf);
|
||||||
|
|
||||||
|
// GIVEN
|
||||||
|
const verbs = [
|
||||||
|
{
|
||||||
|
verb: 'say',
|
||||||
|
text: 'silence_stream://100'
|
||||||
|
},
|
||||||
|
{
|
||||||
|
verb: 'sip:refer',
|
||||||
|
referTo: 'tel:+1234567890',
|
||||||
|
actionHook: '/actionHook'
|
||||||
|
}
|
||||||
|
];
|
||||||
|
const noVerbs = [];
|
||||||
|
|
||||||
|
const from = 'refer_with_tel';
|
||||||
|
await provisionCallHook(from, verbs);
|
||||||
|
await provisionActionHook(from, noVerbs)
|
||||||
|
|
||||||
|
// THEN
|
||||||
|
await sippUac('uac-refer-with-notify.xml', '172.38.0.10', from);
|
||||||
|
t.pass('refer: successfully received 202 Accepted');
|
||||||
|
await sleepFor(1000);
|
||||||
|
const obj = await getJSON(`http:127.0.0.1:3100/lastRequest/${from}_actionHook`);
|
||||||
|
t.ok(obj.body.final_referred_call_status === 200, 'refer: successfully received NOTIFY with 200 OK');
|
||||||
|
// console.log(`obj: ${JSON.stringify(obj)}`);
|
||||||
|
disconnect();
|
||||||
|
} catch (err) {
|
||||||
|
console.log(`error received: ${err}`);
|
||||||
|
disconnect();
|
||||||
|
t.error(err);
|
||||||
|
}
|
||||||
|
});
|
||||||
|
|
||||||
test('\'refer\' tests w/202 but no NOTIFY', {timeout: 25000}, async(t) => {
|
test('\'refer\' tests w/202 but no NOTIFY', {timeout: 25000}, async(t) => {
|
||||||
clearModule.all();
|
clearModule.all();
|
||||||
const {srf, disconnect} = require('../app');
|
const {srf, disconnect} = require('../app');
|
||||||
|
|||||||
Reference in New Issue
Block a user