diff --git a/akka-bbb-fsesl/src/main/java/org/bigbluebutton/freeswitch/voice/FreeswitchConferenceEventListener.java b/akka-bbb-fsesl/src/main/java/org/bigbluebutton/freeswitch/voice/FreeswitchConferenceEventListener.java index 076d82cc54..b136b0fd57 100755 --- a/akka-bbb-fsesl/src/main/java/org/bigbluebutton/freeswitch/voice/FreeswitchConferenceEventListener.java +++ b/akka-bbb-fsesl/src/main/java/org/bigbluebutton/freeswitch/voice/FreeswitchConferenceEventListener.java @@ -109,6 +109,7 @@ public class FreeswitchConferenceEventListener implements ConferenceEventListene evt.callSession, evt.clientSession, evt.userId, + evt.getVoiceUserId(), evt.callerName, evt.callState, evt.origCallerIdName, diff --git a/akka-bbb-fsesl/src/main/java/org/bigbluebutton/freeswitch/voice/IVoiceConferenceService.java b/akka-bbb-fsesl/src/main/java/org/bigbluebutton/freeswitch/voice/IVoiceConferenceService.java index 5ca5f7b4c6..72080f8732 100755 --- a/akka-bbb-fsesl/src/main/java/org/bigbluebutton/freeswitch/voice/IVoiceConferenceService.java +++ b/akka-bbb-fsesl/src/main/java/org/bigbluebutton/freeswitch/voice/IVoiceConferenceService.java @@ -59,6 +59,7 @@ public interface IVoiceConferenceService { String callSession, String clientSession, String userId, + String voiceUserId, String callerName, String callState, String origCallerIdName, diff --git a/akka-bbb-fsesl/src/main/java/org/bigbluebutton/freeswitch/voice/events/VoiceCallStateEvent.java b/akka-bbb-fsesl/src/main/java/org/bigbluebutton/freeswitch/voice/events/VoiceCallStateEvent.java index 9d0a9277e6..f48b3576fd 100755 --- a/akka-bbb-fsesl/src/main/java/org/bigbluebutton/freeswitch/voice/events/VoiceCallStateEvent.java +++ b/akka-bbb-fsesl/src/main/java/org/bigbluebutton/freeswitch/voice/events/VoiceCallStateEvent.java @@ -4,6 +4,8 @@ public class VoiceCallStateEvent extends VoiceConferenceEvent { public final String callSession; public final String clientSession; public final String userId; + // AKA mod_conference memberId + public final String voiceUserId; public final String callerName; public final String callState; public final String origCallerIdName; @@ -14,6 +16,7 @@ public class VoiceCallStateEvent extends VoiceConferenceEvent { String callSession, String clientSession, String userId, + String voiceUserId, String callerName, String callState, String origCallerIdName, @@ -22,9 +25,14 @@ public class VoiceCallStateEvent extends VoiceConferenceEvent { this.callSession = callSession; this.clientSession = clientSession; this.userId = userId; + this.voiceUserId = voiceUserId; this.callerName = callerName; this.callState = callState; this.origCallerIdName = origCallerIdName; this.origCalledDest = origCalledDest; } + + public String getVoiceUserId() { + return voiceUserId; + } } diff --git a/akka-bbb-fsesl/src/main/java/org/bigbluebutton/freeswitch/voice/freeswitch/ESLEventListener.java b/akka-bbb-fsesl/src/main/java/org/bigbluebutton/freeswitch/voice/freeswitch/ESLEventListener.java index a67e6e5768..0549d6babf 100755 --- a/akka-bbb-fsesl/src/main/java/org/bigbluebutton/freeswitch/voice/freeswitch/ESLEventListener.java +++ b/akka-bbb-fsesl/src/main/java/org/bigbluebutton/freeswitch/voice/freeswitch/ESLEventListener.java @@ -84,6 +84,7 @@ public class ESLEventListener implements IEslEventListener { String origCallerIdName = headers.get("Caller-Caller-ID-Name"); String origCallerDestNumber = headers.get("Caller-Destination-Number"); String clientSession = "0"; + String memberIdStr = memberId != null ? memberId.toString() : ""; Matcher matcher = CALLERNAME_PATTERN.matcher(callerIdName); Matcher callWithSess = CALLERNAME_WITH_SESS_INFO_PATTERN.matcher(callerIdName); @@ -106,6 +107,7 @@ public class ESLEventListener implements IEslEventListener { coreuuid, clientSession, voiceUserId, + memberIdStr, callerIdName, callState, origCallerIdName, @@ -281,6 +283,7 @@ public class ESLEventListener implements IEslEventListener { String varvBridge = (eventHeaders.get("variable_vbridge") == null) ? "" : eventHeaders.get("variable_vbridge"); if ("echo".equalsIgnoreCase(application) && !varvBridge.isEmpty()) { + Integer memberId = this.getMemberId(eventHeaders); String origCallerIdName = eventHeaders.get("Caller-Caller-ID-Name"); String origCallerDestNumber = eventHeaders.get("Caller-Destination-Number"); String coreuuid = eventHeaders.get("Core-UUID"); @@ -291,6 +294,7 @@ public class ESLEventListener implements IEslEventListener { String callerName = origCallerIdName; String clientSession = "0"; String callState = "IN_ECHO_TEST"; + String memberIdStr = memberId != null ? memberId.toString() : ""; Matcher callerListenOnly = CALLERNAME_LISTENONLY_PATTERN.matcher(origCallerIdName); Matcher callWithSess = CALLERNAME_WITH_SESS_INFO_PATTERN.matcher(origCallerIdName); @@ -314,6 +318,7 @@ public class ESLEventListener implements IEslEventListener { coreuuid, clientSession, voiceUserId, + memberIdStr, callerName, callState, origCallerIdName, @@ -321,6 +326,7 @@ public class ESLEventListener implements IEslEventListener { conferenceEventListener.handleConferenceEvent(csEvent); } else if ("RINGING".equalsIgnoreCase(channelCallState) && !varvBridge.isEmpty()) { + Integer memberId = this.getMemberId(eventHeaders); String origCallerIdName = eventHeaders.get("Caller-Caller-ID-Name"); String origCallerDestNumber = eventHeaders.get("Caller-Destination-Number"); String coreuuid = eventHeaders.get("Core-UUID"); @@ -330,6 +336,7 @@ public class ESLEventListener implements IEslEventListener { String callerName = origCallerIdName; String clientSession = "0"; String callState = "CALL_STARTED"; + String memberIdStr = memberId != null ? memberId.toString() : ""; Matcher callerListenOnly = CALLERNAME_LISTENONLY_PATTERN.matcher(origCallerIdName); Matcher callWithSess = CALLERNAME_WITH_SESS_INFO_PATTERN.matcher(origCallerIdName); @@ -353,6 +360,7 @@ public class ESLEventListener implements IEslEventListener { coreuuid, clientSession, voiceUserId, + memberIdStr, callerName, callState, origCallerIdName, @@ -365,6 +373,7 @@ public class ESLEventListener implements IEslEventListener { String channelState = (eventHeaders.get("Channel-State") == null) ? "" : eventHeaders.get("Channel-State"); if ("HANGUP".equalsIgnoreCase(channelCallState) && "CS_DESTROY".equalsIgnoreCase(channelState)) { + Integer memberId = this.getMemberId(eventHeaders); String origCallerIdName = eventHeaders.get("Caller-Caller-ID-Name"); String origCallerDestNumber = eventHeaders.get("Caller-Destination-Number"); String coreuuid = eventHeaders.get("Core-UUID"); @@ -374,6 +383,7 @@ public class ESLEventListener implements IEslEventListener { String callerName = origCallerIdName; String clientSession = "0"; String callState = "CALL_ENDED"; + String memberIdStr = memberId != null ? memberId.toString() : ""; Matcher callerListenOnly = CALLERNAME_LISTENONLY_PATTERN.matcher(origCallerIdName); Matcher callWithSess = CALLERNAME_WITH_SESS_INFO_PATTERN.matcher(origCallerIdName); @@ -397,6 +407,7 @@ public class ESLEventListener implements IEslEventListener { coreuuid, clientSession, voiceUserId, + memberIdStr, callerName, callState, origCallerIdName, @@ -405,6 +416,7 @@ public class ESLEventListener implements IEslEventListener { conferenceEventListener.handleConferenceEvent(csEvent); } else if ("RINGING".equalsIgnoreCase(channelCallState) && "CS_EXECUTE".equalsIgnoreCase(channelState)) { + Integer memberId = this.getMemberId(eventHeaders); String origCallerIdName = eventHeaders.get("Caller-Caller-ID-Name"); String origCallerDestNumber = eventHeaders.get("Caller-Destination-Number"); String coreuuid = eventHeaders.get("Core-UUID"); @@ -414,6 +426,7 @@ public class ESLEventListener implements IEslEventListener { String callerName = origCallerIdName; String clientSession = "0"; String callState = "CALL_STARTED"; + String memberIdStr = memberId != null ? memberId.toString() : ""; Matcher callerListenOnly = CALLERNAME_LISTENONLY_PATTERN.matcher(origCallerIdName); Matcher callWithSess = CALLERNAME_WITH_SESS_INFO_PATTERN.matcher(origCallerIdName); @@ -437,6 +450,7 @@ public class ESLEventListener implements IEslEventListener { coreuuid, clientSession, voiceUserId, + memberIdStr, callerName, callState, origCallerIdName, diff --git a/akka-bbb-fsesl/src/main/scala/org/bigbluebutton/freeswitch/VoiceConferenceService.scala b/akka-bbb-fsesl/src/main/scala/org/bigbluebutton/freeswitch/VoiceConferenceService.scala index 4e520a82dc..4c73bedcf5 100755 --- a/akka-bbb-fsesl/src/main/scala/org/bigbluebutton/freeswitch/VoiceConferenceService.scala +++ b/akka-bbb-fsesl/src/main/scala/org/bigbluebutton/freeswitch/VoiceConferenceService.scala @@ -229,6 +229,7 @@ class VoiceConferenceService(healthz: HealthzService, callSession: String, clientSession: String, userId: String, + voiceUserId: String, callerName: String, callState: String, origCallerIdName: String, @@ -240,6 +241,7 @@ class VoiceConferenceService(healthz: HealthzService, callSession = callSession, clientSession = clientSession, userId = userId, + voiceUserId = voiceUserId, callerName = callerName, callState = callState, origCallerIdName = origCallerIdName, diff --git a/bbb-common-message/src/main/scala/org/bigbluebutton/common2/msgs/VoiceConfMsgs.scala b/bbb-common-message/src/main/scala/org/bigbluebutton/common2/msgs/VoiceConfMsgs.scala index 5fedb8792c..4bea316d11 100755 --- a/bbb-common-message/src/main/scala/org/bigbluebutton/common2/msgs/VoiceConfMsgs.scala +++ b/bbb-common-message/src/main/scala/org/bigbluebutton/common2/msgs/VoiceConfMsgs.scala @@ -555,6 +555,7 @@ case class VoiceConfCallStateEvtMsgBody( callSession: String, clientSession: String, userId: String, + voiceUserId: String, callerName: String, callState: String, origCallerIdName: String,