/** * @file meeting_participants_ctrl_interface.h * @brief Meeting Participants Controller Interface. */ #ifndef _MEETING_ParticipantsCtrl_INTERFACE_H_ #define _MEETING_ParticipantsCtrl_INTERFACE_H_ #include "zoom_sdk_def.h" #include "meeting_service_components/meeting_recording_interface.h" #if defined(WIN32) #include "meeting_service_components/meeting_emoji_reaction_interface.h" #endif BEGIN_ZOOM_SDK_NAMESPACE /** * @brief Role of user. * Here are more detailed structural descriptions. */ enum UserRole { /** For initialization. */ USERROLE_NONE, /** Role of the host. */ USERROLE_HOST, /** Role of co-host. */ USERROLE_COHOST, /** Role of the panelist, valid only in webinar. */ USERROLE_PANELIST, /** Host role in breakout room. */ USERROLE_BREAKOUTROOM_MODERATOR, /** Role of attendee. */ USERROLE_ATTENDEE, }; /** * @brief Status of webinar attendee. * Here are more detailed structural descriptions. */ typedef struct tagWebinarAttendeeStatus { /** TRUE indicates that it is able to talk. */ bool allow_talk; tagWebinarAttendeeStatus() { allow_talk = false; } }WebinarAttendeeStatus; /** * @brief Type of focus mode. * Here are more detailed structural descriptions. */ enum FocusModeShareType { FocusModeShareType_None, FocusModeShareType_HostOnly, FocusModeShareType_AllParticipants, }; /** * @brief Info of virtual name tag. * Here are more detailed structural descriptions. */ typedef struct tagZoomSDKVirtualNameTag { /** Tag ID.tagID is the unique identifier.The range of tagID is 0 - 1024. */ int tagID; /** Tag name. */ const zchar_t* tagName; tagZoomSDKVirtualNameTag() { tagID = 0; tagName = nullptr; } }ZoomSDKVirtualNameTag; /** * @class IUserInfo * @brief User information interface. */ class IUserInfo { public: /** * @brief Get the username matched with the current user information. * @return If the function succeeds, the return value is the username. Otherwise failed, the return value is nullptr. * @note Valid for both normal user and webinar attendee. */ virtual const zchar_t* GetUserName() = 0; /** * @brief Determine whether the member corresponding with the current information is the host or not. * @return TRUE indicates the host. */ virtual bool IsHost() = 0; /** * @brief Get the user ID matched with the current user information. * @return If the function succeeds, the return value is the user ID. Otherwise the function fails, and the return value is ZERO(0). * @note Valid for both normal user and webinar attendee. */ virtual unsigned int GetUserID() = 0; /** * @brief Get the avatar file path matched with the current user information. * @return If the function succeeds, the return value is the avatar file path. Otherwise failed, the return value is nullptr. */ virtual const zchar_t* GetAvatarPath() = 0; /** * @brief Get the user persistent id matched with the current user information. * @return If the function succeeds, the return value is the user persistent id. Otherwise failed, the return value is nullptr. */ virtual const zchar_t* GetPersistentId() = 0; /** * @brief Get the customer_key matched with the current user information. * @return If the function succeeds, the return value is the customer_key. Otherwise failed, the return value is nullptr. * @note If you assign a customer_key for a user in the start/join meeting parameter, the value you assigned will be returned. Otherwise a empty string will be returned. */ virtual const zchar_t* GetCustomerKey() = 0; /** * @brief Determine the video status of the user specified by the current information. * @return TRUE indicates that the video is turned on. * @note Valid for both normal user and webinar attendee. */ virtual bool IsVideoOn() = 0; /** * @brief Determine the audio status of the user specified by the current information. * @return TRUE indicates that the audio status is muted. */ virtual bool IsAudioMuted() = 0; /** * @brief Get the audio type of the user specified by the current information when joins the meeting. * @return The type of audio when the user joins the meeting. */ virtual AudioType GetAudioJoinType() = 0; /** * @brief Determine whether the current information corresponds to the user himself or not. * @return TRUE indicates that the current information corresponds to the user himself. */ virtual bool IsMySelf() = 0; /** * @brief Determine whether the user specified by the current information is in the waiting room or not. * @return TRUE indicates that the specified user is in the waiting room. */ virtual bool IsInWaitingRoom() = 0; /** * @brief Determine whether the user specified by the current information raises hand or not. * @return TRUE indicates that the user raises hand. */ virtual bool IsRaiseHand() = 0; /** * @brief Get the type of role of the user specified by the current information. * @return The role of the user. */ virtual UserRole GetUserRole() = 0; /** * @brief Determine whether the user corresponding to the current information joins the meeting by telephone or not. * @return TRUE indicates that the user joins the meeting by telephone. */ virtual bool IsPurePhoneUser() = 0; /** * @brief Get the Mic level of the user corresponding to the current information. * @return The mic level of the user. */ virtual int GetAudioVoiceLevel() = 0; /** * @brief Determine whether the user corresponding to the current information is the sender of Closed Caption or not. * @return TRUE indicates that the user is the sender of Closed Caption. */ virtual bool IsClosedCaptionSender() = 0; /** * @brief Determine whether the user specified by the current information is talking or not. * @return TRUE indicates that the specified user is talking. */ virtual bool IsTalking() = 0; /** * @brief Determine whether the user specified by the current information is H323 user or not. * @return TRUE indicates that the specified user is H323 user. */ virtual bool IsH323User() = 0; /** * @brief Get the webinar status of the user specified by the current information. * @return The status of the specified user. */ virtual WebinarAttendeeStatus* GetWebinarAttendeeStatus() = 0; #if defined(WIN32) /** * @brief Determine whether the user specified by the current information is a interpreter or not. * @return TRUE indicates that the specified user is a interpreter, otherwise not. */ virtual bool IsInterpreter() = 0; /** * @brief Determine whether the user specified by the current information is a sign language interpreter or not. * @return TRUE indicates that the specified user is a sign language interpreter, otherwise false. */ virtual bool IsSignLanguageInterpreter() = 0; /** * @brief Get the active language, if the user is a interpreter. * @return If success, the return value is the active language abbreviation, Otherwise the return value is ZERO(0). */ virtual const zchar_t* GetInterpreterActiveLanguage() = 0; /** * @brief Get the emoji feedback type of the user. * @return The emoji feedback type of the user. */ virtual SDKEmojiFeedbackType GetEmojiFeedbackType() = 0; /** * @brief Determine whether the user specified by the current information in companion mode or not. * @return TRUE indicates that the specified user in companion mode. */ virtual bool IsCompanionModeUser() = 0; #endif /** * @brief Get the local recording status. * @return The status of the local recording status. */ virtual RecordingStatus GetLocalRecordingStatus() = 0; /** * @brief Determine whether the user has started a raw live stream. * @return TRUE indicates that the specified user has started a raw live stream, otherwise false. */ virtual bool IsRawLiveStreaming() = 0; /** * @brief Determine whether the user has raw live stream privilege. * @return TRUE indicates that the specified user has raw live stream privilege, otherwise false. */ virtual bool HasRawLiveStreamPrivilege() = 0; /** * @brief Query if the participant has a camera. * @return TRUE means the user has a camera, otherwise false. */ virtual bool HasCamera() = 0; /** * @brief Determine whether the user is production studio user. * @return TRUE indicates that the specified user is production studio user, otherwise false. */ virtual bool IsProductionStudioUser() = 0; /** * @brief Determine whether the user specified by the current information is in the webinar backstage or not. * @return TRUE indicates that the specified user is in the webinar backstage. */ virtual bool IsInWebinarBackstage() = 0; /** * @brief Get the parent user ID of the production studio user. * @note Just production studio user has parent. */ virtual unsigned int GetProductionStudioParent() = 0; /** * @brief Determine whether the user specified by the current information is bot user or not. * @note This function return true only when using Meeting SDK with an On-Behalf token; Otherwise it will always return false. * @return TRUE indicates that the specified user is bot user. */ virtual bool IsBotUser() = 0; /** * @brief Get the bot app name. * @return If the function succeeds, the return value is the bot app name. * Otherwise the function fails, the return value is nullptr. */ virtual const zchar_t* GetBotAppName() = 0; /** * @brief Query if the participant enabled virtual name tag. * @return TRUE means enabled, Otherwise not. */ virtual bool IsVirtualNameTagEnabled() = 0; /** * @brief Query the virtual name tag roster infomation. * @return If the function succeeds, it return the list of user's virtual name tag roster info. */ virtual IList* GetVirtualNameTagList() = 0; /** * @brief Query the granted assets info when assign a co-owner. * @return If the function succeeds, it returns the list of user's grant assets info. * @note If not granted any assets privilege, the default configuration of the web will be queried. If has granted assets privilege, the result after granting will be queried. */ virtual IList* GetGrantCoOwnerAssetsInfo() = 0; virtual ~IUserInfo(){}; }; /** * @class IMeetingParticipantsCtrlEvent * @brief Meeting Participants Controller Callback Event. */ class IMeetingParticipantsCtrlEvent { public: virtual ~IMeetingParticipantsCtrlEvent() {} /** * @brief Callback event of notification of users who are in the meeting. * @param lstUserID List of user IDs. * @param strUserList List of users in JSON format. This function is currently invalid, hereby only for reservations. * @note Valid for both normal user and webinar attendee. */ virtual void onUserJoin(IList* lstUserID, const zchar_t* strUserList = nullptr) = 0; /** * @brief Callback event of notification of user who leaves the meeting. * @param lstUserID List of the user ID who leaves the meeting. * @param strUserList List of the users in JSON format. This function is currently invalid, hereby only for reservations. * @note Valid for both normal user and webinar attendee. */ virtual void onUserLeft(IList* lstUserID, const zchar_t* strUserList = nullptr) = 0; /** * @brief Callback event of notification of the new host. * @param userId Specify the ID of the new host. */ virtual void onHostChangeNotification(unsigned int userId) = 0; /** * @brief Callback event of changing the state of the hand. * @param bLow TRUE indicates to put down the hand, FALSE indicates to raise the hand. * @param userid Specify the user ID whose status changes. */ virtual void onLowOrRaiseHandStatusChanged(bool bLow, unsigned int userid) = 0; /** * @brief Callback event of changing the screen name. * @param userId list Specify the users ID whose status changes. * @note Valid for both normal user and webinar attendee. */ virtual void onUserNamesChanged(IList* lstUserID) = 0; /** * @brief Callback event of changing the co-host. * @param userId Specify the user ID whose status changes. * @param isCoHost TRUE indicates that the specified user is co-host. */ virtual void onCoHostChangeNotification(unsigned int userId, bool isCoHost) = 0; /** * @brief Callback event of invalid host key. */ virtual void onInvalidReclaimHostkey() = 0; /** * @brief Callback event of the host calls the lower all hands interface, the host/cohost/panelist will receive this callback. */ virtual void onAllHandsLowered() = 0; /** * @brief Callback event that the status of local recording changes. * @param userId Specify the user ID whose status changes. * @param status Value of recording status. */ virtual void onLocalRecordingStatusChanged(unsigned int user_id, RecordingStatus status) = 0; /** * @brief Callback event that lets participants rename themself. * @param bAllow True allow. If false, participants may not rename themselves. */ virtual void onAllowParticipantsRenameNotification(bool bAllow) = 0; /** * @brief Callback event that lets participants unmute themself. * @param bAllow True allow. If false, participants may not rename themselves. */ virtual void onAllowParticipantsUnmuteSelfNotification(bool bAllow) = 0; /** * @brief Callback event that lets participants start a video. * @param bAllow True allow. If false, disallow. */ virtual void onAllowParticipantsStartVideoNotification(bool bAllow) = 0; /** * @brief Callback event that lets participants share a new whiteboard. * @param bAllow True allow. If false, participants may not share new whiteboard. */ virtual void onAllowParticipantsShareWhiteBoardNotification(bool bAllow) = 0; /** * @brief Callback event that the request local recording privilege changes. * @param status Value of request local recording privilege status. */ virtual void onRequestLocalRecordingPrivilegeChanged(LocalRecordingRequestPrivilegeStatus status) = 0; /** * @brief Callback event that lets participants request that the host starts cloud recording. * @param bAllow True allow. If false, disallow. */ virtual void onAllowParticipantsRequestCloudRecording(bool bAllow) = 0; /** * @brief Callback event that the user avatar path is updated in the meeting. * @param userID Specify the user ID whose avatar updated. */ virtual void onInMeetingUserAvatarPathUpdated(unsigned int userID) = 0; /** * @brief Callback event that participant profile status change. * @param bHide true means hide participant profile picture, false means show participant profile picture. */ virtual void onParticipantProfilePictureStatusChange(bool bHidden) = 0; /** * @brief Callback event that focus mode changed by host or co-host. * @param bEnabled True means the focus mode change to on. Otherwise off. */ virtual void onFocusModeStateChanged(bool bEnabled) = 0; /** * @brief Callback event that that focus mode share type changed by host or co-host. * @param type Share type change. */ virtual void onFocusModeShareTypeChanged(FocusModeShareType type) = 0; /** * @brief Callback event that the bot relationship changed in the meeting. * @param authorizeUserID Specify the authorizer user ID. */ virtual void onBotAuthorizerRelationChanged(unsigned int authorizeUserID) = 0; /** * @brief Notification of virtual name tag status change. * @param bOn TRUE means virtual name tag is turn on, Otherwise not. * @param userID The ID of user who virtual name tag status changed. */ virtual void onVirtualNameTagStatusChanged(bool bOn, unsigned int userID) = 0; /** * @brief Notification of virtual name tag roster info updated. * @param userID The ID of user who virtual name tag status changed. */ virtual void onVirtualNameTagRosterInfoUpdated(unsigned int userID) = 0; #if defined(WIN32) /** * @brief Callback event that the companion relationship created in the meeting. * @param parentUserID Specify the parent user ID. * @param childUserID Specify the child user ID. */ virtual void onCreateCompanionRelation(unsigned int parentUserID, unsigned int childUserID) = 0; /** * @brief Callback event that the companion relationship removed in the meeting. * @param childUserID Specify the child user ID. */ virtual void onRemoveCompanionRelation(unsigned int childUserID) = 0; #endif /** * @brief Callback event when the user's grant co-owner permission changed. * @param canGrantOther true means can grant others,otherwise not. */ virtual void onGrantCoOwnerPrivilegeChanged(bool canGrantOther) = 0; }; /** * @class IMeetingParticipantsController * @brief Meeting waiting room controller interface */ class IMeetingParticipantsController { public: /** * @brief Set the participants controller callback event handler. * @param pEvent A pointer to the IParticipantsControllerEvent that receives the participants event. * @return If the function succeeds, the return value is SDKErr_Success. Otherwise failed. */ virtual SDKError SetEvent(IMeetingParticipantsCtrlEvent* pEvent) = 0; /** * @brief Get the list of all the panelists in the meeting. * @return If the function succeeds, the return value is the list of the panelists in the meeting. Otherwise the function fails, and the return value is nullptr. * @note Valid for both ZOOM style and user custom interface mode. Valid for both normal user and webinar attendee. */ virtual IList* GetParticipantsList() = 0; /** * @brief Get the information of specified user. * @param userid Specify the user ID for which you want to get the information. * @return If the function succeeds, the return value is a pointer to the IUserInfo. Otherwise the function fails, and the return value is nullptr. * @note Valid for both ZOOM style and user custom interface mode. Valid for both normal user and webinar attendee. */ virtual IUserInfo* GetUserByUserID(unsigned int userid) = 0; /** * @brief Get the information of current user. * @return If the function succeeds, the return value is a pointer to the IUserInfo. Otherwise failed, the return value is nullptr. * @note Valid for both ZOOM style and user custom interface mode.. */ virtual IUserInfo* GetMySelfUser() = 0; /** * @brief Get the information about the bot's authorized user. * @param userid Specify the user ID for which to get the information. * @return If the function succeeds, the return value is a pointer to the IUserInfo. Otherwise the function fails, and the return value is nullptr. * @note Valid for both ZOOM style and user custom interface mode. */ virtual IUserInfo* GetBotAuthorizedUserInfoByUserID(unsigned int userid) = 0; /** * @brief Get the authorizer's bot list. * @param userid Specify the user ID for which to get the information. * @return If the function succeeds, the return value is the authorizer's bot list in the meeting. Otherwise the function fails, and the return value is nullptr. * @note Valid for both ZOOM style and user custom interface mode. */ virtual IList* GetAuthorizedBotListByUserID(unsigned int userid) = 0; #if defined(WIN32) /** * @brief Get the information about the user's parent user. * @param userid Specify the user ID for which to get the information. * @return If the function succeeds, the return value is a pointer to the IUserInfo. Otherwise the function fails, and the return value is nullptr. * @note Valid for both ZOOM style and user custom interface mode. */ virtual IUserInfo* GetCompanionParentUser(unsigned int userid) = 0; /** * @brief Get the user's child list. * @param userid Specify the user ID for which to get the information. * @return If the function succeeds, the return value is the sub-user list of user companion mode. Otherwise the function fails, and the return value is nullptr. * @note Valid for both ZOOM style and user custom interface mode. */ virtual IList* GetCompanionChildList(unsigned int userid) = 0; #endif /** * @brief Cancel all hands raised. * @param forWebinarAttendees is true, the SDK sends the lower all hands command only to webinar attendees. * forWebinarAttendees is false, the SDK sends the lower all hands command to anyone who is not a webinar attendee, such as the webinar host/cohost/panelist or everyone in a regular meeting.. * @return If the function succeeds, the return value is SDKErr_Success. Otherwise failed. * @note Valid for both ZOOM style and user custom interface mode.. */ virtual SDKError LowerAllHands(bool forWebinarAttendees) = 0; /** * @brief Change the screen name of specified user. Only the host or co-host can change the others' name. * @param userid Specify the user ID whose name needed to be changed. * @param userName Specify a new screen name for the user. * @param bSaveUserName Save the screen name to join the meeting next time. * @return If the function succeeds, the return value is SDKErr_Success. Otherwise failed. * @note Valid for both ZOOM style and user custom interface mode.. */ virtual SDKError ChangeUserName(const unsigned int userid, const zchar_t* userName, bool bSaveUserName) = 0; /** * @brief Cancel the hands raised of specified user. * @param userid Specify the user ID to put down the hands. * @return If the function succeeds, the return value is SDKErr_Success. Otherwise failed. * @note Valid for both ZOOM style and user custom interface mode.. */ virtual SDKError LowerHand(unsigned int userid) = 0; /** * @brief Raise hands in the meeting. * @return If the function succeeds, the return value is SDKErr_Success. Otherwise failed. * @note Valid for both ZOOM style and user custom interface mode.. */ virtual SDKError RaiseHand() = 0; /** * @brief Set the specified user as the host. * @param userid Specify the user ID to be the host. * @return If the function succeeds, the return value is SDKErr_Success. Otherwise failed. * @note Valid for both ZOOM style and user custom interface mode.. */ virtual SDKError MakeHost(unsigned int userid) = 0; /** * @brief Determine if it is able to change the specified user role as the co-host. * @param userid Specify the user ID. * @return If the specified user can be the co-host, the return value is SDKErr_Success. Otherwise failed. * @note Valid for both ZOOM style and user custom interface mode.. */ virtual SDKError CanbeCohost(unsigned int userid) = 0; /** * @brief Set the specified user as the co-host. * @param userid Specify the user ID who is to be the co-host. * @return If the function succeeds, the return value is SDKErr_Success. Otherwise failed. * @note Valid for both ZOOM style and user custom interface mode.. */ virtual SDKError AssignCoHost(unsigned int userid) = 0; /** * @brief Get back the co-host role from the specified user. * @param userid Specify the user ID to get back the co-host. * @return If the function succeeds, the return value is SDKErr_Success. Otherwise failed. * @note Valid for both ZOOM style and user custom interface mode.. */ virtual SDKError RevokeCoHost(unsigned int userid) = 0; /** * @brief Expel the specified user. * @param userid Specify the ID of user to be expelled. * @return If the function succeeds, the return value is SDKErr_Success. Otherwise failed. * @note Valid for both ZOOM style and user custom interface mode.. */ virtual SDKError ExpelUser(unsigned int userid) = 0; /** * @brief Check whether myself is original host. * @return true means that myself is original host, otherwise not. */ virtual bool IsSelfOriginalHost() = 0; /** * @brief Reclaim the role of the host. * @return If the function succeeds, the return value is SDKErr_Success. Otherwise failed. * @note Valid only for Zoom style user interface mode. */ virtual SDKError ReclaimHost() = 0; /** * @brief Determine if the user has the right to reclaim the host role. * @param [out] bCanReclaimHost TRUE indicates to have the right to reclaim the host role. * @return If the function succeeds, the return value is SDKErr_Success. Otherwise failed. * @note Valid for both ZOOM style and user custom interface mode.. */ virtual SDKError CanReclaimHost(bool& bCanReclaimHost) = 0; /** * @brief Reclaim role of host via host_key. * @param host_key The key to get the role of host. * @return If the function succeeds, the return value is SDKErr_Success. Otherwise failed. * @note Valid for both ZOOM style and user custom interface mode.. */ virtual SDKError ReclaimHostByHostKey(const zchar_t* host_key) = 0; virtual SDKError AllowParticipantsToRename(bool bAllow) = 0; virtual bool IsParticipantsRenameAllowed() = 0; virtual SDKError AllowParticipantsToUnmuteSelf(bool bAllow) = 0; virtual bool IsParticipantsUnmuteSelfAllowed() = 0; virtual SDKError AskAllToUnmute() = 0; /** * @brief Allowing the regular attendees to start video, it can only be used in regular meeetings(no bo). * @param bAllow TRUE indicates Allowing the regular attendees to start video. * @return If the function succeeds, the return value is SDKErr_Success. Otherwise failed. */ virtual SDKError AllowParticipantsToStartVideo(bool bAllow) = 0; /** * @brief Check whether the current meeting allows participants to start video, it can only be used in regular meeetings(no bo). * @return If allows participants to start video, the return value is true. */ virtual bool IsParticipantsStartVideoAllowed() = 0; /** * @brief Allowing the regular attendees to share whiteboard, it can only be used in regular meeetings(no bo). * @param bAllow TRUE indicates Allowing the regular attendees to share whiteboard. * @return If the function succeeds, the return value is SDKErr_Success. Otherwise failed. */ virtual SDKError AllowParticipantsToShareWhiteBoard(bool bAllow) = 0; /** * @brief Check whether the current meeting allows participants to share whiteboard, it can only be used in regular meeetings(no bo). * @return If allows participants to share whiteboard, the return value is true. */ virtual bool IsParticipantsShareWhiteBoardAllowed() = 0; /** * @brief Allowing the regular attendees to use chat, it can only be used in regular meeetings(no webinar or bo). * @param bAllow TRUE indicates Allowing the regular attendees to use chat. * @return If the function succeeds, the return value is SDKErr_Success. Otherwise failed. * @note Valid for both ZOOM style and user custom interface mode.. */ virtual SDKError AllowParticipantsToChat(bool bAllow) = 0; /** * @brief Check whether the current meeting allows participants to chat, it can only be used in regular meeetings(no webinar or bo).. * @return If allows participants to chat, the return value is true. * @note Valid for both ZOOM style and user custom interface mode.. */ virtual bool IsParticipantAllowedToChat() = 0; /** * @brief Check whether the current meeting allows participants to send local recording privilege request, it can only be used in regular meeetings(no webinar or bo). * @return If allows participants to send request, the return value is true. */ virtual bool IsParticipantRequestLocalRecordingAllowed() = 0; /** * @brief Allowing the regular attendees to send local recording privilege request, it can only be used in regular meeetings(no bo). * @param bAllow TRUE indicates Allowing the regular attendees to send local recording privilege request. * @return If the function succeeds, the return value is SDKErr_Success. Otherwise failed. */ virtual SDKError AllowParticipantsToRequestLocalRecording(bool bAllow) = 0; /** * @brief Check whether the current meeting auto grant participants local recording privilege request, it can only be used in regular meeetings(no webinar or bo). * @return If auto grant participants local recording privilege request, the return value is true. */ virtual bool IsAutoAllowLocalRecordingRequest() = 0; /** * @brief Auto grant or deny the regular attendee's local recording privilege request, it can only be used in regular meeetings(no bo). * @param bAllow TRUE indicates Auto grant or deny the regular attendee's local recording privilege request. * @return If the function succeeds, the return value is SDKErr_Success. Otherwise failed. */ virtual SDKError AutoAllowLocalRecordingRequest(bool bAllow) = 0; /** * @brief Determine if the current user can hide participant profile pictures. * @return If the function succeeds, the return value is SDKErr_Success. Otherwise failed. */ virtual SDKError CanHideParticipantProfilePictures() = 0; /** * @brief Check whether the current meeting hides participant pictures. * @return If participants profile pictures be hidden, the return value is true. */ virtual bool IsParticipantProfilePicturesHidden() = 0; /** * @brief Hide/Show participant profile pictures. * @param bHide TRUE indicates Hide participant profile pictures. * @return If the function succeeds, the return value is SDKErr_Success. Otherwise failed. */ virtual SDKError HideParticipantProfilePictures(bool bHide) = 0; /** * @brief Determine if the focus mode enabled or not by web portal. * @return True means focus mode enabled. Otherwise not. */ virtual bool IsFocusModeEnabled() = 0; /** * @brief Determine if the focus mode on or off. * @return True means focus mode on. Otherwise off. */ virtual bool IsFocusModeOn() = 0; /** * @brief Turn focus mode on or off. Focus mode on means Participants will only be able to see hosts' videos and shared content, and videos of spotlighted participants. * @param turnOn True means to turen on, false means to turn off. * @return If the function succeeds, the return value is SDKErr_Success. Otherwise failed. */ virtual SDKError TurnFocusModeOn(bool turnOn) = 0; /** * @brief Get focus mode share type indicating who can see the shared content which is controlled by host or co-host. * @return The current focus mode share type. */ virtual FocusModeShareType GetFocusModeShareType() = 0; /** * @brief Set the focus mode type indicating who can see the shared content which is controlled by host or co-host. * @param shareType The type of focus mode share type. * @return If the function succeeds, the return value is SDKErr_Success. Otherwise failed. */ virtual SDKError SetFocusModeShareType(FocusModeShareType shareType) = 0; /** * @brief Determine if the current user can enable participant request clould recording. * @return true means the current user can enable participant request clould recording. */ virtual bool CanEnableParticipantRequestCloudRecording() = 0; /** * @brief Check whether the current meeting allows participants to send cloud recording privilege request, This can only be used in regular meeetings and webinar(no breakout rooms). * @return If allows participants to send request, the return value is true. */ virtual bool IsParticipantRequestCloudRecordingAllowed() = 0; /** * @brief Toggle whether attendees can requests for the host to start a cloud recording. This can only be used in regular meeetings and webinar(no breakout rooms). * @param bAllow TRUE indicates that participants are allowed to send cloud recording privilege requests. * @return If the function succeeds, the return value is SDKErr_Success. Otherwise the function fails. */ virtual SDKError AllowParticipantsToRequestCloudRecording(bool bAllow) = 0; /** * @brief Determine if support virtual name tag feature. * @return TRUE means supports the virtual name tag feature. NO means not. */ virtual bool IsSupportVirtualNameTag() = 0; /** * @brief Enable the virtual name tag feature for the account. * @param bEnabled TRUE means enabled, Otherwise not. * @return If the function succeeds, it return SDKErr_Success. Otherwise failed. */ virtual SDKError EnableVirtualNameTag(bool bEnabled) = 0; /** * @brief Prepare to Update virtual name tag roster infomation. * @return If the function succeeds, the return value is SDKErr_Success. Otherwise failed. * @note If the function succeeds, all the created virtual name tag roster will be removed. */ virtual SDKError CreateVirtualNameTagRosterInfoBegin() = 0; /** * @brief Add the userRoster to a prepared list. * @param userRoster, The virtual name tag roster info list for specify user. * @return true if the userRoster is added to the prepared list successfully. * @note The maximum size of userRoster should less 20. User should sepcify the tagName and tagID of echo ZoomSDKVirtualNameTag object. The range of tagID is 0-1024. */ virtual bool AddVirtualNameTagRosterInfoToList(ZoomSDKVirtualNameTag userRoster) = 0; /** * @brief Batch create virtual name tag roster infoTo according to the prepare list. * @return If the function succeeds, the return value is SDKErr_Success. Otherwise failed. * @note CreateVirtualNameTagRosterInfoBegin() must be called before this function is called. Otherwise SDKErr_WRONG_USAGE will be returned. */ virtual SDKError CreateVirtualNameTagRosterInfoCommit() = 0; /** * @brief Query if the user can be assigned as co-owner in meeting. Co-owner can be grant with privilege to manage some assets after the meeting. * @param userid The ID of user who will be assigned as co-owner in meeting. * @return true means that the user can be assigned as co-owner. Otherwise cannot. */ virtual bool CanBeCoOwner(unsigned int userid) = 0; /** * @brief Assigns a user as co-host and grants privileges to manage assets after the meeting. * @param userid The ID of user to be assigned as co-host. * @param list A List of \link GrantCoOwnerAssetsInfo \endlink struct representing the assets and privileges to grant. * @return If the function succeeds, it will return SDKERR_SUCCESS. Otherwise failed. * @note The co-host cannot be assigned as co-host by himself. And the user should have the power to assign the role. */ virtual SDKError AssignCoHostWithAssetsPrivilege(unsigned int userid, IList* list) = 0; /** * @brief Assigns a user as host and grants privileges to manage assets after the meeting. * @param userid The ID of user to be assigned as host. * @param list A List of \link GrantCoOwnerAssetsInfo \endlink struct representing the assets and privileges to grant. * @return If the function succeeds, the return value is SDKERR_SUCCESS. Otherwise failed. * @note The host cannot be assigned as host by himself. And the user should have the power to assign the role. */ virtual SDKError MakeHostWithAssetsPrivilege(unsigned int userid, IList* list) = 0; }; END_ZOOM_SDK_NAMESPACE #endif