import { BehaviorSubject, Subject, Subscription } from "rxjs"; import { Company, CompanyInfo } from '../models/company.model'; import { PersonalRoutine } from '../models/personalRoutine.model'; import { TelephonyForward } from '../models/telephonyForward.model'; import { NetworkInvitation } from '../models/invitation.model'; import { MultiFactorAuthStatus, MultiFactorAuthType } from "./rainbow-auth.model"; import { ConnectedUserOxeTrunk, DisplayOrder, PostalAddress, User, UserAvatar, UserCustomStatus, UserEmailAddress, UserEvents, UserNotes, UserOwnFeatureCapabilities, UserPeerFeatureCapabilities, UserPhoneNumber } from '../models/user.model'; import { Conversation } from "./conversation.model"; import { ContactService } from "../services/core/contact.service"; import { PresenceHelperService } from "../services/core/presenceHelper.service"; /** * List of different types of users. */ export declare enum UserType { /** Rainbow User */ USER = "User", /** Microsoft Azure Directory contact */ O365_CONTACT = "O365Contact", /** Outlook contact (Desktop only) */ OUTLOOK_CONTACT = "OutlookContact", /** Business Directory contact */ BUSINESS_CONTACT = "BusinessContact", /** Personal Directory contact */ PERSONAL_CONTACT = "PersonalContact", /** PBX phonebook contact */ PHONEBOOK_CONTACT = "PhonebookContact", /** BOT */ BOT = "Bot", /** MCU BOT */ MCUBOT = "McuBot", /** Rainbow Room */ RAINBOW_ROOM = "RainbowRoom", /** Temporary contact used for internal purpose */ TEMP = "TemporaryInternal" } /** * List of different email types a User can have. */ export declare enum EmailType { /** Business email */ BUSINESS = "Business", /** Personal email */ PERSONAL = "Personal" } /** * List of different phone number types a User can have. * Several telephone numbers can be defined for a user. This number depends on the type of user and his configuration: * - The phone numbers the user specified in his profile or contact card. * - The phone numbers defined by the administrator of his company. * This applies in particular to the business number and the internal number associated with the telephony service. * These numbers cannot be changed by an end-user. * For a user, it is only possible to define one type of phone number. */ export declare enum PhoneNumberType { /** Business landline phone number */ BUSINESS = "Business", /** Business mobile phone number */ BUSINESS_MOBILE = "BusinessMobile", /** Business internal phone number */ BUSINESS_INTERNAL = "BusinessInternal", /** Personal phone number */ PERSONAL = "Personal", /** Personal phone number */ PERSONAL_MOBILE = "PersonalMobile", /** Other type of phone number */ OTHER = "Other" } export declare enum ReceivedFileCustomisationValue { ENABLED = "enabled", DISABLED = "disabled", INTERNAL_ONLY = "internalOnly" } /** * @internal */ export declare enum ccdModes { DEFAULT = "default", MIXED = "mixed", FIXED = "fixed" } /** * This interface is used to define the list of admin subcategories for user with the 'admin' role. */ export declare enum AdminType { ORGANIZATION_ADMIN = "organization_admin", COMPANY_ADMIN = "company_admin", SITE_ADMIN = "site_admin", COMPANY_SUPPORT = "company_support", UNDEFINED = "undefined" } /** * @internal * State of the Office365 subscription of Rainbow user. * Available only for the connected user and when Office365 is configured on admin side. */ export declare enum O365SubscriptionState { /** No Calendar events / Teams presence synchronization activated */ INACTIVE = "inactive", /** */ PENDING = "pending", /** Synchronization of Calendar events + Teams presence activated*/ ACTIVE = "active", /** Only Calendar events synchronization is activated */ ACTIVE_CALENDAR = "active_calendar", /** Only Teams presence synchronization is activated */ ACTIVE_TEAMS = "active_teams", /** */ ERROR = "error" } /** * This interface is used to define the list of roles a user can have. */ export declare enum UserRole { USER = "user", GUEST = "guest", SUPERADMIN = "superadmin", SUPPORT = "support", BUSINESS_ADMIN = "business_admin", CUSTOMER_SUCCESS_ADMIN = "customer_success_admin", ADMIN = "admin", BP_ADMIN_OPERATIONS = "bp_admin", BP_ADMIN_FINANCE = "bp_finance", BP_ADMIN_ANALYTICS = "bp_analytics", EC_ADMIN_ANALYTICS = "ec_analytics", DIRECTORY_ADMIN = "directory_admin", /** * Right to create a channel with a visibility for all users (users of my company and other companies). */ PUBLIC_CHANNELS_ADMIN = "public_channels_admin", /** * Right to create a channel with a visibility limited to my company and a "closed" confidentiality. * Selected or all users of my company will automatically be subscribed to the channel. They will not be able to unsubscribe. */ CLOSED_CHANNELS_ADMIN = "closed_channels_admin", /** * Right to create a channel with a visibility limited to my company and a "closed" confidentiality * All users of my company will automatically be subscribed to the channel. They will not be able to unsubscribe. */ ALL_COMPANY_CHANNELS_ADMIN = "all_company_channels_admin", SALES_ANALYTICS = "sales_analytics", /** User allowed to get privacy data for any user within his company */ PRIVACY_OPERATIONS = "privacy_operations", /** User allowed to create/update/launch webinars */ WEBINAR_HOST = "webinar_host", /** User is supervisor of a supervision group. */ GROUP_SUPERVISOR = "supervisor", /** Role allowing multiline softphone for Attendant Console features */ ATTENDANT_CONSOLE = "attendant" } /** * Interface used only by UCaaS (Web Client) to manage the user connection wizard (1st connection). * This interface must not be exposed to SDKv2, as properties manipulate data with names and values that are strongly correlated with the server * Note that this data may be exposed to SDKv2 under another name and/or format, or not at all. * @internal */ export interface ConnectedUserInit { /** * This data must be set to 'true' as soon as the user is considered initialized, i.e. * when he enters his firstname and lastname on his first connection. */ isInitialized?: boolean; /** * User visibility * Specify whether the user can be searched by users in other companies and whether the user can search for users in other companies. */ visibility?: string; /** * Defines the user as a guest * This allows someone who doesn't have a Rainbow user account to join a bubble and participate in the conversation thanks to an e-mail invitation. */ guestMode?: boolean; /** * The guest user's company name */ companyNameOfGuest?: string; } export interface CcdAgent { mode: ccdModes; agentPhoneNumber: string; isCCDAgentLogged?: boolean; } /** * Interface used only by UCaaS (Web Client) to manage user communication information such as emails and phone numbers. * This interface must not be exposed to SDKv2, as the properties (typed 'any') manipulate data with names and values * that are strongly correlated with the server. * Note that this data may be exposed to SDKv2 under another name and/or format, or not at all. * @internal */ export interface ConnectedUserMedia { /** * Array of user emails addresses, each address entry represented by an JSON object in the format * \{email: ..., type: ... \} */ emails?: any[]; /** * Array of user phone numbers, each number entry represented as an JSON object * \{ number: ..., type:...,, deviceType: ...,, isVisibleByOthers: ... \} */ phoneNumbers?: any[]; } /** * Interface used (only for hub case) to store all secondary Ddi phone numbers. * @internal */ export interface SecondaryDdiNumber { phonePro: string; phoneProCan: string; secondaryDdiOrder: number; } /** * This class is used to represent a contact or the connected user. * A contact is defined by a set of public information (name, firstname, avatar...) and a set of private information that are only shared with contacts that are in the user's network or in the same company (email, phone numbers...) * @internal */ export declare class Contact implements User { static SIPWISE_RVCP: string; static NameUpdatePrio: { NO_UPDATE_PRIO: number; OUTLOOK_UPDATE_PRIO: number; SERVER_UPDATE_PRIO: number; MAX_UPDATE_PRIO: number; }; static textAvatarColor: string[]; static textAvatarName: string[]; /** Weak reference on contactService */ protected contactService?: ContactService; protected presenceHelperService?: PresenceHelperService; /** The contact IDentifier */ id: string; /** The contact internal id */ dbId: string; /** The contact XMPP bare jid */ jid: string; /** The contact XMPP full jid */ fullJid: string; /** The contact telephony XMPP jid */ jidtel: string; /** The User main email adress which can also be used for login */ loginEmail: string; /** Authentication/login via phone number */ loginPhone: string; /** The contact title */ title: string; /** The contact lastname */ lastname: string; /** The contact firstname */ firstname: string; /** The contact nickname */ nickname: string; /** The contact initials */ initials: string; /** Display format for users' full names (first and last names) data. */ displayOrder: DisplayOrder; /** The job title of the contact */ jobTitle: string; /** The contact language */ language: string; /**The Country of the contact */ country: string; /** The timezone of the contact*/ timezone: string; /** The user avatar object */ set avatar(avatar: UserAvatar); get avatar(): UserAvatar; /** The user avatar last modification date */ lastAvatarUpdateDate: any; /** Presence status of the user*/ status: 'online' | 'away' | 'offline' | 'unknown' | string; get statusInfo(): string; set statusInfo(info: string); /** Indicates whether the contact is fully initialized */ initialized: boolean; /** Indicates whether the user has been deleted */ isTerminated: boolean; get terminated(): boolean; get phoneNumbers(): UserPhoneNumber[]; get emails(): UserEmailAddress[]; get notes(): UserNotes; /** Data aggregating all properties related to a postal address. */ get postalAddress(): PostalAddress; /** Data aggregating flags already defined to characterise a contact. */ get userType(): UserType; get guest(): boolean; companyNameOfGuest: string; /** Data aggregating all the User feature capabilities */ get ownFeatureCapabilities(): UserOwnFeatureCapabilities; /** Data aggregating all the User feature capabilities */ get peerFeatureCapabilities(): UserPeerFeatureCapabilities; /** The different roles assigned to the connected user */ roles: UserRole[]; /** If the connected user has the ‘admin’ role, specify the sub-category of this role. */ adminType: AdminType; /** Indicates whether the user's company has the ALERT_NOTIFICATIONS_ALLOWED feature available via the ALERT offer. */ alertNotificationEnabledForMyCompany: boolean; voicemailNumber: string; private _customStatus; get customStatus(): UserCustomStatus; set customStatus(value: UserCustomStatus); /** Getter for building some company information based on contact type */ get companyInfo(): CompanyInfo; /** Indicates whether or not the contact belongs to the default company */ isInDefaultCompany: boolean; rxSubject: Subject; /** The subscription state for this contact (none or both) */ subscription: string; /** The subscription progress. Only applies to USER contacts */ ask: string; /** Indicates whether or not the contact is part of the favorized contact's list of the connected user */ roster: boolean; /** * Information about the invitation sent by a contact to the connected user. * (So not relevant for the connected user itself) * Data managed by the userNetwork service. */ invitation: NetworkInvitation; /** The associated conference identifier */ confId: string; /** The conversation if exists with this contact. Only applies to USER contacts. */ conversation: Conversation; /** * The communication capabilities or the contact, ie the list of communication actions that are currently supported by the contact. * This only applies to contacts of the USER type. * These capabilities are stored as a JSON object; each key is associated to a flag capability and its value indicates * whether it is possible (If 'true') or not to try to add this media. * - telephony * - webRTC * - sharedDesktop * - mediaAvailable (means telephony || webRTC) * - addMedia (true if user is already in call and has an active fullJid) */ capabilities: any; isConfiguringSettings: boolean; displayShortName: string; /** The display name of the contact, based on the '_displayName' property */ name: any; private _displayName; get displayName(): string; set displayName(displayName: string); /** * Indicates which service has priority for updating the contact name, based on the name resolution performed by this service. * Possible service options: * - NO_UPDATE_PRIO: No update priority then could be updated * - OUTLOOK_UPDATE_PRIO: Priority associated to outlook name resolution update * - SERVER_UPDATE_PRIO: Priority associated to server name resolution (phonebook or office365AD ...) update * - MAX_UPDATE_PRIO: No update could overwrite */ nameUpdatePrio: any; /** Obscured name of user for logs */ nameForLogs: string; /** Array of the user tags*/ tags: string[]; /** User-specific custom data in the form of an Object with a free keys/values structure. */ customData: any; /** General information attached to the user, can be modified by admin. */ userInfo1: any; /** General information attached to the user, can be modified by admin. */ userInfo2: any; /** internal avatar storage variable */ private _avatar; /** The avatar if any */ defaultAvatar: any; /** The avatar URL if any, null if none */ avatarSrc: string; color: string; colorIndex: number; colorName: string; avatarServerURL: string; /** The contact status message */ message: string; /** The telephony status of the contact.*/ telStatus: string; /** The IM status of the contact.*/ imStatus: string; /** The old status before making a call/*/ oldImStatus: string; /** The last IM status for each resource.*/ imStatusStamp: any[]; /** An object containing the list of all resources used by the connected user.*/ resources: any; /** The first mobile resource detected.*/ mobileResource: string; /** The contact last activity date.*/ lastActivityDate: BehaviorSubject; private _guestMode; guestModeSubject: BehaviorSubject; get guestMode(): boolean; set guestMode(value: boolean); /** The right for a guest to join the company by completing the creation of his user account. */ denySelfRegister: boolean; /** The professional email of a USER contact */ emailPro: string; /** The personal email of a USER contact */ emailPerso: string; /** The email of a directory contact (from Business, Personal, O365 directories */ email: string; /** The professional phone number of the contact (landline, work) */ phonePro: string; /** The professional phone number of the contact (canonical format) */ phoneProCan: string; /** A table of secondary Ddi (for hub case only): */ secondaryDdiNumbers: SecondaryDdiNumber[]; /** The professional mobile phone of the contact (mobile, work) */ mobilePro: string; /** The professional mobile phone of the contact (canonical format) */ mobileProCan: string; /** Indicates if the professional mobile phone of the contact is visible by other users */ isMobileProShared: boolean; /** The personal phone of the contact (landline, home) */ phonePerso: string; /** The personal phone of the contact (canonical format)*/ phonePersoCan: string; /** Indicates if the personal landline phone of the contact is visible by other users */ isPhonePersoShared: boolean; /** The personal mobile phone of the contact (mobile, home) */ mobilePerso: string; /** The personal mobile phone of the contact (canonical format) */ mobilePersoCan: string; /** Indicates if the personal mobile phone of the contact is visible by other users */ isMobilePersoShared: boolean; /** The phone number if exists associated to the user and monitored by Rainbow */ phonePbx: string; /** Business number from Directories (Business, Personal, O365, Outlook) */ businessPhones: string[]; /** Business mobile phone number from Directories (Business, Personal, O365, Outlook) */ mobilePhones: string[]; /** OTHER numbers (Personal + Business Directory contact only) */ otherPhoneNumbers: string[]; /** ALIAS internal numbers (Business Directory contact only) */ aliasesPhones: any[]; /** The internal number if exists associated to the user and monitored by Rainbow */ phoneInternalNumber: string; /** Flag indicating whether at least one telephone number has been defined for the user */ hasPhoneNumber: boolean; /** Great internal mystery to determine whether the user has a PBX DDI or not */ hasPhoneProDdiNumber: boolean; /** Flag indicating whether all the phone numbers associated with a contact have been retrieve from the server */ phoneNumbersInitialized: boolean; /** Hybrid Telephony, On busy routine: User redirect phone number (as entered by user) */ redirectNumber: string; /** Hybrid Telephony, On busy routine: Indicates if the redirect phone number is editable by a user */ isRedirectNumberEditable: boolean; /** The department of the contact (Directory contact only) */ department: string; /** The postal code of the contact (Directory contact only) */ postalCode: string; /** The state of the business contact (Directory contact only) */ state: string; /** The street of the business contact (Directory contact only) */ street: string; /** The city of the business contact */ city: string; /** The note1 of a personal or business directory contact */ note1: string; /** The note2 of a personal or business directory contact */ note2: string; /** * EXPERIMENTAL (this property will likely change in the future version) * Object containing all the calendar informations related to user * The object contains the current meeting / incoming calendar meetings, but also it contains the Out Of Office informations: * The structure of the object (by default it's empty if no calendar presence) : * calendarInformation = \{ * status: string //calendar status (one of "online", "dnd") * mdate: date //the date of the end / next meeting * autoReplyOn: boolean //if true, the user has activated Out Of Office) * autoReplyInfos: \{ //if autoReplyOn is true, then this object contains the informations related to the Out Of Office) * message: string //out of office message * mdate: date //until when the OoO is activated (if known) * \} * \} * * NB: The Out of Office is not automatic, so it's updated every 15min for each conversation that the user has; */ calendarState: any; /** The object containing the calendar presence of the user (if available) as retrieved from server */ calendarStateRaw: any; /** Specify if the Contact is associated to an Microsoft Azure Directory contact */ o365Flag: boolean; /** Specify if the Contact is associated to an Outlook contact */ outlookFlag: boolean; /** Specify if the Contact is associated to a Company Directory contact */ companyDirectoryFlag: boolean; /** Specify if the Contact is associated to a Personal Directory contact */ personalDirectoryFlag: boolean; /** Specify if the Contact is associated to a PBX phonebook entry */ phonebookDirectoryFlag: boolean; /** Specify if the User ia a BOT */ isBot: boolean; /** Specify if the User ia a Rainbow Room ( Rainbow TV) */ isTv: boolean; /** * Specify if the User is a Temporary contact. * Example: Call log contat for unidentified call (only external number provided) */ temp: boolean; botDetails: string; isBotSharing: boolean; /** The data related to the Rainbow TV */ rainbowTvData: any; /** * The id of the Company related to the business contact. * Only relevant for contacts from the Business directory. */ businessCompanyId: string; /** * The ID of the user associated with the personal contact * Only relevant for contacts from the Personal directory. */ userId: string; fileStorageEnabledSubject: BehaviorSubject; /** Rainbow storage usage "enabled", "disabled", "same_as_company" */ useRainbowStorage?: string; /** External storage usage "enabled", "disabled", "same_as_company" */ useExternalStorage?: string; /** External storage identifier */ mainStorage?: string; /** The name of the user's company or the company name of a personal/business contact */ companyName: string; companyFeatures: any; /** A Company objet reprensenting the information of the company associated to the contact */ company: Company; /** Hide or not the offline/away presence duration (Company-level setting, User Profile) */ isPresenceDurationHidden: boolean; /** if Rainbow is used as RB + Teams app */ isRainbowForTeamsUser: boolean; /** The current presence shared from MS Teams (if the integration is activated for this user) */ msTeamsPresence: string; /** State of the Office365 subscription of the connected user only. */ o365SubscriptionState: O365SubscriptionState; /** Specifies if user should use the new interface for softphone */ softphoneModeActivated: boolean; userCanModifySoftphoneMode: boolean; get isSoftphoneTelMode(): boolean; get isSoftphoneUCMode(): boolean; get useSoftphoneTelPopout(): boolean; get useSoftphoneUCPopout(): boolean; /** The ID of the PBX monitored by Rainbow where the user's phone is associated */ pbxId: string; organisationId: string; siteId: string; systemId: string; phoneNumberId: string; private _customMarkdownInfos; get customMarkdownInfos(): string; set customMarkdownInfos(value: string); /** 3rd party external infos for contact */ thirdPartyMarkdownInfos: string; /** The ability for a user to set the presence status to 'Invisible'. */ canSetInvisiblePresenceCustomisation: boolean; /** The ability for a user to change manually his presence status. */ private _changePresenceEnabled; set changePresenceEnabled(changePresenceEnabled: boolean); get changePresenceEnabled(): boolean; /** Right for a user to use instant messages (IM), to start a chat, send and receive IMs and notifications in a P2P or bubble conversation. */ private _instantMessagesEnabled; /** * The ability for the user to receive emergency message. * A subscription to ALERT offer is required. */ isAlertNotificationEnabled: boolean; set instantMessagesEnabled(instantMessagesEnabled: boolean); get instantMessagesEnabled(): boolean; /** The ability for the user to check if an IM message has been read by the peer. */ private _readReceiptsCustomisation; set readReceiptsCustomisation(readReceiptsCustomisation: boolean); get readReceiptsCustomisation(): boolean; /** Right to access the Rainbow file storage to upload/download/copy/share documents. */ private _fileStorageEnabled; set fileStorageEnabled(fileStorageEnabled: boolean); get fileStorageEnabled(): boolean; /** Right to share document (download and share documents). */ private _fileSharingEnabled; set fileSharingEnabled(fileSharingEnabled: boolean); get fileSharingEnabled(): boolean; /** Right to transfer a document from one conversation (P2P or bubble) to another. */ private _fileTransferEnabled; set fileTransferEnabled(fileTransferEnabled: boolean); get fileTransferEnabled(): boolean; /** The ability for the user to receive files with possibly restricted source. */ private _receivedFileCustomisation; set receivedFileCustomisation(receivedFileCustomisation: ReceivedFileCustomisationValue); get receivedFileCustomisation(): ReceivedFileCustomisationValue; /** The ability for the user to use the 'Channels' feature, i.e. to create or be a member of channels. */ private _channelsEnabled; set channelsEnabled(channelsEnabled: boolean); get channelsEnabled(): boolean; /** The ability for the user to use the 'Bubbles' feature, i.e. to create bubbles or join bubbles (chat and bubble conference). */ private _roomsEnabled; set roomsEnabled(roomsEnabled: boolean); get roomsEnabled(): boolean; /** The ability for the user to view the speaking time for each participant in a bubble conference. */ private _useSpeakingTimeStatistics; set useSpeakingTimeStatistics(useSpeakingTimeStatistics: boolean); get useSpeakingTimeStatistics(): boolean; /** The ability for the user to record a conversation of a P2P call. */ recordConversationEnabled: boolean; /** * The ability for the user to use Web RTC audio conversation (P2P/Bubble conference call). * This includes the ability to make WebRTC P2P audio call, start a bubble conference call and to be joined via Web RTC audio call. */ private _webrtcAudioEnabled; set webrtcAudioEnabled(webrtcAudioEnabled: boolean); get webrtcAudioEnabled(): boolean; /** * The ability for the user to use Web RTC video conversation (P2P/Bubble conference call). * This includes the ability to make WebRTC P2P video call, to add video in a bubble conference call and to be joined via Web RTC video call. */ private _webrtcVideoEnabled; set webrtcVideoEnabled(webrtcVideoEnabled: boolean); get webrtcVideoEnabled(): boolean; /** The ability for the user to share his screen. */ private _webrtcSharingEnabled; set webrtcSharingEnabled(webrtcSharingEnabled: boolean); get webrtcSharingEnabled(): boolean; changeSettingsEnabled: boolean; /** The ability for the user to modify certain data relating to its name (title, firstName, lastName) in its profile. */ userTitleNameEnabled: boolean; /** The ability for the user to customize his/her avatar */ userAvatarCustomizationEnabled: boolean; /** The ability for the user to modify his entire profile. */ private _modifyProfileEnabled; set modifyProfileEnabled(modifyProfileEnabled: boolean); get modifyProfileEnabled(): boolean; /** The right to use the giphy extension */ giphyEnabled: boolean; /** * Ability for a user to add a participant by phone in an active conference. * The conference must be established before the participant's call can be made. */ dialOutCapability: boolean; /** Ability for a user to join by phone an active conference from an office phone. */ joinByPhoneCapability: boolean; /** * Ability for a user to call a participant using a PBX number via PSTN. * The conference must be established before the participant's call can be made. */ canCallParticipantPbxNumberEnabled?: boolean; /** Ability for a user to modify some telephony settings such as the forward activation... */ telephonySettingsEnabled: boolean; /** Indicates if the OXE PBX has the call busy capability */ oxeBusyCapability: boolean; /** Indicates if the OXE PBX has overflow capability */ oxePBXOverflowCapability: boolean; /** Specify whether the connected user has an attendant profile */ attendantConsoleEnabled: boolean; /** Specify whether the user has the console supervision group role. */ supervisorConsoleEnabled: boolean; /** Capability for a user to use the computer mode. */ useComputerMode?: boolean; /** Capability for a user to use the other phone mode.*/ useOtherPhoneMode?: boolean; /** Capability for a user to change the order of calls in telephony phone numbers menu.*/ showFirstPhoneCalls?: boolean; private _supervisionCapabilities; set supervisionCapabilities(supervisionCapabilities: any); get supervisionCapabilities(): any; private _supervisionCallCapabilities; set supervisionCallCapabilities(callCapabilities: any); get supervisionCallCapabilities(): any; /** Ability for a user to download Rainbow application. */ canDownloadAppCustomisation: boolean; /** Ability for a user to access to Rainbow store. */ canAccessStoreCustomisation: boolean; /** Ability for a user to record a bubble conference. */ conferenceRecordingEnabled: boolean; /** Ability for a user to access to Rainbow help center. */ canAccessHelpCenterCustomisation: boolean; /** Ability for a user to access to the FAQ. */ canAccessFaqCustomisation: boolean; /** Ability for a user to use "What's new" feature.*/ canAccessWhatsNew: boolean; /** Ability for a user to use "Tasks" feature.*/ canUseTaskCustomisation: boolean; /** Ability for a user to use "Calendar" feature.*/ canSynchCalendar: boolean; /** Ability for a user to use "Transcription" feature.*/ canUseTranscriptionCustomisation: boolean; /** Ability for a user to send report about a problem.*/ canUseSendReportCustomisation: boolean; /** Ability for a user to test its configuration (connectivity and audio quality).*/ canUseTestConfigCustomisation: boolean; /** * RQRAINB-13455 [TECHNICAL] Keep the customization useRoomCustomisation as disabled for Rainbow Voice users * For Rainbow Voice users only, indicates that a user has the right to use Bubbles for telephony. */ roomsAsVoiceEnabled: boolean; /** The right to access elearning section */ eLearningCustomisation: boolean; /** The right to earn badges in elearning section */ eLearningGamificationCustomisation: boolean; private _forwards; set forwards(forwards: TelephonyForward[]); get forwards(): TelephonyForward[]; /** * updateCustomStatus */ updateCustomStatus(status: any): void; private _personalRoutines; set personalRoutines(personalRoutines: PersonalRoutine[]); get personalRoutines(): PersonalRoutine[]; private _outOfOffice; get outOfOffice(): { active: boolean; message: string; }; set outOfOffice(value: { active: boolean; message: string; }); private _supervisionDevices; private _supervisionState; set supervisionState(supervisionState: any); get supervisionState(): any; private _supervisionCallInfos; get supervisionCallInfos(): any[]; set supervisionCallInfos(supervisionCallInfos: any[]); ccdPolicy: { onBusyWithdraw: boolean; onDndWithdraw: boolean; onDndIgnoreVoipCalls: boolean; withdrawReason: string; }; ccdAgent: CcdAgent; /** * Phone type name for an extension behind an Rainbow Hybrid PBX * Standard device name for an extension behind a Rainbow Hub PBX (SipWise subscriber) */ systDeviceName: string; /** * The telephone user is connected to a virtual device (isMonoDevice) on the PBX side (REX, any device). * Useful only for the connected user. */ isVirtualTerm: boolean; /** Mute ringing on incoming calls to the office extension (OXE PBX only)*/ silentRinging: boolean; /** * Allows WebRTC calls only if the user has a mobile presence. * Use case: COBRI user */ useWebRTCOnlyIfMobileLogged: boolean; oxeTrunks: ConnectedUserOxeTrunk[]; oxePreferredTrunk: number; /** duration of the IM set by the company admin */ imPopupDuration: any; /** The right to use the new UI */ newUiEnabled: boolean; generalizedAttendantLookForUsers: boolean; selectedManifestId: any; mfaRainbowAuth: { mfaStatus: MultiFactorAuthStatus; mfaTrustedApps: any[]; mfaType: MultiFactorAuthType; }; getMfaStatus(): MultiFactorAuthStatus; setMfaStatus(newStatus: MultiFactorAuthStatus): void; /** Specifies what the user can do using AI in RB */ recordingTranscription: boolean; liveTranscription: boolean; translateDoc: boolean; translationDocLanguages?: { iso: string; native: string; translated: string; inverted: boolean; }[]; translationDocFormats?: string[]; recordingLanguages?: { iso: string; native: string; translated: string; inverted: boolean; }[]; liveLanguages?: { iso: string; native: string; translated: string; inverted: boolean; }[]; get canRecordingTranscription(): boolean; get canLiveTranscription(): boolean; get canTranslateDoc(): boolean; get getTranslationDocLanguages(): { iso: string; native: string; translated: string; inverted: boolean; }[]; get getTranslationDocFormats(): string[]; get getRecordingLanguages(): { iso: string; native: string; translated: string; inverted: boolean; }[]; get getLiveLanguages(): { iso: string; native: string; translated: string; inverted: boolean; }[]; /** * Subscribe to updates on the current contact (all events are of RBEvent type \{name: string, data:any \}); * Here's a list of events received : * name: 'update' means... update of any information of the contact (settings, personnal information, network/roster status, etc) * name: 'calendar' means... update of the user's calendar information * name: 'presence' means... update of the user's presence status * name: 'outOfOffice' means... update of the user's out of office status * name: 'roster' means... update of the user's roster change * NB There might be some events that are not documented here, they're send on updates of different properties of the contact. * @param handler - The call-back function that will be subscribed to the RxJS subject * @param eventNames - Array of event(s) to listen */ subscribe(handler: any, eventNames?: string[]): Subscription; sendEvent(name: UserEvents, data?: any): void; isConnectedUser(): boolean; isDirectoryContact(): boolean; isUserTypeOf(userType: UserType): boolean; hasRole(userRole: UserRole): boolean; /** * Indicates wether the user is a telephony user or not. * A telephony user is a user with an extension number allocated on a PBX, i.e. a Rainbow Hub or Rainbow Hybrid (OXO or OXE) telephone system. */ isTelephonyUser(): boolean; /** * Indicates wether the user is a Rainbow Hub user or not. * A Rainbow Hub user is a user with a Voice licence and an extension number allocated on a Cloud PBX. */ isRainbowHubUser(): boolean; /** * Indicates wether the user is an Rainbow Hybrid user or not. * An Rainbow Hybrid user is a user with an extension number allocated on a Hybrid PBX (OXE/OXO/Third party) */ isRainbowHybridUser(): boolean; /** * CONTACT INSTANCE CONSTRUCTOR * WARNING: Not all properties available in the Contact class are initialized in this method. */ constructor(jid?: string, name?: string, company?: Company); /** * CONTACT INSTANCE GLOBAL UPDATE * Update of some properties of a user instance following reception of new data from the server. * @param userData - Partial set of user properties as received from the server */ updateFromUserData(userData: any): void; getAvatarInBase64(): Promise; dateEncode(date: string): string; updateAvatar(size?: number, forced?: boolean): void; createTextAvatarImage(): void; /** * Set the 'avatar' with the current value of the default avatar * This is mainly useful for personal and business contacts for which no avatar can be defined at the moment. * Only the default avatar is available for them, based on the initials of lastname/firstname or company name * To take into account that the default avatar data can be changed later by the phone in a call situation, * (following an update of the display name), the default avatar also becomes the real avatar (until we can specify one) */ setAvatarFromDefault(): void; updateName(firstName: string, lastName: string): void; computeDisplayName(): void; /** * Return true if user is a CPaaS guest, otherwise false. */ isCPaaSGuest(): boolean; /** * Return true if user is an UCaaS guest, otherwise false. */ isGuest(): boolean; isAnonymousGuest(): boolean; isBadGuest(): boolean; isGuestInitialized(): boolean; /** * Return true if user has some administration rights, otherwise false. */ hasAdminRights(): boolean; /** * Return true if user has superadmin rights, otherwise false. */ isSuperadmin(): boolean; /** * Return true if user has business responsabilities within its company, otherwise false. */ isBusinessAdmin(): boolean; /** * Return true if user has customer success responsabilities within its company, otherwise false. */ isCustomerSuccessAdmin(): boolean; /** * Return true if user has role sales_analytics, otherwise false. */ isSalesAnalyticsAdmin(): boolean; /** * Return true if user has role sales_analytics, otherwise false. */ isPrivacyOperationAdmin(): boolean; /** * Return true if user has the rights to manage all companies within its organization, otherwise false. */ isOrganizationAdmin(): boolean; /** * Return true if user has the rights to manage support companies within its organization, otherwise false. */ isSupportAdmin(): boolean; /** * Return true if user has the rights to manage its company, otherwise false. */ isCompanyAdmin(): boolean; /** * Return true if user has the rights to manage only the sites of its company, otherwise false. */ isSiteAdmin(): boolean; /** * Return true if user has the rights to manage its company, otherwise false. */ isAdmin(): boolean; /** * Return true if user is an administrator of a End Customer (EC) company, otherwise false. */ isECAdmin(): boolean; /** * Return true if user has operations or financial rights within a Business Partner (BP) company, otherwise false. */ isBPAdmin(): boolean; /** * Return true if user has operations rights within a Business Partner (BP) company, otherwise false. */ isBPAdminOperations(): boolean; /** * Return true if user has finance rights within a Business Partner (BP) company, otherwise false. */ isBPAdminFinance(): boolean; /** * Return true if user has operations or financial rights within a Direct Reseller (DR) company, otherwise false. */ isBPAdminDR(): boolean; /** * Return true if user has operations or financial rights within a Value Added Distributor (VAD) company, otherwise false. */ isBPAdminVAD(): boolean; /** * Return true if user has operations or financial rights within an Indirect Reseller (IR) company, otherwise false. */ isBPAdminIR(): boolean; /** * Return true if user has the rights to manage the business directory of its company, otherwise false. */ isDirectoryAdmin(): boolean; /** * Return true if user has customer analytics rights within a Business Partner (BP) company, otherwise false. */ isBPAnalytics(): boolean; /** * Return true if user has analytics rights within a Business Partner (BP) or End Customer (EC) company, otherwise false. */ isECAnalytics(): boolean; /** * Return true if user has the rights to manage webinars of its company, otherwise false. */ isWebinarHost(): boolean; /** * Return true if user has the role of supervisor : this means that he's got a supervvisor role in at least one supervision group */ isSupervisor(): boolean; /** * Return the admin type */ getAdminType(): string; /** * Indicates wether the user belongs to a Business Partner (BP) company or not. */ isBPUser(): boolean; /** * Indicates wether the connected user is an hybrid user and is on an hybrid system with the capability * 'DialOut' in order to call a pstn number and add it in web conference */ isHybridDialOutCapability(): boolean; /** * Indicates wether the connected user is an hybrid oxe user and is on an oxe system with the capability * 'oxePBXOverflowCapability' in order to redirect incoming voip calls when user is unreachable */ isOxeOverflowCapability(): boolean; /** * Indicates wether the connected user is an hybrid user and is on an hybrid system with the capability * 'Join by phone' in order to join by phone a web conference */ isHybridJoinByPhoneCapability(): boolean; getSupervisionDevices(): string[]; getSupervisionDeviceState(device: string): any; setSupervisionDeviceState(device: string, state: string): void; resetSupervisionState(): void; resetSupervisionCallinfos(): void; updateSupervisionCallInfo(supervisionCallInfo: any): void; /** * Returns a string representing the complete Contact object. */ toString(): string; containsEmail(email: string): boolean; containsPhoneNumber(phoneNumber: string): boolean; containsDirectoryPhoneNumber(phoneNumber: string): boolean; matchesSearchCriteria(criteria: string): boolean; /** * Check if the given string corresponds to a phone number (canonical format or not). * @param phoneNumber - The string to check */ startAsPhoneNumber(phoneNumber: string): boolean; toJSON(): any; } //# sourceMappingURL=contact.model.d.ts.map