From c6a1cdabc1b59f3a8c784c3330fb98c312009401 Mon Sep 17 00:00:00 2001 From: damencho Date: Mon, 28 Oct 2024 14:47:47 -0500 Subject: [PATCH] feat: Adds notification for conference audio recordings. --- .../jitsi/jigasi/JigasiBundleActivator.java | 11 +++++++ .../sounds/SoundNotificationManager.java | 30 +++++++++++++++---- 2 files changed, 35 insertions(+), 6 deletions(-) diff --git a/src/main/java/org/jitsi/jigasi/JigasiBundleActivator.java b/src/main/java/org/jitsi/jigasi/JigasiBundleActivator.java index 31e08dd18..4a90e1908 100644 --- a/src/main/java/org/jitsi/jigasi/JigasiBundleActivator.java +++ b/src/main/java/org/jitsi/jigasi/JigasiBundleActivator.java @@ -236,6 +236,17 @@ public void startWithServices(final BundleContext bundleContext) new DefaultPacketExtensionProvider<>(RecordingStatus.class) ); + ProviderManager.addExtensionProvider( + ConferenceProperties.ELEMENT, + ConferenceProperties.NAMESPACE, + new DefaultPacketExtensionProvider<>(ConferenceProperties.class) + ); + ProviderManager.addExtensionProvider( + ConferenceProperties.ConferenceProperty.ELEMENT, + ConferenceProperties.NAMESPACE, + new DefaultPacketExtensionProvider<>(ConferenceProperties.ConferenceProperty.class) + ); + logger.info("initialized SipGateway"); sipGateway = new SipGateway(bundleContext) { diff --git a/src/main/java/org/jitsi/jigasi/sounds/SoundNotificationManager.java b/src/main/java/org/jitsi/jigasi/sounds/SoundNotificationManager.java index 8d35462f6..7f3872e43 100644 --- a/src/main/java/org/jitsi/jigasi/sounds/SoundNotificationManager.java +++ b/src/main/java/org/jitsi/jigasi/sounds/SoundNotificationManager.java @@ -30,6 +30,7 @@ import org.jitsi.utils.*; import org.jitsi.utils.logging.Logger; import org.jitsi.xmpp.extensions.jibri.*; +import org.jitsi.xmpp.extensions.jitsimeet.*; import org.jivesoftware.smack.packet.*; import java.util.*; @@ -232,13 +233,30 @@ private CallContext getCallContext() */ public void process(Presence presence) { - RecordingStatus rs = presence.getExtension(RecordingStatus.class); - - if (rs != null - && gatewaySession.getFocusResourceAddr().equals( - presence.getFrom().getResourceOrEmpty().toString())) + if (gatewaySession.getFocusResourceAddr().equals(presence.getFrom().getResourceOrEmpty().toString())) { - notifyRecordingStatusChanged(rs.getRecordingMode(), rs.getStatus()); + RecordingStatus rs = presence.getExtension(RecordingStatus.class); + + if (rs != null) + { + notifyRecordingStatusChanged(rs.getRecordingMode(), rs.getStatus()); + + return; + } + + ConferenceProperties props = presence.getExtension(ConferenceProperties.class); + if (props != null) + { + props.getProperties().stream() + .filter(p -> ConferenceProperties.KEY_AUDIO_RECORDING_ENABLED.equals(p.getKey())) + .findFirst().ifPresent(p -> + { + if (p.getValue().equals(Boolean.TRUE.toString())) + { + notifyRecordingStatusChanged(JibriIq.RecordingMode.FILE, JibriIq.Status.ON); + } + }); + } } }