# Start, join, and leave meetings ## Start a meeting To start a meeting, initialize the `StartParam` data structure. 1. Set the `userType` to `ZOOM_SDK_NAMESPACE::SDK_UT_NORMALUSER;`. 2. Populate the `normaluserStart` structure of the startParam. - Set the `meetingNumber` to the meeting number of the meeting to start. - Set the `vanityID` if there is a `vanityID`. - Set the `customer_key` if there is a `customer_key`. - Set `isAudioOff` and `isVideoOff` to either `true` or `false`. 3. Call the `Start()` method to start a meeting. ```cpp ZOOM_SDK_NAMESPACE::StartParam startParam; startParam.userType = ZOOM_SDK_NAMESPACE::SDK_UT_NORMALUSER; startParam.param.normaluserStart.vanityID = NULL; startParam.param.normaluserStart.customer_key = NULL; startParam.param.normaluserStart.isVideoOff = false; startParam.param.normaluserStart.isAudioOff = false; ZOOM_SDK_NAMESPACE::IMeetingService* m_pMeetingService = SDKInterfaceWrap::GetInst().GetMeetingService(); ZOOM_SDK_NAMESPACE::SDKError err = m_pMeetingService->Start(startParam); ``` ### Get the Start Meeting status To know whether the start meeting action succeeded, didn't succeed, or resulted in an error, implement the `onMeetingStatusChange` method. ```cpp virtual void onMeetingStatusChanged(MeetingStatus status, int iResult = 0) = 0; ``` Check `MeetingStatus` definition in `meeting_service_interface.h`. ## Join a meeting To join a meeting identified by a meeting number, populate the `JoinParam` data structure. This shows joining a meeting as an anonymous user. 1. Set the `userType` to `SDK_UT_WITHOUT_LOGIN;`. 2. To join without login, populate the `JoinParam4WithoutLogin` data structure. - Set the `meetingNumber`. - Set the `vaniyID` if there is a `vanityID`. - Set the `userName` and `psw` (password). - Set the `customer_key` if there is a `customer_key`. - Set the `webinarToken` if joining a webinar. Otherwise, leave it as `NULL`. - Set the `isAudioOff` and `isVideoOff`, depending on the desired audio and video setting. 3. Call the `Join()` method to join the meeting. ```cpp ZOOM_SDK_NAMESPACE::JoinParam joinParam; joinParam.userType = ZOOM_SDK_NAMESPACE::SDK_UT_WITHOUT_LOGIN; ZOOM_SDK_NAMESPACE::JoinParam4WithoutLogin& withoutloginParam = joinParam.param.withoutloginuserJoin; withoutloginParam.meetingNumber = ; withoutloginParam.vanityID = NULL; withoutloginParam.userName = ""; withoutloginParam.psw = ""; withoutloginParam.customer_key = NULL; withoutloginParam.webinarToken = NULL; withoutloginParam.isVideoOff = true; withoutloginParam.isAudioOff = false; ZOOM_SDK_NAMESPACE::IMeetingService* m_pMeetingService = SDKInterfaceWrap::GetInst().GetMeetingService(); m_pMeetingService->Join(joinParam); ``` ### Get the Join Meeting status To know whether the join meeting action is a success or not, or to get the error message, implement the onMeetingStatusChange method. ```cpp virtual void onMeetingStatusChanged(MeetingStatus status, int iResult = 0) = 0; ``` Check `MeetingStatus` definition in `meeting_service_interface.h`. ## Leave a meeting 1. Use the `LeaveMeetingCmd` enum to decide whether to leave or end a meeting. 1. Use the appropriate `LeaveMeetingCmd` enum to either `LEAVE_MEETING` or `END_MEETING`. 1. Use the `Leave()` method to leave a meeting. ```cpp ZOOM_SDK_NAMESPACE::IMeetingService* m_pMeetingService = SDKInterfaceWrap::GetInst().GetMeetingService(); m_pMeetingService->Leave(ZOOM_SDK_NAMESPACE::LEAVE_MEETING); ``` ---