mirror of
https://github.com/jambonz/sbc-outbound.git
synced 2026-01-25 02:07:59 +00:00
Recording update (#212)
* if call hasRecording then add url to cdr * handle missing hasRecording value in redis * typo * lint * use nullish coalescing for null response * typo
This commit is contained in:
@@ -110,6 +110,7 @@ class CallSession extends Emitter {
|
|||||||
this.decrKey = req.srf.locals.realtimeDbHelpers.decrKey;
|
this.decrKey = req.srf.locals.realtimeDbHelpers.decrKey;
|
||||||
this.addKey = req.srf.locals.realtimeDbHelpers.addKey;
|
this.addKey = req.srf.locals.realtimeDbHelpers.addKey;
|
||||||
this.retrieveKey = req.srf.locals.realtimeDbHelpers.retrieveKey;
|
this.retrieveKey = req.srf.locals.realtimeDbHelpers.retrieveKey;
|
||||||
|
this.retrieveHash = req.srf.locals.realtimeDbHelpers.retrieveHash;
|
||||||
|
|
||||||
const {
|
const {
|
||||||
lookupOutboundCarrierForAccount,
|
lookupOutboundCarrierForAccount,
|
||||||
@@ -723,10 +724,13 @@ class CallSession extends Emitter {
|
|||||||
if (this.req.locals.cdr) {
|
if (this.req.locals.cdr) {
|
||||||
const now = Date.now();
|
const now = Date.now();
|
||||||
const day = new Date();
|
const day = new Date();
|
||||||
const recordAllCalls = this.req.locals.record_all_calls;
|
// eslint-disable-next-line max-len
|
||||||
|
const {hasRecording = false} = await this.retrieveHash(`call:${this.account_sid}:${this.req.locals.cdr.call_sid}`) ?? {};
|
||||||
|
const recordAllCalls = this.req.locals.record_all_calls || hasRecording;
|
||||||
|
const record_format = this.req.locals.account.record_format || 'mp3';
|
||||||
let recording_url = `/Accounts/${this.account_sid}/RecentCalls/${this.req.locals.cdr.call_sid}/record`;
|
let recording_url = `/Accounts/${this.account_sid}/RecentCalls/${this.req.locals.cdr.call_sid}/record`;
|
||||||
recording_url += `/${day.getFullYear()}/${(day.getMonth() + 1).toString().padStart(2, '0')}`;
|
recording_url += `/${day.getFullYear()}/${(day.getMonth() + 1).toString().padStart(2, '0')}`;
|
||||||
recording_url += `/${day.getDate().toString().padStart(2, '0')}/${recordAllCalls}`;
|
recording_url += `/${day.getDate().toString().padStart(2, '0')}/${record_format}`;
|
||||||
this.writeCdrs({...this.req.locals.cdr,
|
this.writeCdrs({...this.req.locals.cdr,
|
||||||
terminated_at: now,
|
terminated_at: now,
|
||||||
termination_reason: dlg.type === 'uas' ? 'caller hungup' : 'called party hungup',
|
termination_reason: dlg.type === 'uas' ? 'caller hungup' : 'called party hungup',
|
||||||
@@ -1208,7 +1212,6 @@ Duration=${payload.duration} `
|
|||||||
...(req.has('X-Retain-Call-Sid') && {'X-Retain-Call-Sid': req.get('X-Retain-Call-Sid')}),
|
...(req.has('X-Retain-Call-Sid') && {'X-Retain-Call-Sid': req.get('X-Retain-Call-Sid')}),
|
||||||
...(req.has('X-Account-Sid') && {'X-Account-Sid': req.get('X-Account-Sid')})
|
...(req.has('X-Account-Sid') && {'X-Account-Sid': req.get('X-Account-Sid')})
|
||||||
};
|
};
|
||||||
|
|
||||||
const uac = await this.srf.createUAC(referTo.uri, {localSdp: dlg.local.sdp, headers});
|
const uac = await this.srf.createUAC(referTo.uri, {localSdp: dlg.local.sdp, headers});
|
||||||
this.uas = uac;
|
this.uas = uac;
|
||||||
uac.type = 'uas';
|
uac.type = 'uas';
|
||||||
@@ -1217,7 +1220,7 @@ Duration=${payload.duration} `
|
|||||||
uac.on('info', this._onInfo.bind(this, uac));
|
uac.on('info', this._onInfo.bind(this, uac));
|
||||||
uac.on('modify', this._onReinvite.bind(this, uac));
|
uac.on('modify', this._onReinvite.bind(this, uac));
|
||||||
uac.on('refer', this._onFeatureServerTransfer.bind(this, uac));
|
uac.on('refer', this._onFeatureServerTransfer.bind(this, uac));
|
||||||
uac.on('destroy', () => {
|
uac.on('destroy', async() => {
|
||||||
this.logger.info('call ended with normal termination');
|
this.logger.info('call ended with normal termination');
|
||||||
this.rtpEngineResource.destroy();
|
this.rtpEngineResource.destroy();
|
||||||
this.activeCallIds.delete(this.req.get('Call-ID'));
|
this.activeCallIds.delete(this.req.get('Call-ID'));
|
||||||
@@ -1226,10 +1229,13 @@ Duration=${payload.duration} `
|
|||||||
if (this.req.locals.cdr) {
|
if (this.req.locals.cdr) {
|
||||||
const now = Date.now();
|
const now = Date.now();
|
||||||
const day = new Date();
|
const day = new Date();
|
||||||
const recordAllCalls = this.req.locals.record_all_calls;
|
// eslint-disable-next-line max-len
|
||||||
|
const {hasRecording = false} = await this.retrieveHash(`call:${this.account_sid}:${this.req.locals.cdr.call_sid}`) ?? {} ;
|
||||||
|
const recordAllCalls = this.req.locals.record_all_calls || hasRecording;
|
||||||
|
const record_format = this.req.locals.account.record_format || 'mp3';
|
||||||
let recording_url = `/Accounts/${this.account_sid}/RecentCalls/${this.req.locals.cdr.call_sid}/record`;
|
let recording_url = `/Accounts/${this.account_sid}/RecentCalls/${this.req.locals.cdr.call_sid}/record`;
|
||||||
recording_url += `/${day.getFullYear()}/${(day.getMonth() + 1).toString().padStart(2, '0')}`;
|
recording_url += `/${day.getFullYear()}/${(day.getMonth() + 1).toString().padStart(2, '0')}`;
|
||||||
recording_url += `/${day.getDate().toString().padStart(2, '0')}/${recordAllCalls}`;
|
recording_url += `/${day.getDate().toString().padStart(2, '0')}/${record_format}`;
|
||||||
this.writeCdrs({...this.req.locals.cdr,
|
this.writeCdrs({...this.req.locals.cdr,
|
||||||
terminated_at: now,
|
terminated_at: now,
|
||||||
termination_reason: 'caller hungup',
|
termination_reason: 'caller hungup',
|
||||||
|
|||||||
Reference in New Issue
Block a user