Join meeting as bot and record meeting

I want to create a bot that can join meeting and stream audio to our backend for transcriptions? does meeting sdk allow that? what’s the best way to do it?

@shaheer.teczon high level wise, you will need to do something like this.

  1. Use Meeting SDK for Windows, Linux or macOS
  2. Use the Client Id and Client Secret from General App in your Meeting SDK
  3. Use raw data functionality to get audio data in raw PCM data format
  4. If you need your bot to join meetings created by external hosts, you will need to publish your General App with Meeting SDK enabled

@chunsiong.zoom thank you for your response.

  1. I was wondering are there any other ways to initiate recording via api? but we want to get recording on server without need to be user on paid plan. Like anyone should be able to get record via our app (with permission) or is there a way that user add us in participant and we can record. Like what are other ways to automate it?

  2. Does using meeting SDK for multiple recordings require separate docker?

Currently there is no API to start cloud recording

Does using meeting SDK for multiple recordings require separate docker?

Yes

@shaheer.teczon

@chunsiong.zoom there is automatic cloud recording feature. Can’t we use that? but we want to save it on our cloud, even if our user is on free zoom plan, we want to record. Is there anyway we get to record or something. We really don’t want to go for docker option.

@shaheer.teczon, you could use the API for meeting bots instead, so you don’t need to run your own meeting bots on Docker.

When you record with a meeting bot, the user can use it on the free Zoom plan.

@amanda-recallai I could not find your pricing page. Can you share that?

@chunsiong.zoom Hoping to get a response from you on last query

@shaheer.teczon cloud recording is paid.

It depends on what your priorities are.
At this point in time, here are some possible choices

If you are want free

  • Use local recording
  • Upload the recording to your own cloud storage.

If you want hassle free

  • Use Cloud Recording (automatic)
  • Use Webhook to get recording completed event
  • Download the recording and save it to your own storage
  • Delete the recording from Zoom’s storage.

@chunsiong.zoom If I am not host, can I record and store on my own paid plan?

@shaheer.teczon

If I am not host, can I record and store on my own paid plan?

No, you can’t

@chunsiong.zoom , One last thing, i am trying to use this repo https:///zoom/meetingsdk-headless-linux-sample as an started. But facing error
| Consolidate compiler generated dependencies of target zoomsdk
zoomsdk-1 | [ 10%] Building CXX object CMakeFiles/zoomsdk.dir/src/main.cpp.o
zoomsdk-1 | [ 20%] Building CXX object CMakeFiles/zoomsdk.dir/src/Zoom.cpp.o
zoomsdk-1 | /tmp/meeting-sdk-linux-sample/src/Zoom.cpp: In member function ‘ZOOMSDK::SDKError Zoom::startRawRecording()’:
zoomsdk-1 | /tmp/meeting-sdk-linux-sample/src/Zoom.cpp:245:97: error: invalid new-expression of abstract class type ‘ZoomSDKAudioRawDataDelegate’
zoomsdk-1 | 245 | m_audioSource = new ZoomSDKAudioRawDataDelegate(!m_config.separateParticipantAudio());
zoomsdk-1 | |
^
zoomsdk-1 | In file included from /tmp/meeting-sdk-linux-sample/src/Zoom.h:29,
zoomsdk-1 | from /tmp/meeting-sdk-linux-sample/src/Zoom.cpp:1:

I tried using linux sdk 6.1.0.225 and 6.1.10.1435 but still same

Do i really need to shift to /zoom/meetingsdk-linux-raw-recording-sample or can i fix with headless

@shaheer.teczon if you are familiar with linux, you can implement all the missing dependencies.

The error message above says that in the newer version of the SDK, the sample code did not implement startRawRecording in ZoomSDKAudioRawDataDelegate

You can use zoom/meetingsdk-linux-raw-recording-sample or you can use zoom/meetingsdk-linux-raw-recording-sample as a reference on how to implement it on https:///zoom/meetingsdk-headless-linux-sample

@chunsiong.zoom I tried using same as in youtube video https:///www.youtube.com/watch?v=8SitD9mTXlA. I am using same commit he is using and same sdk versions. Apparently that version didnt have implementation issues. But i am still getting error. I am pretty sure i am using same commit he was on at recording time and same versions. Please have a look

– Build files have been written to: /tmp/meeting-sdk-linux-sample/build
zoomsdk-build | [ 10%] Building CXX object CMakeFiles/zoomsdk.dir/src/main.cpp.o
zoomsdk-build | [ 20%] Building CXX object CMakeFiles/zoomsdk.dir/src/Zoom.cpp.o
zoomsdk-build | /tmp/meeting-sdk-linux-sample/src/Zoom.cpp: In lambda function:
zoomsdk-build | /tmp/meeting-sdk-linux-sample/src/Zoom.cpp:58:92: error: invalid new-expression of abstract class type ‘MeetingRecordingCtrlEvent’
zoomsdk-build | 58 | auto recordingEvent = new MeetingRecordingCtrlEvent(onRecordingPrivilegeChanged);
zoomsdk-build | | ^
zoomsdk-build | In file included from /tmp/meeting-sdk-linux-sample/src/Zoom.h:26,
zoomsdk-build | from /tmp/meeting-sdk-linux-sample/src/Zoom.cpp:1:
zoomsdk-build | /tmp/meeting-sdk-linux-sample/src/events/MeetingRecordingCtrlEvent.h:12:7: note: because the following virtual functions are pure within ‘MeetingRecordingCtrlEvent’:
zoomsdk-build | 12 | class MeetingRecordingCtrlEvent : public IMeetingRecordingCtrlEvent {
zoomsdk-build | | ^~~~~~~~~~~~~~~~~~~~~~~~~
zoomsdk-build | In file included from /tmp/meeting-sdk-linux-sample/lib/zoomsdk/h/meeting_service_components/meeting_participants_ctrl_interface.h:9,
zoomsdk-build | from /tmp/meeting-sdk-linux-sample/src/Zoom.h:20,
zoomsdk-build | from /tmp/meeting-sdk-linux-sample/src/Zoom.cpp:1:
zoomsdk-build | /tmp/meeting-sdk-linux-sample/lib/zoomsdk/h/meeting_service_components/meeting_recording_interface.h:120:22: note: ‘virtual void ZOOMSDK::IMeetingRecordingCtrlEvent::onCloudRecordingStorageFull(time_t)’
zoomsdk-build | 120 | virtual void onCloudRecordingStorageFull(time_t gracePeriodDate) = 0;

@shaheer.teczon the SDK version required on github might not necessary match the video at point of creation. It might have been updated, hence 5.17.0 might not be the exact version which works.

@chunsiong.zoom. Thanks, I was able to resolve all issue and able to record now. One last question before I close ticket is:

I want to create and publish app on zoom marketplace which can be seen as taskpane on right of meeting with a custom UI? To what extent it is possible? Like i saw few apps in market place with custom UI? Can you refer me doc to build that?
Also is it possible to read and write chat from this sdk or not?

@chunsiong.zoom can you clarify on following errors. They just come randomly sometimes:

  1. Authentication failed because the Zoom SDK encountered an unknown error: 5
  2. Failed to connect to the meeting with MeetingFailCode 65535

@shaheer.teczon I’m not sure what you are asking regarding the taskpane.
If I’m not mistaken, you should be asking about Zoom Apps

Using Meeting SDK for Linux, you can read and write chat messages. Please use a seperate thread and tag me if you need help for this.

The error which you have mentioned are pretty generic.
Some of the things which I’ll do would be to

  • always generate a new signature when joining a meeting
  • ensure that the IAT and EXP are a bit flexible to cater to possible time drift / time difference across different systems
  • if you are joining an external meeting, ensure that your marketplace app is published.

@chunsiong.zoom Thanks for your response. I am facing those error on my own hosted meetings. I am just doing docker compose up for each new meeting right now so wont it automatically create new signature for each meeting? is there anything i am missing since error should not come on new docker. Also can you guide on whats 5 and 65535 error code means?

@chunsiong.zoom Also, I saw few apps that auto join meeting as soon as i host one, they may be using some web hook for that…but how do they join within a minute because new container take time in my case. I am pretty sure i am missing something here too. Any idea on how to make it scalable would be highly appreciated too. Thanks.