diff --git a/pom.xml b/pom.xml
index 39be58049..167578233 100644
--- a/pom.xml
+++ b/pom.xml
@@ -357,7 +357,7 @@
${project.groupId}
jitsi-xmpp-extensions
- 1.0-78-g62d03d4
+ 1.0-82-ge8aacab
org.slf4j
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..e6629d58d 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,37 @@ 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());
+ boolean isJibriRecordingOn = false;
+ RecordingStatus rs = presence.getExtension(RecordingStatus.class);
+ if (rs != null)
+ {
+ isJibriRecordingOn = rs.getStatus() == JibriIq.Status.ON;
+ }
+
+ boolean isAudioRecordingOn = false;
+ ConferenceProperties props = presence.getExtension(ConferenceProperties.class);
+
+ if (props != null)
+ {
+ ConferenceProperties.ConferenceProperty prop
+ = props.getProperties().stream()
+ .filter(p -> ConferenceProperties.KEY_AUDIO_RECORDING_ENABLED.equals(p.getKey()))
+ .findFirst().orElse(null);
+
+ isAudioRecordingOn = prop != null && Boolean.parseBoolean(prop.getValue());
+ }
+
+ JibriIq.Status newStatus
+ = isJibriRecordingOn || isAudioRecordingOn ? JibriIq.Status.ON : JibriIq.Status.OFF;
+
+ if (currentJibriStatus.equals(newStatus))
+ {
+ return;
+ }
+
+ notifyRecordingStatusChanged(rs != null ? rs.getRecordingMode() : JibriIq.RecordingMode.FILE, newStatus);
}
}
@@ -251,11 +276,6 @@ public void process(Presence presence)
private void notifyRecordingStatusChanged(
JibriIq.RecordingMode mode, JibriIq.Status status)
{
- // not a change, ignore
- if (currentJibriStatus.equals(status))
- {
- return;
- }
currentJibriStatus = status;
String offSound;