Adding Zoom video calling in your messaging platform
By: Sri Ramalingam
Tags: Slack, Sdk, Zoom, API

We often get requests from Slack like messaging platforms asking us how to integrate Zoom native calling into their stack. While the integration itself is quite straightforward, you need to consider few things:

Licensing — Do you want your end users to use their Zoom accounts to authenticate through your platform or you want to have a reseller relationship with Zoom or you will want to pay for the usage on behalf of your users ?

User authentication and pooling — This is related to licensing but there are again options here — Would you like to ask end users to login to Zoom and get the tokens or make it transparent ?

Touch points — Are you looking into providing more tighter and optimal experience for the end user or create a slack like experience ?

I’m going to leave the Zoom Marketplace out of this discussion as you may not to publish this in the marketplace.

Let’s start with the last one.

Slack-Zoom Workflow

The Slack/Zoom integration you see today is very straightforward to implement. The intent there is to enhance the user experience on both platforms and is not meant for monetization either way. Here are the steps:

Register an app on Zoom marketplace and get the app credentials. Select oAuth as the authentication mechanism, get the app credentials

Initiate oAuth flow for the end user during the install process (assuming you have an install flow in your platform. If not, invoke oAuth at the point where the user wants to start the zoom meeting)

Get the oAuth tokens for the user. Call Zoom meetings API to schedule the meeting, get the meeting start/join URLs and the pre-meeting meta data (dial in numbers, meeting password etc.) and expose that on your interface for the user to see. Launch the meeting URL when the user click on it and the rest of the join experience happens outside of your platform

You might also want to register a webhook to get notified when the meeting ends. Zoom will call your webhook URL — you can take the meeting id and call Zoom API to get the meeting info which will provide you the attendee information. Post the attendee names and the meeting duration in your platform. With the Slack and Teams integration, we also post the meeting recording link back to the channel

It’s as simple as that if you want to replicate.

Licensing

If you want to provide a much tighter user experience (or you don’t want the end user to go to Zoom to get licenses etc.), you can subscribe to the Zoom per minute usage based pricing plan (called “API” plan). This plan will let you create unlimited number of basic users in Zoom. You can also start meetings on behalf of any of the users you create — the users don’t have to log into Zoom as they are created through the API plan and you are managing the life cycle. You will be paying Zoom for the actual usage (total meeting minutes). On the technical front, you can use either the JWT or API key/sec to use the APIs.

Another option is to use the named or active host licenses. Pre-create a pool of virtual users and assign the meeting license to the real user on your side and create/manage meetings. This requires to recycle the licenses, manage the virtual pool and essentially implement a resource (licenses->virtual users -> end user) management algorithm. It will get quite complicated if you want to pull the post meeting information as you need to maintain the consistent mapping between virtual and real users.

Touch points

Zoom-Slack integration uses Zoom REST APIs as mentioned above. But you can go deeper than that and use the mobile SDKs to embed Zoom into your mobile apps for the same use case. When the user launches Zoom meeting, you can just bring the custom UI in Zoom SDK and provide a in-app experience for your end users instead of just opening a web page with the URL redirection to Zoom domain.

As always, reach out to Zoom Developer Relations if you have follow up questions.