API Endpoint(s) and/or Zoom API Event(s)
@zoom/appssdk - v0.16.4: [onMyActiveSpeakerChange]
Description
According to the documentation, onMyActiveSpeakerChange
should “notify Zoom App when current user starts or stops speaking.” It seems the events emitted should somewhat correspond to Zoom’s Active Speaker view (a green frame around the speaker or an animation on the microphone icon).
However, in our experience, events are emitted inconsistently and seemingly independently of when the user starts or stops speaking.
We’ve recorded this test video based on zoom/zoomapps-sample-js
and noticed the following issues (“main speaker” is the speaker running the Zoom App):
1) Second speaker is unmuted, but is not talking (0:00 - 0:18
): start
and stop
events are randomly emitted every second or so, regardless of if the main speaker is talking or not.
2) Second speaker is talking, first speaker is silent (0:18 - 0:23
): The last event emitted is start
even though the second person is speaking and the main speaker is silent.
3) Second speaker is muted (0:30 - 0:40
): start
and stop
events are randomly emitted every second or so, regardless of if the main speaker is talking or not. Sometimes it is stuck in the start
state even though the main speaker is silent (0:35-0:40
).
4) Main speaker is muted (1:06 - 1:12
): The last event emitted is start
even though the other person is speaking and the main speaker is muted.
Considering the video above, we believe that it is virtually impossible to use onMyActiveSpeakerChange
to determine if the user is talking. On top of the events being emitted sporadically, it doesn’t seem to make sense for stop
event not to be emitted when the main user mutes their microphone or when the second user starts talking with the main user staying silent.
How To Reproduce
Steps to reproduce the behavior:
1. Clone GitHub - zoom/zoomapps-sample-js: A Hello World Zoom App built with Vanilla JS
*2. Add 'onMyActiveSpeakerChange'
under capabilities
in public/js/index.js
3. Add zoomSdk.onMyActiveSpeakerChange((data) => {console.log('onMyActiveSpeakerChange', data)})
before the catch block in public/js/index.js
4. Launch the app in a meeting and test events emitted