import { EventEmitter } from "events"; import { Logger } from "../common/Logger"; import { Core } from "../Core"; import { GenericService } from "./GenericService"; import { Webinar } from "../common/models/webinar"; export {}; declare class WebinarsService extends GenericService { private avatarDomain; private readonly _protocol; private readonly _host; private readonly _port; private _webinars; private webinarEventHandler; private webinarHandlerToken; static getClassName(): string; getClassName(): string; static getAccessorName(): string; getAccessorName(): string; constructor(_core: Core, _eventEmitter: EventEmitter, _http: any, _logger: Logger, _startConfig: { start_up: boolean; optional: boolean; }); start(_options: any): Promise; stop(): Promise; init(useRestAtStartup: boolean): Promise; attachHandlers(): void; LIST_EVENT_TYPE: { ADD: { code: number; label: string; }; UPDATE: { code: number; label: string; }; REMOVE: { code: number; label: string; }; DELETE: { code: number; label: string; }; SUBSCRIBE: { code: number; label: string; }; UNSUBSCRIBE: { code: number; label: string; }; CREATE: { code: number; label: string; }; }; onCreateWebinar(webinarInfo: { id: string; }): Promise; private onDeleteWebinar; /** * @name getWebinarFromCache * @private * @category Webinars Utils * @param {string} webinarId * @description * GET A CHANNEL FROM CACHE
*/ private getWebinarFromCache; private addOrUpdateWebinarToCache; private removeWebinarFromCache; /** * @public * @nodered true * @method createWebinar * @since 2.3.0 * @instance * @category Webinars * @description * Create a webinar (2 rooms are used for it).
* @param {string} name The name of the bubble to create. * @param {string} subject Webinar subject. * @param {Date} waitingRoomStartDate Waiting room start date UTC format. * @param {Date} webinarStartDate Webinar start date UTC format. * @param {Date} webinarEndDate Webinar end date UTC format. * @param {Array} reminderDates Up to 10 webinar reminder dates UTC format. * @param {string} timeZone Webinar time zone. If none, user time zone will be used. * @param {boolean} register=true Is participant registration required for webinar? Default value : true. * @param {string} approvalRegistrationMethod="automatic" Participants approval method. If 'manual` is selected, webinar creator can choose to manually approve or reject participants. default value : automatic. Possible values : manual, automatic. * @param {boolean} passwordNeeded=true If true, a password is needed when joining the webinar. This password is included in the registration confirmation email. Default value : true. * @param {boolean} isOrganizer=false If true, webinar creator is also an organizer. Default value : false. * @param {Array} waitingRoomMultimediaURL Up to 5 URL of media to broadcast in the waiting room. * @param {string} stageBackground Free field used for customization (for example a file descriptor unique identifier). * @param {string} chatOption="participant" Define how participants can chat with organizers. Default value : participant. Possible values : participant, visitor, private. * @async * @return {Promise} */ createWebinar(name: string, subject: string, waitingRoomStartDate: Date, webinarStartDate: Date, webinarEndDate: Date, reminderDates: Array, timeZone: string, register: boolean, approvalRegistrationMethod: string, passwordNeeded: boolean, isOrganizer: boolean, waitingRoomMultimediaURL: Array, stageBackground: string, chatOption?: string): Promise; /** * @public * @nodered true * @method updateWebinar * @since 2.3.0 * @category Webinars * @instance * @description * Update a webinar.
* @param {string} webinarId Webinar identifier. * @param {string} name The name of the bubble to create. * @param {string} subject Webinar subject. * @param {Date} waitingRoomStartDate Waiting room start date UTC format. * @param {Date} webinarStartDate Webinar start date UTC format. * @param {Date} webinarEndDate Webinar end date UTC format. * @param {Array} reminderDates Up to 10 webinar reminder dates UTC format. * @param {string} timeZone Webinar time zone. If none, user time zone will be used. * @param {boolean} register Is participant registration required for webinar? * @param {string} approvalRegistrationMethod Participants approval method. If 'manual` is selected, webinar creator can choose to manually approve or reject participants. Possible values : manual, automatic. * @param {boolean} passwordNeeded If true, a password is needed when joining the webinar. This password is included in the registration confirmation email. * @param {boolean} lockRegistration Turn off registration for webinar before it starts. * @param {Array} waitingRoomMultimediaURL Up to 5 URL of media to broadcast in the waiting room. * @param {string} stageBackground Free field used for customization (for example a file descriptor unique identifier). * @param {string} chatOption Define how participants can chat with organizers. Default value : participant. Possible values : participant, visitor, private. * @async * @return {Promise} */ updateWebinar(webinarId: string, name: string, subject: string, waitingRoomStartDate: Date, webinarStartDate: Date, webinarEndDate: Date, reminderDates: Array, timeZone: string, register: boolean, approvalRegistrationMethod: string, passwordNeeded: boolean, lockRegistration: boolean, waitingRoomMultimediaURL: Array, stageBackground: string, chatOption: string): Promise; /** * @public * @nodered true * @method getWebinarData * @since 2.3.0 * @instance * @category Webinars * @description * Get data for a given webinar.
* @param {string} webinarId Webinar identifier. * @async * @return {Promise} */ getWebinarData(webinarId: string): Promise; /** * @public * @nodered true * @method getWebinarsData * @instance * @category Webinars * @since 2.3.0 * @description * Get data for webinars where requester is creator, organizer, speaker and/or participant.
* @param {string} role filter. Possible values : creator, organizer, speaker, participant * @async * @return {Promise} */ getWebinarsData(role: string): Promise; /** * @public * @nodered true * @method fetchMyWebinars * @since 2.3.0 * @instance * @async * @category Webinars * @param {boolean} forceServerSearch Boolean to force the get of webinars's informations from server. * @description * Get the webinars you own.
* Return a promise.
* @return {Promise} Return Promise */ fetchMyWebinars(forceServerSearch?: boolean): Promise; /** * @public * @nodered true * @method warnWebinarModerators * @since 2.3.0 * @instance * @category Webinars * @description * When main speakers and organizers are selected, it's time to warn each of them to join the practice room. when some webinar information change such as:
* As a result, moderatorsSelectedAnNotified boolean is set to true.
* @param {string} webinarId Webinar unique identifier.
* Notes:
* API Call Mandatory before publishing the webinar event:
* The webinar can't be published if webinar moderators are not warned prior.
* see API publishAWebinarEvent
* @async * @return {Promise} */ warnWebinarModerators(webinarId: string): Promise; /** * @public * @nodered true * @method publishAWebinarEvent * @since 2.3.0 * @instance * @category Webinars * @description * When main information about the webinar event are decided, it's up to open participant registration and allow automatic email sent when some webinar information change such as:
* cancellation
* date changes
* speakers added or removed
* As a result, emailNotification boolean is set to true. This boolean is checked when a participant try to submit a registration earlier. See API POST /api/rainbow/webinar/v1.0/webinars/self-register
* @param {string} webinarId Webinar unique identifier.
* @async * @return {Promise} */ publishAWebinarEvent(webinarId: string): Promise; /** * @public * @nodered true * @method deleteWebinar * @since 2.3.0 * @category Webinars * @instance * @description * Delete a webinar.
* @param {string} webinarId Webinar unique identifier.
* @async * @return {Promise} */ deleteWebinar(webinarId: string): Promise; } export { WebinarsService as WebinarsService };