From 1403069eb957461577f26f6b190541f3afb422ec Mon Sep 17 00:00:00 2001 From: NINE78 Date: Mon, 7 Jul 2025 23:41:46 +0000 Subject: [PATCH] Add microphone mute configuration for incoming and outgoing calls --- src/sip-config.json | 2 ++ src/sip-core.ts | 21 +++++++++++++++++++++ 2 files changed, 23 insertions(+) diff --git a/src/sip-config.json b/src/sip-config.json index 487a2fd..8d7f3c9 100644 --- a/src/sip-config.json +++ b/src/sip-config.json @@ -29,6 +29,8 @@ ], "sip_video": false, "auto_answer": false, + "microphone_mute_on_incoming": false, + "microphone_mute_on_outgoing": false, "popup_config": { "auto_open": true, "large": false, diff --git a/src/sip-core.ts b/src/sip-core.ts index ce7d7f9..f1203e3 100644 --- a/src/sip-core.ts +++ b/src/sip-core.ts @@ -48,6 +48,8 @@ export interface SIPCoreConfig { backup_user: User; users: User[]; auto_answer: boolean; + microphone_mute_on_incoming: boolean; + microphone_mute_on_outgoing: boolean; popup_config: Object | null; popup_override_component: string | null; /** @@ -351,6 +353,19 @@ export class SIPCore { e.session.on("accepted", (e: IncomingEvent) => { console.info("Call accepted"); this.startCallTimer(); + switch (this.RTCSession?.direction) { + case "incoming": + console.info("Incoming call"); + if (this.config.microphone_mute_on_incoming) { + this.RTCSession?.mute({ audio: true }); + } + case "outgoing": + console.info("Outgoing call"); + if (this.config.microphone_mute_on_outgoing) { + this.RTCSession?.mute({ audio: true }); + } + break; + } this.triggerUpdate(); }); @@ -371,6 +386,9 @@ export class SIPCore { switch (e.session.direction) { case "incoming": console.info("Incoming call"); + if (this.config.microphone_mute_on_incoming) { + e.session.mute({audio: true}); + } this.triggerUpdate(); e.session.on("peerconnection", (e: PeerConnectionEvent) => { @@ -388,6 +406,9 @@ export class SIPCore { case "outgoing": console.info("Outgoing call"); + if (this.config.microphone_mute_on_outgoing) { + e.session.mute({audio: true}); + } this.triggerUpdate(); e.session.connection.addEventListener("track", this.handleRemoteTrackEvent);