Create meeting without host, only with participant and bot

Hi! I want to implement new features that can help me.

I want to implement code that can create scheduled meeting with host as zoom linux bot.

When the time is up, I want my bot to connect to the created conference and start recording audio and video. After that other participants can connect to the conference, but I don’t intend to connect, I want to make this process automated.

I saw this in the create meeting API documentation “alternative_hosts”: “jchill@example.com;thill@example.com", however my bot is implemented as a Zoom App

Can someone help me?

@chunsiong.zoom maybe you know how to do this?

Hey @emotioniq,

To create/schedule meetings, you’ll want to use the Create Meeting endpoint, which will require the meeting:write scope (or meeting:write:admin for admin-managed apps) on your Zoom app.

If you want the bot to act as the host, one method is to use a dedicated Zoom “service account”, connect it via OAuth to your app, and use that account’s token to create any meetings through the endpoint above. If you want these meetings to be created on behalf of your end users, you can have them authenticate to your app directly instead of the service account.

The bot portion of this you’ll need to use the Meeting SDK (I recommend the Linux SDK) - you can find an example of a bot implementation using this SDK in this repo.

Then, you can generate a ZAK token using that account, and provide it to the bot, which allows it to start that meeting on behalf of the underlying service account user. Keep in mind that if you’re creating meetings using your end user’s tokens, you’ll need to generate the ZAK using that same OAuth connection.

If you didn’t want to build all of this and manage the bot infrastructure yourself, another option is to use Recall.ai. It’s a simple 3rd party API for meeting bots that allows you to get raw video/audio in just a few lines of code.

Let me know if you have any questions!

@amanda-recallai So in order for my bot to start and manage the conference, instead of “RECORD_TOKEN” I have to pass the ZAK token?

Or I need to generate token like this Meeting SDK Auth - Zoom Developers and pass it to token field?

meeting_number: "1234567890"
token: "xxxxxxxx.yyyyyyyyyyyyyyyyyy.zzzzzzzzzzzzzzzzz"
meeting_password: "123456"
recording_token: ""
GetVideoRawData: "true"
GetAudioRawData: "true"
SendVideoRawData: "false"
SendAudioRawData: "false"

@chunsiong.zoom @amanda-recallai
So, in documentation I find how I can start meeting using my bot Meetings | MSDK | Linux - Zoom Developers
But, I don’t understand what is vanityID and customer_key
I tried to send as vanityID user PMI and ZAK token as customer_key, but I think I make something wrong, cause I get Segmentation fault (core dumped) ./meetingSDKDemo
I change StartMeeting function like this

void StartMeeting()
{
	std::cout<<"START MEETING FUNCTION"<<std::endl;
	ZOOM_SDK_NAMESPACE::StartParam startParam;
	startParam.userType = ZOOM_SDK_NAMESPACE::SDK_UT_NORMALUSER;
	startParam.param.normaluserStart.vanityID = "**********".c_str();
	startParam.param.normaluserStart.customer_key = token.c_str();
	startParam.param.normaluserStart.isVideoOff = false;
	startParam.param.normaluserStart.isAudioOff = false;
	std::cout<<"START MEETING FUNCTION params added succsessfully"<<std::endl;

	ZOOM_SDK_NAMESPACE::SDKError err = m_pMeetingService->Start(startParam);
	std::cout<<"START MEETING FUNCTION Start"<<std::endl;
	if (SDKError::SDKERR_SUCCESS == err)
	{
		std::cerr << "StartMeeting:success " << std::endl;
	}
	else
	{
		std::cerr << "StartMeeting:error " << std::endl;
	}
}

and call it like this

int main(int argc, char *argv[])
{

	ReadTEXTSettings();
	
	InitMeetingSDK();
	AuthMeetingSDK();
	initAppSettings();
	StartMeeting();
	loop = g_main_loop_new(NULL, FALSE);
	// add source to default context
	g_timeout_add(1000, timeout_callback, loop);
	g_main_loop_run(loop);
	return 0;
}