Dial: fix error when receiving a REFER without a Referred-By header (#954)

This commit is contained in:
Dave Horton
2024-10-30 13:01:36 -04:00
committed by GitHub
parent 4b5df855e1
commit 1efb198f72

View File

@@ -340,15 +340,17 @@ class TaskDial extends Task {
const to = parseUri(req.getParsedHeader('Refer-To').uri); const to = parseUri(req.getParsedHeader('Refer-To').uri);
const by = parseUri(req.getParsedHeader('Referred-By').uri); const by = parseUri(req.getParsedHeader('Referred-By').uri);
const referredBy = req.get('Referred-By');
const userAgent = req.get('User-Agent');
this.logger.info({to}, 'refer to parsed'); this.logger.info({to}, 'refer to parsed');
const json = await cs.requestor.request('verb:hook', this.referHook, { const json = await cs.requestor.request('verb:hook', this.referHook, {
...(callInfo.toJSON()), ...(callInfo.toJSON()),
refer_details: { refer_details: {
sip_refer_to: req.get('Refer-To'), sip_refer_to: req.get('Refer-To'),
sip_referred_by: req.get('Referred-By'),
sip_user_agent: req.get('User-Agent'),
refer_to_user: to.scheme === 'tel' ? to.number : to.user, refer_to_user: to.scheme === 'tel' ? to.number : to.user,
referred_by_user: by.scheme === 'tel' ? by.number : by.user, ...(referredBy && {sip_referred_by: referredBy}),
...(userAgent && {sip_user_agent: userAgent}),
...(by && {referred_by_user: by.scheme === 'tel' ? by.number : by.user}),
referring_call_sid, referring_call_sid,
referred_call_sid referred_call_sid
} }
@@ -379,6 +381,7 @@ class TaskDial extends Task {
res.send(202); res.send(202);
this.logger.info('DialTask:handleRefer - sent 202 Accepted'); this.logger.info('DialTask:handleRefer - sent 202 Accepted');
} catch (err) { } catch (err) {
this.logger.info({err}, 'DialTask:handleRefer - error processing incoming REFER');
res.send(err.statusCode || 501); res.send(err.statusCode || 501);
} }
} }