diff --git a/src/sip-config.json b/src/sip-config.json index 51ccba7..5de1dc5 100644 --- a/src/sip-config.json +++ b/src/sip-config.json @@ -31,6 +31,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 eeb643c..faa7eab 100644 --- a/src/sip-core.ts +++ b/src/sip-core.ts @@ -50,6 +50,8 @@ export interface SIPCoreConfig { /** Output configuration */ out: String; auto_answer: boolean; + microphone_mute_on_incoming: boolean; + microphone_mute_on_outgoing: boolean; popup_config: Object | null; popup_override_component: string | null; /** @@ -440,6 +442,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.stopOutgoingTone(); this.stopIncomingRingtone(); this.triggerUpdate(); @@ -462,6 +477,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(); this.playIncomingRingtone(); @@ -483,6 +501,9 @@ export class SIPCore { case "outgoing": console.info("Outgoing call"); + if (this.config.microphone_mute_on_outgoing) { + e.session.mute({audio: true}); + } this.playOutgoingTone(); this.triggerUpdate();