Skip to content

feat: Handle *6 DTMF command in SIP gateway#600

Merged
damencho merged 6 commits intomasterfrom
sip-jibri-visitor
Apr 29, 2026
Merged

feat: Handle *6 DTMF command in SIP gateway#600
damencho merged 6 commits intomasterfrom
sip-jibri-visitor

Conversation

@damencho
Copy link
Copy Markdown
Member

When a SIP caller presses *6, jibri now detects it via a named FIFO (/tmp/jibri_pjsua_dtmf) written to by pjsua and acts in the Jitsi Meet conference:

  • Visitor mode: toggle raise hand
  • Currently unmuted: mute audio only
  • Currently muted, both audio+video blocked by AV moderation: raise hand
  • Currently muted, audio or video allowed: unmute whichever is permitted

Also logs the full visited URL (including fragment params) on page load.

When a SIP caller presses *6, jibri now detects it via a named FIFO
(/tmp/jibri_pjsua_dtmf) written to by pjsua and acts in the Jitsi Meet
conference:

- Visitor mode: toggle raise hand
- Currently unmuted: mute audio only
- Currently muted, both audio+video blocked by AV moderation: raise hand
- Currently muted, audio or video allowed: unmute whichever is permitted

Also logs the full visited URL (including fragment params) on page load.
Comment thread src/main/kotlin/org/jitsi/jibri/selenium/pageobjects/CallPage.kt
Comment thread src/main/kotlin/org/jitsi/jibri/selenium/JibriSelenium.kt Outdated
Comment thread src/main/kotlin/org/jitsi/jibri/sipgateway/pjsua/PjsuaClient.kt Outdated
Comment thread src/main/kotlin/org/jitsi/jibri/sipgateway/pjsua/PjsuaClient.kt Outdated
Comment thread src/main/kotlin/org/jitsi/jibri/sipgateway/pjsua/PjsuaClient.kt
muteVideo() returns a Promise, so the previous synchronous implementation
could return before the toggle actually completed. Video unmuting also
requires re-acquiring the camera device asynchronously. Added Redux store
subscription with appropriate timeouts (5s muting, 12s unmuting) and
explanatory comments to both toggleVideoMute and toggleAudioMute.
Replace the hardcoded /tmp/jibri_pjsua_dtmf constant with a config value
at jibri.sip.dtmf-fifo-path, defaulting to the same path. Allows
overriding in jibri.conf when the default tmp location is unsuitable.
Replace raw Thread construction with TaskPools.ioPool.submit, consistent
with how other blocking IO tasks are dispatched throughout the codebase.
The unblock task on stop is also submitted to the same pool.
…io toggle

*6 now controls audio only; *7 controls video only. Each respects AV
moderation force-mute by raising hand when the track cannot be unmuted.
@damencho damencho merged commit 2bb06e1 into master Apr 29, 2026
3 checks passed
@damencho damencho deleted the sip-jibri-visitor branch April 29, 2026 19:12
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants