Recording indication issue in Meeting SDK for web

We used the given zoom bot example (github → /zoom/meetingsdk-web-bot-sample/tree/main) to make a bot app.

We have:

  1. set up auth endpoint (github → /zoom/meetingsdk-auth-endpoint-sample) with our Meeting SDK credentials
  2. created a zoom meeting with default configuration (no account-level meeting configs changed) on the developers account zoom profile, retrieved its url
  3. set up the bot with our Meeting SDK credentials and meeting url
  4. started the meeting and bot app
  5. got the bot connected to the meeting

When the bot was in the meeting, it tried to invoke SDK method ZoomMtg.mediaCapturePermission in a bot-driver web browser. But no recording indication (a modal “this meeting is being recorded” and appropriate voice prompt) happened.

We have noticed the error log in the console of the bot’s browser and a modal “Permission needed from Meeting Host”.

Then we tried to disable ZoomMtg.mediaCapturePermission call and to call directly ZoomMtg.mediaCapture({ record: "start" }); instead, but observed the same behavior.

Browser Console Error
The error that’s being returned on ZoomMtg.mediaCapturePermission method call:

	method: "mediaCapturePermission"
	erroCode: 1
	errorMessage: "not support grant local record permissin"
	result : null
	status: false

Which Web Meeting SDK version?
We tried 2.15.2 and prior versions containing mediaCapturePermission methods.

Additional context

Similar issue is described in this topic: Web Meeting SDK MediaCapturePermission not working

Our troubleshooting

After experimenting with different meeting configurations, we found, that bot enables recording indication with same SDK methods without any error, if we:

  • enable an option “Automatically record meeting on the local computer” for the Free zoom profile (with corresponding Meeting SDK zoom app creds on developer account for it)
  • enable an option “Automatically record meeting” for the Paid zoom profile (with corresponding Meeting SDK zoom app creds on developer account for it)

Found workaround

Since this option requires manual setting of this option from our users for each meeting, we kept looking for alternatives and found one.

We found an recordingToken argument in method ZoomMtg.join that gives permission for recording for the meetings for which we can obtain the local recording token via REST API method*(developers zoom us → /docs/api/rest/reference/zoom-api/methods/#operation/meetingLocalRecordingJoinToken)*.

So, we introduced an extra zoom app of Server-to-Server OAuth type and implemented the usage flow:

  1. Obtain access token via REST API method (developers zoom us → /docs/internal-apps/s2s-oauth/) with Server-to-Server app creds
  2. Using access token and meeting_id, retrieve local recording token via REST API method*(developers zoom us → /docs/api/rest/reference/zoom-api/methods/#operation/meetingLocalRecordingJoinToken)*
  3. In bot:
    1. Set local recording token value to recordingToken during calling ZoomMtg.join
    2. perform same recording method calls as earlier: ZoomMtg.mediaCapturePermission, then ZoomMtg.mediaCapture

Of course, both apps are connected to developer accounts, so we could test them without publishing.

With such implementation we could make recording indication work for meeting with any option of “automatic recording”, even when this option is not enabled, without any errors.

However, this workaround is forcing us to use two Zoom apps to make bot properly working. So we’d need to verify and publish both of them and ask users to add Server-To-Server OAuth app and consent appropriate permissions that may look complicated and confusing for users.

Would be great to find a solution that would allow us to use only the Meeting SDK app for correct recording indication.

@alex_at_semblyai ,

Here’s the workflow for Web

  1. Call mediaCapturePermission from Web

  2. Host received the request, and MUST approve your request before you can move to step 3.

  3. Gets a response (request to recorded granted by Host)

  4. Call mediaCapture, participants will get prompt (this meeting is being recorded)

meetingLocalRecordingJoinToken does not work on Web SDK if I’m not mistaken.
I have personally used it for Windows and Linux Meeting SDK for raw recording.

Hey @alex_at_semblyai, this is definitely an issue we’ve encountered as well as we use the Zoom Web SDK extensively to power our bots.

@chunsiong.zoom is definitely correct, that it seems like one of your problems is that you’re not requesting recording permission from the host before you try to start recording.

In our experience, we’ve also seen a few bugs related to getting recording permission and initiating the local recording in SDK version 2.15.2, but after upgrading to 2.17.0 everything seems to be working great.

In terms of implementing the “Local Recording Token” flow with just the Meeting SDK app, this is definitely possible! Since the Meeting SDK app can also serve as a user-level OAuth app, you can request the “Get Local Recording Token” scope in your Meeting SDK app, and have your users grant permissions to that app through OAuth.

That way, you’ll just have 1 app in the Zoom marketplace, and you’ll only need to go through approval once.

As an alternative, you can also use which is an API for hosted meeting bots. This means you don’t need to run the infrastructure, you don’t need to update the SDK when new changes come out, and we also automate the process of fetching the “Local Recording Token”, so the bot can automatically record.

1 Like


Failed on step 1 with the same error (with the most resent version of sdk: 2.17.0)

operate: ‘request’,
success: console.log,
error: console.log

zoom-meeting-2.17.0.min.js:2 {method: ‘mediaCapturePermission’, status: false, errorCode: 1, errorMessage: ‘not support grant local record permissin’, result: null}errorCode: 1errorMessage: "not support grant local record permissin"method: "mediaCapturePermission"result: nullstatus: false[[Prototype]]: Object

mediaCapturePermission doesn't work in Zoom web app It looks like Kanata has exactly the same problem.

@oleksiy.vlasov , this fix should have been rolled out. I’ve tested it on 2.17 and it works.
Please test it and let me know if it still happens.

This topic was automatically closed 30 days after the last reply. New replies are no longer allowed.