diff --git a/lib/session/call-session.js b/lib/session/call-session.js index d929b0f0..06ee486d 100644 --- a/lib/session/call-session.js +++ b/lib/session/call-session.js @@ -2351,6 +2351,12 @@ Duration=${duration} ` try { const to = parseUri(req.getParsedHeader('Refer-To').uri); const by = parseUri(req.getParsedHeader('Referred-By').uri); + const customHeaders = Object.keys(req.headers) + .filter((h) => h.toLowerCase().startsWith('x-')) + .reduce((acc, h) => { + acc[h] = req.get(h); + return acc; + }, {}); const b3 = this.b3; const httpHeaders = b3 && {b3}; const json = await this.requestor.request('verb:hook', this._referHook, { @@ -2363,6 +2369,7 @@ Duration=${duration} ` referred_by_user: by.scheme === 'tel' ? by.number : by.user, referring_call_sid: this.callSid, referred_call_sid: null, + ...customHeaders } }, httpHeaders); diff --git a/lib/tasks/dial.js b/lib/tasks/dial.js index 05e7cb32..8d5e3792 100644 --- a/lib/tasks/dial.js +++ b/lib/tasks/dial.js @@ -361,6 +361,12 @@ class TaskDial extends Task { const by = parseUri(req.getParsedHeader('Referred-By').uri); const referredBy = req.get('Referred-By'); const userAgent = req.get('User-Agent'); + const customHeaders = Object.keys(req.headers) + .filter((h) => h.toLowerCase().startsWith('x-')) + .reduce((acc, h) => { + acc[h] = req.get(h); + return acc; + }, {}); this.logger.info({to}, 'refer to parsed'); const json = await cs.requestor.request('verb:hook', this.referHook, { ...(callInfo.toJSON()), @@ -371,7 +377,8 @@ class TaskDial extends Task { ...(userAgent && {sip_user_agent: userAgent}), ...(by && {referred_by_user: by.scheme === 'tel' ? by.number : by.user}), referring_call_sid, - referred_call_sid + referred_call_sid, + ...customHeaders } }, httpHeaders); if (json && Array.isArray(json)) {