diff --git a/lib/session/call-info.js b/lib/session/call-info.js index ea29a0c4..92267626 100644 --- a/lib/session/call-info.js +++ b/lib/session/call-info.js @@ -71,6 +71,9 @@ class CallInfo { } this.localSipAddress = srf.locals.localSipAddress; + if (srf.locals.publicIp) { + this.publicIp = srf.locals.publicIp; + } } /** @@ -121,6 +124,9 @@ class CallInfo { if (process.env.JAMBONES_API_BASE_URL) { Object.assign(obj, {apiBaseUrl: process.env.JAMBONES_API_BASE_URL}); } + if (this.publicIp) { + Object.assign(obj, {fsPublicIp: this.publicIp}); + } return obj; } diff --git a/lib/utils/aws-sns-lifecycle.js b/lib/utils/aws-sns-lifecycle.js index e123d6ef..184d6efb 100644 --- a/lib/utils/aws-sns-lifecycle.js +++ b/lib/utils/aws-sns-lifecycle.js @@ -45,6 +45,7 @@ class SnsNotifier extends Emitter { }, 'response from SNS SubscribeURL'); const data = await this.describeInstance(); this.lifecycleState = data.AutoScalingInstances[0].LifecycleState; + this.emit('SubscriptionConfirmation', {publicIp: this.publicIp}); break; case 'Notification': diff --git a/lib/utils/place-outdial.js b/lib/utils/place-outdial.js index e0590f9d..c6ddc3a2 100644 --- a/lib/utils/place-outdial.js +++ b/lib/utils/place-outdial.js @@ -144,6 +144,7 @@ class SingleDialer extends Emitter { * (a) create a CallInfo for this call * (a) create a logger for this call */ + req.srf = srf; this.callInfo = new CallInfo({ direction: CallDirection.Outbound, parentCallInfo: this.parentCallInfo, diff --git a/lib/utils/sbc-pinger.js b/lib/utils/sbc-pinger.js index 8c31262b..00744e80 100644 --- a/lib/utils/sbc-pinger.js +++ b/lib/utils/sbc-pinger.js @@ -28,6 +28,10 @@ module.exports = (logger) => { lifecycleEmitter = await require('./aws-sns-lifecycle')(logger); lifecycleEmitter + .on('SubscriptionConfirmation', ({publicIp}) => { + const {srf} = require('../..'); + srf.locals.publicIp = publicIp; + }) .on(LifeCycleEvents.ScaleIn, () => { logger.info('AWS scale-in notification: begin drying up calls'); dryUpCalls = true;