Official Zoom Desktop client API for dedicated mute/unmute button

Description
I am exploring creating a dedicated mute (and call status) button (on a custom keyboard) similar to the interface on my headset cable (green light if in zoom call, red light if on mute, button to toggle mute). The mute status of the headset syncs with the app which is a relatively new feature.

I am hoping to be able to interact with the official Zoom Desktop Cilent. I see a bunch of “automation” centric solutions involving window and control scraping, but am looking for an API exposed by the Zoom Desktop application. The “sync” of the mute button on the headset implies there may be.

I have seen a few questions about accessing Mute/Unmute, but they tend to focus on webhook or REST APIs. I am aware if zoommtg:// protocol, but seems that is one way with a focus on starting/joining meetings.

There was a reference to https://zoom.github.io/zoom-sdk-windows/class_i_meeting_audio_controller.html#a46ffad1f9a811c713086ac4663df2744 but I was unable to find an equivalent in the MacOS SDK. I will admit, I have not done much in xcode before.

Additional context
Referred to this forum from Desktop client API for dedicated mute/unmute button

Hi @chaseadam.meta,

Thanks for the post. Unfortunately, the official Zoom desktop client does not support external interaction like the way you are mentioning.

Thank you.

Just to clarify, the SDK supports mute and unmute actions, but no ability to get current mute status, correct? Is it possible to register a listener to be notified when mute status changes?

The use case here is to externalize control of the zoom call to a hardware device like the Elgato Stream Deck. The Zoom client usability suffers greatly in a remote work setup where users must operate Citrix or other remote desktop. Constantly hunting down the client when you are using Citrix or similar remote desktop application just adds friction to the process. Being able to control the mute status is obviously useful but trusting the current status indicated in the hardware requires the ability to obtain it.

Thanks

1 Like

Hi @bobrich,

Thanks for the reply. If you would like to get the mute status, you can leverage the following callback:

/**
 * @brief Notification of user's audio status changes. 
 * @param userAudioStatusArray An array contains ZoomSDKUserAudioStauts elements of each user's audio status.
 *
 */
- (void)onUserAudioStatusChange:(NSArray*)userAudioStatusArray;

Hope this helps. Thank you.

Awesome!!! Thank you Carson!

1 Like

It’s really great to see that there are still people who are very passionate about their job and want to improve everything.

1 Like

Thank you for mentioning this! @severund.

Hey @severund,

This forum is for Zoom MacOS SDK questions only.

Thank you for understanding.
Michael

I’m with you in terms of wanting external device control/status for StreamDeck or other applications - like a big busy light that shows mute status, and being able to mash a button that positively mutes/unmutes etc, rather than a single keystroke for toggling current status.

Hi @ian.beyer,

As mentioned earlier in this thread, this forum is only meant for assisting developers who are integrating our macOS SDK into their own applications. To submit feedback regarding the Zoom client please fill out the feedback form here.

Alternatively, any feature requests for the Zoom developer platform can be posted over in #feature-requests. :slightly_smiling_face:

Thanks!

We were able to use the Zoom SDK to build what you are looking for (I think) with the event callbacks provided when these actions occur. The source code for the streamdeck plugin that relates to the Zoom app is available on Bitfocus Companion; it ties to ZoomOSC which is an SDK client.

So insofar as the ZoomSDK is concerned, yes it can be done.

2 Likes

Thanks for offering the insight @liminal_andy!

@ian.beyer if I have misunderstood and you were in fact asking about the macOS SDK, I apologize. Please let me know if you need any additional help with the SDK if that is the case. :slightly_smiling_face:

Thanks!