import type { Client } from './client'; import type { keyable } from './notification'; import { type ChannelEvent, type Distribute, Task } from './task'; /** * Інтерфейс, що представляє властивості абонента, який очікує на відповідь. * @interface */ export interface WaitingMemberProperties { deadline: number; queue: object; wait: number; } export interface WaitingMember extends WaitingMemberProperties { attempt_id: number; communication: keyable; channel: string; session_id: string; } /** * Інтерфейс, що представляє абонента, який очікує на відповідь від дзвінка. * @interface */ export interface WaitingMemberCall extends WaitingMemberProperties { attemptId: number; sessionId: string; displayName: string; displayNumber: string; } /** * Інтерфейс, що представляє абонента, який очікує на відповідь від чату. * @interface */ export interface WaitingMemberChat extends WaitingMemberProperties { attemptId: number; sessionId: string; message: string; displayName: string; peer: string; chat: string; member: object; } /** * Інтерфейс, що представляє канал зв'язку. * @interface */ export interface Channel { channel: ChannelType; state: string; joined_at: number; timeout?: number; active: boolean; open: number; wrap_time_ids: number[]; } /** * Інтерфейс, що представляє сесію агента. * @interface */ export interface AgentSession { agent_id: number; status: string; on_demand: boolean; last_status_change: number; status_duration: number; status_payload: any; status_comment: string; channels: Channel[]; is_supervisor: boolean; is_admin: boolean; team: object | null; supervisor: object | null; auditor: object | null; } /** * Інтерфейс, що представляє відповідь на запит для сесії агента. * @interface */ export interface AgentSessionResponse extends AgentSession { task?: Distribute[]; } /** * Інтерфейс, що представляє подію зміни статусу агента. * @interface */ export interface AgentStatusEvent { user_id: number; agent_id: number; timestamp: number; status: string; status_comment: string; status_payload?: any; timeout?: number; channels: Channel[]; on_demand?: boolean; } /** * Перелік статусів агента. * @enum {string} */ export declare enum AgentStatus { /** * Агент онлайн. */ Online = "online", /** * Агент офлайн. */ Offline = "offline", /** * Агент на паузі. */ Pause = "pause", /** * Агент у перерві. */ BreakOut = "break_out" } /** * Перелік станів каналу зв'язку. * @enum {string} */ export declare enum ChannelState { /** * Канал очікує. */ Waiting = "waiting", /** * Канал розподіляється (дзвінок дзвонить). */ Distribute = "distribute", /** * Канал пропонує (дзвінок дзвонить). */ Offering = "offering", /** * Канал відповів на дзвінок. */ Answered = "answered", /** * Канал активний. */ Active = "active", /** * Канал з'єднаний. */ Bridged = "bridged", /** * Канал на утриманні. */ Hold = "hold", /** * Канал пропущено. */ Missed = "missed", /** * Канал у часі обробки. */ WrapTime = "wrap_time", /** * Канал обробляється. */ Processing = "processing", /** * Канал у процесі передачі. */ Transfer = "transfer", /** * Канал заповнюється формою. */ Form = "form" } /** * Перелік типів каналів зв'язку. * @enum {string} */ export declare enum ChannelType { /** * Тип каналу - дзвінок. */ Call = "call", /** * Тип каналу - електронна пошта. */ Email = "email", /** * Тип каналу - чат. */ Chat = "chat", /** * Тип каналу - завдання (планується перейменування на job). */ Job = "task", /** * Тип каналу - вихідний дзвінок. */ OutCall = "out_call", IM = "im" } /** * Інтерфейс, що представляє відключеного абонента. * @interface */ type OfflineMember = { id: number; [key: string]: any; }; /** * Інтерфейс, що представляє список відключених членів. * @interface */ export interface OfflineMemberList { items: OfflineMember[]; next?: boolean; } /** * Клас Agent: Використовується для представлення агента, що виконує завдання, * чати та дзвінки, а також управляє каналами та офлайн-учасниками. * * Конструктор Agent: * client: Клієнт, що керує цим агентом. Використовується для доступу до зовнішніх ресурсів та методів. * info: Інформація про сесію агента, що включає дані, специфічні для агента, такі як статус, ідентифікатори тощо. * Конструктор ініціалізує всі властивості класу, встановлюючи значення за замовчуванням * або порожні об'єкти для управління різними аспектами роботи агента. */ export declare class Agent { protected readonly client: Client; protected info: AgentSession; task: Map; maxWaitingListChats: number; waitingListChats: WaitingMemberChat[]; waitingListCalls: WaitingMemberCall[]; _channels: Map; _listOfflineMembers: OfflineMemberList | null; lastStatusChange: number; /** * Конструктор класу Agent. * @constructor * @param {Client} client - Клієнт. * @param {AgentSession} info - Сесія агента. */ constructor(client: Client, info: AgentSession); /** * Метод, що повертає ідентифікатор агента. * @method * @returns {number} - Ідентифікатор агента. */ get agentId(): number; /** * Метод, що повертає статус "On Demand". * @method * @returns {boolean} - Статус "On Demand". */ get onDemand(): boolean; /** * Метод, що повертає статус агента. * @method * @returns {string} - Статус агента. */ get status(): string; /** * Метод, що повертає додаткову інформацію про статус агента. * @method * @returns {any} - Додаткова інформація про статус агента. */ get statusPayload(): any; get statusComment(): string; /** * Метод, що повертає, чи є агент адміністратором. * @method * @returns {boolean} - Чи є агент адміністратором. */ get isAdmin(): boolean; /** * Метод, що повертає, чи є агент супервайзером. * @method * @returns {boolean} - Чи є агент супервайзером. */ get isSupervisor(): boolean; /** * Метод, що повертає команду агента. * @method * @returns {object | null} - Команда агента. */ get team(): object | null; /** * Метод, що повертає супервайзера агента. * @method * @returns {object | null} - Супервайзер агента. */ get supervisor(): object | null; /** * Метод, що повертає аудитора агента. * @method * @returns {object | null} - Аудитор агента. */ get auditor(): object | null; /** * Метод, що повертає список каналів зв'язку. * @method * @returns {Channel[]} - Список каналів зв'язку. */ get channels(): Channel[]; /** * Метод, що повертає канал зв'язку. * @method * @returns {Channel | undefined} - Канал зв'язку. */ get channel(): Channel | undefined; /** * Метод, що повертає тривалість стану. * @method * @returns {number} - Тривалість стану. */ get stateDuration(): number; /** * Метод, що встановлює список членів, які очікують на відповідь. * @method * @param {keyable | undefined} e - Об'єкт зі списком членів, які очікують на відповідь. */ setWaitingList(e: keyable | undefined): void; /** * Метод, що видаляє спробу очікування на відповідь. * @method * @param {keyable | undefined} e - Об'єкт зі списком членів, які очікують на відповідь. */ deleteWaitingAttempt(e: keyable | undefined): void; /** * Метод, що перехоплює спробу. * @method * @param {number} id - Ідентифікатор спроби. * @returns {Promise} - Результат запиту. */ interceptAttempt(id: number): Promise; /** * Метод, що обробляє подію каналу зв'язку. * @method * @param {ChannelEvent} e - Подія каналу зв'язку. * @returns {Task | undefined | BaseError | PauseNotAllowedError} - Задача, помилка або undefined. */ onChannelEvent(e: ChannelEvent): Task | undefined; /** * Метод, що встановлює статус "Online" для агента. * @method * @param {string[]} [channels] - Список каналів зв'язку. * @param {boolean} [onDemand] - Статус "On Demand". * @returns {Promise} - Об'єкт з інформацією про сесію агента. */ online(channels?: string[], onDemand?: boolean): Promise; /** * Метод, що встановлює статус "Waiting" для агента. * @method * @param {string} channel - Канал зв'язку. * @returns {Promise} - Об'єкт з інформацією про сесію агента. */ waiting(channel: string): Promise; /** * Метод, що встановлює статус "Pause" для агента. * @method * @param {any} payload - Додаткова інформація про статус "Pause". * @returns {Promise} - Об'єкт з інформацією про сесію агента або об'єкт помилки. * Якщо статус "Pause" не дозволений, повертається об'єкт помилки PauseNotAllowedError. */ pause(payload?: any): Promise; /** * Метод, що встановлює статус "Offline". * @method * @returns {Promise} - Результат запиту. */ offline(): Promise; /** * Метод, що обмежує список членів, які очікують на відповідь від чату. * @method * @param {number} limit - Ліміт. */ limitWaitingListChats(limit: number): void; /** * Метод, що встановлює статус агента. * @method * @param {AgentStatusEvent} e - Подія зміни статусу агента. */ setStatus(e: AgentStatusEvent): void; /** * Метод, що направляє абонента. * @method * @param {number} memberId - Ідентифікатор абонента. * @param {number} communicationId - Ідентифікатор зв'язку. * @returns {Promise} - Результат запиту. */ directMember(memberId: number, communicationId: number): Promise; /** * Метод, що повертає список відключених абонентів. * @method * @param {string} q - Пошуковий запит. * @param {number} page - Номер сторінки. * @param {number} perPage - Кількість елементів на сторінці. * @returns {Promise} - Список абонентів із офлайн черги. */ offlineMembers(q: string, page: number, perPage: number): Promise; /** * Метод, що перевіряє, чи має задачу агент. * @method * @param {Task} task - Задача. * @returns {boolean} - true, якщо агент має задачу, false - якщо ні. */ hasTask(task: Task): boolean; private initChannels; private getChannel; private setChannelState; private setChannelStateTimeout; } export {}; //# sourceMappingURL=agent.d.ts.map