Context
SDK examples and docs (examples/node.md, examples/python.md) show identifying speakers in on_transcript_data / on_audio_data callbacks via metadata.userName (Node) / metadata.user_name (Python). This field is not present (or not meaningful) for ZCC events. ZCC RTMS streams identify participants via a channel_id on the packet/metadata — see [ADR-2026-05-08 — RTMS audio packet channel ID is ZCC-only].
Customers building ZCC integrations copy-paste the standard example, get None / undefined for the speaker, and assume the SDK is broken.
What to ship
- Update
examples/python.md — add a ZCC-specific subsection under the audio/transcript callback examples showing the right way to identify a speaker:
@client.on_transcript_data
def _(data, size, ts, metadata):
speaker = metadata.channel_id # ZCC routes by channel
text = data.decode("utf-8", errors="replace")
print(f"channel {speaker}: {text}")
- Update
examples/node.md — same pattern in JS:
client.onTranscriptData((data, size, ts, metadata) => {
const speaker = metadata.channelId;
console.log(`channel ${speaker}: ${data.toString()}`);
});
-
Mark userName / user_name as Optional in type stubs (__init__.pyi Python, rtms.d.ts Node) — document that it's populated only for Zoom Meetings / Webinars streams, not ZCC.
-
Add channel_id / channelId to type stubs as Optional — populated only for ZCC streams.
-
Update examples/zcc.md with a cross-link to the new sections in the language guides.
Acceptance criteria
Cross-language parity
Source
Tracked in vault: Projects/RTMS SDK v1.2.md → DEVS-X15. Builds on the 2026-05-08 ADR.
Tracker
Part of the v1.2 milestone. Project: https://github.com/orgs/zoom/projects/11.
Context
SDK examples and docs (
examples/node.md,examples/python.md) show identifying speakers inon_transcript_data/on_audio_datacallbacks viametadata.userName(Node) /metadata.user_name(Python). This field is not present (or not meaningful) for ZCC events. ZCC RTMS streams identify participants via achannel_idon the packet/metadata — see [ADR-2026-05-08 — RTMS audio packet channel ID is ZCC-only].Customers building ZCC integrations copy-paste the standard example, get
None/undefinedfor the speaker, and assume the SDK is broken.What to ship
examples/python.md— add a ZCC-specific subsection under the audio/transcript callback examples showing the right way to identify a speaker:examples/node.md— same pattern in JS:Mark
userName/user_nameas Optional in type stubs (__init__.pyiPython,rtms.d.tsNode) — document that it's populated only for Zoom Meetings / Webinars streams, not ZCC.Add
channel_id/channelIdto type stubs as Optional — populated only for ZCC streams.Update
examples/zcc.mdwith a cross-link to the new sections in the language guides.Acceptance criteria
examples/python.mdexamples/node.mduserName/user_namemarked Optional in both type stub setschannel_id/channelIddocumented in both type stub setsexamples/zcc.mdcross-links to the new language sectionsmetadata.channel_idis populated andmetadata.user_nameis emptyCross-language parity
examples/python.mdandexamples/node.mdupdated in the same PRSource
Tracked in vault:
Projects/RTMS SDK v1.2.md→ DEVS-X15. Builds on the 2026-05-08 ADR.Tracker
Part of the v1.2 milestone. Project: https://github.com/orgs/zoom/projects/11.