The Webex SDK seam used only to actuate MuteParticipant — all perception is
fed in by the driver via the Ingest* methods so the SDK keeps a single subscriber per event.
ReadonlyCapabilitiesWebex supports host/cohost-driven mute, so the facilitator MuteParticipant tool is offered.
Forwards a native hand-raise/lower signal from the driver to the channel.
⚠️ Webex raised-hand is partial; this may never fire on clients/builds that don't surface the event over the Meetings SDK. The channel degrades gracefully (its software hand-raise still works).
The member whose hand changed.
Whether the hand is now raised.
Replaces the roster with a fresh snapshot from the driver and emits it to the channel. Called by the driver after the initial join and on every member join/leave.
The full current Webex roster.
Forwards a diarized speaking-set change from the driver to the channel.
The ids currently speaking.
Mutes a participant on the platform (the actuation behind the agent's MuteParticipant tool).
Capability-gated by Capabilities; the channel checks the capability before calling this.
The participant to mute.
A promise resolving once the mute request has been issued.
Convenience alias for IngestSpeaking, kept because "notify" reads naturally at the driver's inbound-audio call site.
The ids currently speaking.
Registers a handler for hand-raise/lower signals the PLATFORM surfaces (e.g. a participant uses
the conferencing app's native "raise hand"). raised = true enqueues, false dequeues.
Invoked with the participant id and whether the hand is now raised.
Registers a handler for roster changes. Fired with the FULL current roster on every change.
Invoked with the full current roster on every change.
Registers a handler for diarized speaking changes — the set of participant ids currently speaking.
Invoked with the speaking participant ids on every change.
Webex's adapter to the Meeting Controls channel's event source. It maintains a live roster and mirrors native hand-raise + diarized speaking signals, and actuates mute through the SDK.
The driver owns the SDK subscriptions (the SDK seam is "latest handler wins", so it can have only one subscriber per event) and feeds this source imperatively via IngestRoster / IngestHandRaise / IngestSpeaking. This source only needs the SDK for the one action it actuates — MuteParticipant. The Meeting Controls channel subscribes the three
On*streams in turn.The driver constructs ONE of these per session (only when the provider has
SpeakerDiarization, i.e. there is a roster to facilitate) and returns it fromWebexBridge.GetMeetingControlsEventSource.