diff libervia/backend/plugins/plugin_xep_0167/__init__.py @ 4115:0da563780ffc

plugin XEP-0167, XEP-0353: handle ringing: - add a `jingle_preflight_info` method in the Jingle Application model to handle this kind of information - XEP-0353 is calling `jingle_preflight_info` when a `ringing` message is received - XEP-0167 use this information to send a `ringing` info to frontends
author Goffi <goffi@goffi.org>
date Wed, 16 Aug 2023 18:33:28 +0200
parents bc60875cb3b8
children 23fa52acf72c
line wrap: on
line diff
--- a/libervia/backend/plugins/plugin_xep_0167/__init__.py	Wed Aug 16 18:28:32 2023 +0200
+++ b/libervia/backend/plugins/plugin_xep_0167/__init__.py	Wed Aug 16 18:33:28 2023 +0200
@@ -387,6 +387,24 @@
         if not accepted:
             raise exceptions.CancelError("User declined the incoming call.")
 
+    async def jingle_preflight_info(
+        self,
+        client: SatXMPPEntity,
+        session: dict,
+        info_type: str,
+        info_data: dict|None = None
+    ) -> None:
+        if info_type == "ringing":
+            if not session.get("ringing", False):
+                self.host.bridge.call_info(
+                    session["id"], "ringing", "", client.profile
+                )
+                # we indicate that the ringing has started, to avoid sending several times
+                # the signal
+                session["ringing"] = True
+        else:
+            log.warning(f"Unknown preflight info type: {info_type!r}")
+
     async def jingle_preflight_cancel(
         self,
         client: SatXMPPEntity,