We are deciding whether to implement an audio-only Zoom Meetings PoC with rtms==1.1.0 on CPython 3.12.15 and macOS ARM64. We plan to use one client for a meeting with two participants, including the host. The host’s user-managed General App uses auto-start, the meeting:read:meeting_audio scope, and the meeting.rtms_started and meeting.rtms_stopped webhooks.
The receiver requests RAW_AUDIO, L16, SR_16K, MONO, AUDIO_MULTI_STREAMS, duration=20, and frame_size=320. It must stop on interruption, pause, configuration rejection, or format mismatch. It must never reconnect or resume automatically.
S1. How can we get the IDs of participants who are already in the meeting?
- Which public API or callback reliably delivers the IDs of both participants who are already in the meeting when RTMS connects, including the host and anyone who is muted? What registration and subscription sequence ensures that the receiver gets those initial IDs? In the 1.1.0 binding, subscriptions registered before allocation appear to be queued without being applied during allocation. Python binding
- Within the same meeting and stream, are
Participant.idfromon_user_updateanduser_idfromon_participant_eventguaranteed to match the corresponding audiometadata.userId? Is there a signal that the initial list is complete or a documented delivery deadline? Can audio arrive before the participant notifications?
S2. Can the native SDK reconnect or resume on its own?
- If the application calls
join()only once, can the bundled native SDK reconnect after a signaling or media disconnect or server failover, or resume delivery after a pause? Can that happen before the application receives an interruption or pause notification? - If any of these can occur, which public API or setting in 1.1.0 prevents them, and when must it be applied?
S3. Which SDK signals establish connection, interruption, and shutdown?
- Which
on_join_confirm(reason)value establishes that the audio connection is ready? Which SDK callbacks andreasonoropvalues distinguish a pause, signaling interruption, media interruption, normal termination, and stream revocation? In particular, does signaling interruption require a separatemeeting.rtms_interruptedsubscription, and can the SDK itself report revocation before themeeting.rtms_stoppedwebhook withstop_reason=8arrives? Zoom webhook reference - Is it supported to request shutdown in a callback and call
leave()on the owning OS thread afterpoll()returns? Can the same sequence be used before join confirmation and after the stream has ended? What public result confirms local cleanup or reports its failure? The 1.1.0 binding disables callbacks before releasing the native client. Python release path
S4. How can we verify the negotiated audio format and stop on rejection?
- Which public Python API in 1.1.0 exposes the server-confirmed
media_paramsor equivalent values for content type, codec, sample rate, channels, data option, and send interval? Media handshake response - Which public result or callback lets the application reliably detect a configuration rejection or format mismatch before accepting audio? The 1.1.0 wrapper can log a warning on a native configuration error and still call the native
join. Configuration path before join
Please answer for rtms==1.1.0 and link to the relevant API definitions where available. If a requirement has no supported public API in this version, please say so. SDK source for v1.1.0 · PyPI release