com um clique
floor-bot-analysis
Use this skill for floor bot analysis.
Instalar com Codex ou Claude Copie este prompt, cole no Codex, Claude ou outro assistente e deixe que ele revise a página da skill e instale para você.
Menu
Use this skill for floor bot analysis.
Instalar com Codex ou Claude Copie este prompt, cole no Codex, Claude ou outro assistente e deixe que ele revise a página da skill e instale para você.
Baseado na classificação ocupacional SOC
Use this skill to evaluate proposed architecture changes against VoxBento's design principles.
Use this skill to find files, understand module ownership, and locate code in VoxBento.
Use this skill to analyse, audit, or modify HTTP and WebSocket routes in VoxBento. All routes live in `portal/routers/`.
Use this skill for security reviews of VoxBento code. Covers OWASP Top 10 and VoxBento-specific threat model.
Use this skill for tasks involving transcription providers, caption streaming, or the audio pipeline. Reference: `portal/transcription/`, [TRANSCRIPTION_MAP.md](../../context/TRANSCRIPTION_MAP.md).
Use this skill to analyse, audit, or modify database models, migrations, and CRUD helpers. Reference: `portal/models.py`, `portal/database.py`, `alembic/versions/`.
| name | floor-bot-analysis |
| description | Use this skill for floor bot analysis. |
This skill explains how to debug and analyze the Floor Bot feature in VoxBento, which bridges the Jitsi WebRTC audio floor track to the RTSP/MediaMTX infrastructure for transcription.
The floor-bot is a headless Playwright/Chromium container that joins the main Jitsi conference room (monitoring the floor channel). It captures the audio and sends it over a PulseAudio socket directly to FFmpeg. FFmpeg then pushes this audio via RTSP to MediaMTX, where the transcription worker pulls it and generates captions.
bot.py via an HTTP server. It listens on port 8080 for /start and /stop commands./tmp/pulse-{event_slug}.sock acts as the bridge. Chromium outputs to this socket, and FFmpeg reads from it.rtsp://mediamtx:8554/{event_slug}/floor./api/rooms/{room_id}/floor-transcription/start trigger the bot to join the Jitsi room and immediately spawn the transcription worker pointing to the floor channel.When deploying this architecture, understanding the network topology is critical.
JITSI_INTERNAL_BASE)jitsi-web. To bypass WebRTC HTTP origin blocking for getUserMedia, the backend automatically replaces localhost or jitsi.voxbento.com with the Docker-internal HTTPS URL: https://jitsi-web. The bot explicitly uses --ignore-certificate-errors and --unsafely-treat-insecure-origin-as-secure=https://jitsi-web.https://jitsi-web hostname will fail. You must set JITSI_INTERNAL_BASE to the public Jitsi URL (e.g., https://jitsi.eventyay.com) in your .env.MEDIAMTX_RTSP_BASE)rtsp://mediamtx:8554 (the container name inside Docker Compose).MEDIAMTX_RTSP_BASE environment variable. Both the floor-bot FFmpeg ingest and the backend transcription worker use this URL.FLOOR_BOT_BASE)http://floor-bot:8080.FLOOR_BOT_BASE to point to the correct pod/service DNS.Check if Playwright is muting the browser. Ensure --ignore_default_args=["--mute-audio"] is being passed. Also verify if the Jitsi UI is trying to acquire mic permissions and failing: Ensure --use-fake-device-for-media-stream is used.
Jitsi expects URL parameters (like userInfo.displayName) to be valid JSON strings. Ensure the display name is properly quote-wrapped and URL encoded:
urllib.parse.quote('"VoxBento FloorBot"') -> %22VoxBento%20FloorBot%22.
Ensure PULSE_SERVER="unix:/tmp/pulse-{event_slug}.sock" is properly passed to the Playwright chromium browser using the env= dictionary.
If FFmpeg reports loop/sync errors (Non-monotonous DTS), check the sample rate constraints in Jitsi vs Chromium vs FFmpeg.
Tail the Floor Bot Logs:
docker compose logs -f floor-bot
Check PulseAudio Connections inside Floor Bot:
docker compose exec floor-bot sh -c 'PULSE_SERVER="unix:/tmp/pulse-{event_slug}.sock" pactl list sink-inputs'
(If the browser is outputting audio correctly, you will see 'Chromium' listed as a client).
Check FFmpeg/MediaMTX Streaming:
docker compose logs -f mediamtx
(Look for: [path {event_slug}/floor] stream is online)