support for X-Override-To

This commit is contained in:
Dave Horton
2020-12-09 18:05:59 -05:00
parent c25df2ad7e
commit d255339dac
3 changed files with 10 additions and 3 deletions

View File

@@ -138,7 +138,7 @@ module.exports = function(srf, logger) {
if (0 === app.tasks.length) throw new Error('no application provided'); if (0 === app.tasks.length) throw new Error('no application provided');
next(); next();
} catch (err) { } catch (err) {
logger.info(`Error retrieving or parsing application: ${err.message}`); logger.info({err}, `Error retrieving or parsing application: ${err.message}`);
res.send(480, {headers: {'X-Reason': err.message}}); res.send(480, {headers: {'X-Reason': err.message}});
} }
} }

View File

@@ -237,7 +237,8 @@
"sipUri": "string", "sipUri": "string",
"auth": "#auth", "auth": "#auth",
"vmail": "boolean", "vmail": "boolean",
"tenant": "string" "tenant": "string",
"overrideTo": "string"
}, },
"required": [ "required": [
"type" "type"

View File

@@ -59,6 +59,7 @@ class SingleDialer extends Emitter {
async exec(srf, ms, opts) { async exec(srf, ms, opts) {
opts = opts || {}; opts = opts || {};
opts.headers = opts.headers || {};
let uri, to; let uri, to;
try { try {
switch (this.target.type) { switch (this.target.type) {
@@ -69,7 +70,6 @@ class SingleDialer extends Emitter {
to = this.target.number; to = this.target.number;
if ('teams' === this.target.type) { if ('teams' === this.target.type) {
assert(this.target.teamsInfo); assert(this.target.teamsInfo);
opts.headers = opts.headers || {};
Object.assign(opts.headers, { Object.assign(opts.headers, {
'X-MS-Teams-FQDN': this.target.teamsInfo.ms_teams_fqdn, 'X-MS-Teams-FQDN': this.target.teamsInfo.ms_teams_fqdn,
'X-MS-Teams-Tenant-FQDN': this.target.teamsInfo.tenant_fqdn 'X-MS-Teams-Tenant-FQDN': this.target.teamsInfo.tenant_fqdn
@@ -83,6 +83,12 @@ class SingleDialer extends Emitter {
uri = `sip:${this.target.name}`; uri = `sip:${this.target.name}`;
to = this.target.name; to = this.target.name;
if (this.target.overrideTo) {
Object.assign(opts.headers, {
'X-Override-To': this.target.overrideTo
});
}
// need to send to the SBC registered on // need to send to the SBC registered on
const reg = await registrar.query(aor); const reg = await registrar.query(aor);
if (reg) { if (reg) {