import type { CallSession } from '../sip'; import type { Client, UserCallRequest } from './client'; import type { QueueParameters } from './queue'; import type { MemberCommunication, Reporting, Task, TaskData } from './task'; import { StorageMediaCapture } from '../screen/storage'; import type { Conversation } from './conversation'; /** * Параметри виклику * @typedef {Object} CallParameters * @property {number} [timeout] - Тайм-аут у секундах. * @property {boolean} [video] - Вказує на наявність відео. * @property {boolean} [audio] - Вказує на наявність аудіо. * @property {boolean} [screen] - Вказує на наявність екрану. * @property {boolean} [disableStun] - Вимкнення STUN. * @property {boolean} [autoAnswer] - Автоматична відповідь. * @property {string} [display] - Відображуване ім'я. * @property {Map} [variables] - Змінні виклику. */ export interface CallParameters { timeout?: number; video?: boolean; audio?: boolean; screen?: boolean; disableStun?: boolean; autoAnswer?: boolean; display?: string; variables?: Map; contactId?: number; } /** * Статуси звітності виклику * @enum {string} */ export declare enum CallReportingStatus { Abandoned = "abandoned",// Викинуто Cancel = "cancel",// Скасовано Success = "success",// Успішно Failed = "failed",// Неуспішно Missed = "missed",// Пропущено Timeout = "timeout",// Тайм-аут Endless = "endless",// Нескінченний Transferred = "transferred" } /** * Стани прослуховування * @enum {string} */ export declare enum EavesdropState { Muted = "muted",// Вимкнено звук Conference = "conference",// Конференція Prompt = "prompt" } /** * Типи прослуховування * @enum {string} */ export declare enum EavesdropType { Joined = "joined",// Приєднано Leave = "leave",// Покинено Hide = "hide" } /** * Інтерфейс для змінних дзвінка. * Ключі є ідентифікаторами змінних, а значення - рядками. * @interface */ export interface CallVariables { [key: string]: string; } /** * Інтерфейс для представлення інформації про дзвінок. * @interface */ export interface CallItem { /** Унікальний ідентифікатор дзвінка. */ id: string; /** Ідентифікатор програми. */ app_id: string; /** Стан дзвінка. */ state: string; /** Час, коли дзвінок був створений. */ timestamp: number; /** Тип дзвінка. */ type: string; /** Ідентифікатор батьківського дзвінка. */ parent_id?: string; /** Розширення для дзвінка. */ extension?: string; /** Напрямок дзвінка. */ direction: string; /** Місце призначення дзвінка. */ destination: string; /** Вхідний параметр дзвінка. */ from: CallEndpoint; /** Вихідний параметр дзвінка. */ to?: CallEndpoint; /** Додаткові змінні дзвінка. */ variables: CallVariables; /** Час створення дзвінка. */ created_at: number; /** Час, коли дзвінок був відповіданий. */ answered_at?: number; /** Час, коли дзвінок був з'єднаний. */ bridged_at?: number; /** Час, коли дзвінок був завершений. */ hangup_at?: number; /** Тривалість дзвінка. */ duration: number; /** Час, проведений на утриманні. */ hold_sec: number; /** Час очікування дзвінка. */ wait_sec?: number; /** Час, за який був обрахований дзвінок. */ bill_sec?: number; /** Інформація про чергу. */ queue?: object; /** Час приєднання до черги. */ joined_at?: number; /** Час, коли дзвінок залишив чергу. */ leaving_at?: number; /** Час звітності. */ reporting_at?: number; /** Час з'єднання черги. */ queue_bridged_at?: number; /** Час очікування в черзі. */ queue_wait_sec?: number; /** Тривалість перебування в черзі. */ queue_duration_sec?: number; /** Час звітності. */ reporting_sec?: number; /** Час відображення. */ display?: number; /** Дані завдання. */ task?: TaskData; /** Ідентифікатор контакту. */ contact_id?: number; hide_number?: boolean; is_consult_to_queue?: boolean; } /** * Інтерфейс для запиту виходу дзвінка. * @interface */ export interface OutboundCallRequest { /** SDP для з'єднання. */ sdp?: string; /** Місце призначення дзвінка. */ destination?: string; /** Потік медіа. */ stream?: MediaStream; /** Додаткові параметри дзвінка. */ params?: CallParameters; } /** * Інтерфейс для запиту прослуховування дзвінка. * @interface */ export interface EavesdropRequest { /** Ідентифікатор дзвінка. */ id: string; /** Управлінські параметри прослуховування. */ control?: boolean; /** Слухати сторону A. */ listenA?: boolean; /** Слухати сторону B. */ listenB?: boolean; /** Шепотіти стороні A. */ whisperA?: boolean; /** Шепотіти стороні B. */ whisperB?: boolean; /** Група прослуховування. */ group?: string; } /** * Інтерфейс для даних прослуховування. * @interface */ export interface EavesdropData { /** Тип прослуховування. */ type: EavesdropType; /** Стан прослуховування. */ state: EavesdropState; /** Ім'я контакту. */ name?: string; /** Номер контакту. */ number?: string; /** Тривалість прослуховування. */ duration?: number; } /** * Перерахування для дій дзвінка. * @enum {string} */ export declare enum CallActions { /** * Дзвінок у режимі дзвінка (ringing). */ Ringing = "ringing", /** * Дзвінок у активному стані (active). */ Active = "active", /** * Дзвінок у режимі мосту (bridge). */ Bridge = "bridge", Progress = "progress", /** * Дзвінок у режимі утримання (hold). */ Hold = "hold", /** * Дзвінок з DTMF (Dual-tone multi-frequency) сигналами. */ DTMF = "dtmf", /** * Голосовий дзвінок (voice). */ Voice = "voice", /** * Дзвінок у режимі тиші (silence). */ Silence = "silence", /** * Виконання програми або дії (execute). */ Execute = "execute", /** * Оновлення інформації про дзвінок (update). */ Update = "update", /** * Завершення дзвінка (hangup). */ Hangup = "hangup", /** * Перевірка стану дзвінка (heartbeat). */ Heartbeat = "heartbeat", /** * Надсилання звітності про дзвінок (reporting). */ Reporting = "reporting", /** * Надсилання потоків для співрозмовників (peerStream). */ PeerStream = "peerStream", /** * Надсилання локальних потоків (localStream). */ LocalStream = "localStream", /** * Знищення дзвінка (destroy). */ Destroy = "destroy", /** * Прослуховування дзвінка (eavesdrop). */ Eavesdrop = "eavesdrop", Info = "info", Stats = "stats" } /** * Перерахування для напрямку дзвінка. * @enum {string} */ export declare enum CallDirection { /** * Вхідний дзвінок. */ Inbound = "inbound", /** * Вихідний дзвінок. */ Outbound = "outbound" } /** * Інтерфейс для подій контактних даних. * @interface */ interface ContactDataEvent { /** Ідентифікатор контакту. */ contact_id?: number; /** Вказує, чи ховати контакт. */ hide_contact?: boolean; } /** * Інтерфейс для контактної інформації. * @interface */ interface Contact { /** Ідентифікатор контакту або `null`. */ id: number | null; /** Вказує, чи потрібно ховати контакт. */ hide: boolean; } export interface RTPAggregate { average: number; min: number; min_at: number; max: number; max_at: number; } export interface RtpMetrics { mos: RTPAggregate; jitter: RTPAggregate; roundtrip: RTPAggregate; packetloss: RTPAggregate; } export interface CallMediaStats { rtp: RtpMetrics; } /** * Інтерфейс для запиту на відповідь дзвінка. * @interface */ export interface AnswerRequest { /** Включити аудіо. */ audio?: boolean; /** Включити відео. */ video?: boolean; /** Включити екран. */ screen?: boolean; /** Вимкнути STUN. */ disableStun?: boolean; } /** * Інтерфейс для даних події дзвінка. * @interface */ export interface CallEventData { /** Ідентифікатор події. */ id: string; /** Ідентифікатор програми. */ app_id: string; /** Ідентифікатор CC програми. */ cc_app_id: string; /** Час події. */ timestamp: number; /** Тип події. */ event: string; /** Додаткові дані події. */ data?: object; } /** * Інтерфейс для події виконання дзвінка. * @interface * @extends CallEventData */ export interface CallEventExecute extends CallEventData { /** Назва програми. */ application: string; } /** * Інтерфейс для події DTMF дзвінка. * @interface * @extends CallEventData */ export interface CallEventDTMF extends CallEventData { /** DTMF цифра. */ digit: string; } /** * Інтерфейс для події прослуховування дзвінка. * @interface * @extends CallEventData, EavesdropData */ export interface CallEventEavesdrop extends CallEventData, EavesdropData { } /** * Інтерфейс для параметрів кінцевих точок дзвінка. * @interface */ export interface CallEndpoint { /** Тип кінцевої точки. */ type: string; /** Номер кінцевої точки. */ number?: string; /** Ідентифікатор кінцевої точки. */ id?: string; /** Назва кінцевої точки. */ name?: string; } interface VideoData { video?: VideoMediaFlow; remote_video?: VideoMediaFlow; } /** * Інтерфейс для події з'єднання дзвінків. * @interface * @extends CallEventData, ContactDataEvent */ export interface CallBridged extends CallEventData, ContactDataEvent, VideoData { /** Ідентифікатор з'єднаного дзвінка. */ bridged_id: string; /** Вихідний параметр кінцевої точки. */ to?: CallEndpoint; /** Параметри черги. */ queue?: QueueParameters; /** Додаткові дані. */ payload?: Map; } /** * Інтерфейс для інформації про дзвінок. * @interface * @extends CallEventData, ContactDataEvent */ export interface CallInfo extends CallEventData, ContactDataEvent, VideoData { /** SIP-ідентифікатор. */ sip_id: string; /** Ідентифікатор батьківського дзвінка. */ parent_id?: string; /** Ідентифікатор користувача. */ user_id?: string; /** Напрямок дзвінка. */ direction: string; /** Місце призначення дзвінка. */ destination: string; /** Параметри черги. */ queue?: QueueParameters; /** Вхідний параметр кінцевої точки. */ from: CallEndpoint; /** Вихідний параметр кінцевої точки. */ to?: CallEndpoint; /** Додаткові дані дзвінка. */ payload: Map; /** Параметри дзвінка. */ params?: CallParams; /** Дані прослуховування. */ eavesdrop?: EavesdropData; /** Вказує, чи дзвінок був ініційований. */ originate?: boolean; meeting_id?: string; hide_number?: boolean; is_consult_to_queue?: boolean; } /** * Інтерфейс для події завершення дзвінка. * @interface */ export interface CallHangup extends CallEventData { /** Причина завершення дзвінка. */ cause: string; /** SIP-код завершення. */ sip: number; /** Час звітності. */ reporting_at: number; /** Вказує, чи потрібно відправити повідомлення про завершення. */ notification_hangup?: boolean; } /** * Інтерфейс для параметрів дзвінка. * @interface */ export interface CallParams { /** Включити аудіо. */ audio?: boolean; /** Включити відео. */ video?: boolean; /** Включити екран. */ screen?: boolean; /** Автоматичний відповідь. */ autoAnswer?: boolean | string; /** Вимкнути STUN. */ disableStun?: boolean; } /** * Інтерфейс для запиту інформації про учасників. * @interface */ export interface MemberInfoRequest { /** Поля для отримання інформації. */ fields?: string[]; } /** * Інтерфейс для подій дзвінків. * @interface */ export interface CallEvents { /** Подія завершення дзвінка. */ hangup(): void; } export declare enum VideoMediaFlow { SendRecv = "sendrecv", SendOnly = "sendonly", RecvOnly = "recvonly", Inactive = "inactive", Disabled = "disabled" } /** * Клас Call: Описує властивості і методи для роботи з дзвінком, * включаючи інформацію про його стан, учасників, медіа потоки, та інші атрибути. * * Конструктор Call: * client: Клієнт, що керує дзвінком. * e: Дані події дзвінка, які використовуються для ініціалізації властивостей класу. * В конструкторі здійснюється ініціалізація всіх властивостей класу на основі переданих даних * події дзвінка (e). Значення за замовчуванням задаються для необов'язкових полів, * якщо вони не присутні в об'єкті e. */ export declare class Call { protected client: Client; data: any; id: string; appId: string; sipId: string | null; state: string; params: CallParams; direction: string; destination: string; from: CallEndpoint; to?: CallEndpoint; toNumber: string; toName: string; variables: Map; postProcessData: object; peerStreams: MediaStream[]; localStreams: MediaStream[]; sip: CallSession | null; screen: string | null; createdAt: number; answeredAt: number; bridgedAt: number; hangupAt: number; reportingAt: number; hangupCause: string; hangupSipCode: number; notificationHangup: boolean; isConsultToQueue: boolean; parentId?: string; bridgedId: string; queue: QueueParameters | null; _muted: boolean; _mutedVideo: boolean; _recordFile: string | null; _recordCapture: StorageMediaCapture | null; _userId: number | null; meetingId: string | null; readonly hideNumber: boolean; digits: string[]; applications: string[]; voice: boolean; task: Task | null; autoAnswered: boolean; _eavesdrop: EavesdropData | null; _autoAnswerTimerId: any | null; _activeCounter: number; contact: Contact | null; originate: boolean; video: VideoMediaFlow | null; remoteVideo: VideoMediaFlow | null; conversation: Conversation | null; /** * Конструктор класу Call. * @param client - Клієнт, що керує дзвінком. * @param e - Дані події дзвінка. */ constructor(client: Client, e: CallEventData); /** * Встановлює стан дзвінка. * @param s - Дані події дзвінка. */ setState(s: CallEventData): void; /** * Встановлює SIP-сесію. * @param sip - SIP-сесія. */ setSip(sip: CallSession | null): void; /** * Перевіряє, чи є ручний розподіл. * @returns Чи є ручний розподіл. */ get manualDistribution(): boolean | null; /** * Отримує тривалість дзвінка. * @returns Тривалість дзвінка в секундах. */ get duration(): number; /** * Перевіряє, чи дозволено DTMF. * @returns Чи дозволено DTMF. */ get allowDtmf(): boolean; /** * Перевіряє, чи дозволено Transfer. * @returns Чи дозволено Transfer. */ get allowTransfer(): boolean; /** * Перевіряє, чи дозволено завершення дзвінка. * @returns Чи дозволено завершення дзвінка. */ get allowHangup(): boolean; /** * Перевіряє, чи дозволено утримання дзвінка. * @returns Чи дозволено утримання дзвінка. */ get allowHold(): boolean; /** * Перевіряє, чи дозволено відповісти на дзвінок. * @returns Чи дозволено відповісти на дзвінок. */ get allowAnswer(): boolean | undefined; /** * Перевіряє, чи дозволено зняти утримання. * @returns Чи дозволено зняти утримання. */ get allowUnHold(): boolean; /** * Отримує комунікацію учасника. * @returns Комунікація учасника або null. */ get memberCommunication(): MemberCommunication | null; /** * Перевіряє, чи є прослуховування. * @returns Чи є прослуховування. */ get isEavesdrop(): boolean; /** * Отримує ім'я прослуховування. * @returns Ім'я прослуховування. */ get eavesdropName(): string | undefined; /** * Отримує номер прослуховування. * @returns Номер прослуховування. */ get eavesdropNumber(): string | undefined; /** * Отримує тривалість прослуховування. * @returns Тривалість прослуховування. */ get eavesdropDuration(): number | undefined; /** * Отримує стан прослуховування. * @returns Стан прослуховування або null. */ get eavesdropState(): EavesdropState | null; /** * Перевіряє, чи прослуховування в режимі мовчання. * @returns Чи прослуховування в режимі мовчання. */ get eavesdropIsMuted(): boolean; /** * Перевіряє, чи прослуховування є конференцією. * @returns Чи прослуховування є конференцією. */ get eavesdropIsConference(): boolean; /** * Перевіряє, чи прослуховування є запитом. * @returns Чи прослуховування є запитом. */ get eavesdropIsPrompt(): boolean; /** * Отримує ідентифікатор контакту. * @returns Ідентифікатор контакту або null. */ get contactId(): number | null; /** * Перевіряє, чи контакт потрібно приховати. * @returns Чи контакт потрібно приховати. */ get hideContact(): boolean | undefined; /** * Отримує інформацію про учасника. * @param req - Запит інформації про учасника. * @returns Інформація про учасника. * @throws Помилка, якщо дзвінок не з виходу черги. */ getMember(_req: MemberInfoRequest): Promise; /** * Перевіряє, чи дзвінок є учасником. * @returns Чи дзвінок є учасником. */ get isMember(): boolean; /** * Перевіряє, чи перший активний дзвінок. * @returns Чи перший активний дзвінок. */ get firstActive(): boolean; get recordings(): boolean; get allowRecordings(): boolean; get talking(): boolean; get hasVideo(): boolean; /** * Встановлює активність дзвінка. * @param e - Дані події дзвінка. */ setActive(e: CallEventData): void; /** * Встановлює інформацію про мосту. * @param s - Дані події мосту. */ setBridged(s: CallEventData): void; /** * Встановлює інформацію про утримання. * @param e - Дані події утримання. */ setHold(e: CallEventData): void; /** * Встановлює ідентифікатор контакту. * @param id - Ідентифікатор контакту. */ setContactId(id: number): void; /** * Встановлює інформацію про дзвінок. * @param s - Інформація про дзвінок. */ setInfo(s: CallInfo): void; /** * Встановлює потоки для співрозмовників. * @param streams - Потоки для співрозмовників. */ setPeerStreams(streams: MediaStream[] | null): void; /** * Встановлює локальні потоки. * @param streams - Локальні потоки. */ setLocalStreams(streams: MediaStream[] | null): void; /** * Увімкнути голос. */ setVoice(): void; /** * Вимкнути голос. */ setSilence(): void; /** * Додає виконання програми. * @param s - Дані події виконання. */ setExecute(s: CallEventExecute): void; /** * Додає DTMF. * @param s - Дані події DTMF. */ addDigit(s: CallEventDTMF): void; /** * Встановлює стан прослуховування. * @param e - Дані події прослуховування. */ setEavesdropState(e: CallEventEavesdrop): void; /** * Встановлює інформацію про завершення дзвінка. * @param s - Дані події завершення дзвінка. */ setHangup(s: CallEventData): void; /** * Перевіряє, чи дозволена звітність. * @returns Чи дозволена звітність. */ get allowReporting(): boolean; /** * Перевіряє, чи є звітність. * @returns Чи є звітність. */ get hasReporting(): boolean; /** * Отримує відображення дзвінка. * @returns Відображення дзвінка. */ get display(): string; /** * Перевіряє, чи вимкнений звук. * @returns Чи вимкнений звук. */ get muted(): boolean; /** * Перевіряє, чи дзвінок перебуває в режимі утримання. * @returns Чи дзвінок перебуває в режимі утримання. */ get isHold(): boolean; /** * Перевіряє, чи дозволено відео для вхідних дзвінків. * @returns Чи дозволено відео для вхідних дзвінків. */ get allowInboundVideo(): boolean; /** * Перевіряє, чи дозволено відео для вихідних дзвінків. * @returns Чи дозволено відео для вихідних дзвінків. */ get allowOutboundVideo(): boolean; /** * Перевіряє, чи дзвінок активний. * @returns Чи дзвінок активний. */ get active(): boolean; /** * Отримує номер для відображення. * @returns Номер для відображення. */ get displayNumber(): string | undefined; get _displayNameValue(): string | undefined; /** * Отримує ім'я для відображення. * @returns Ім'я для відображення. */ get displayName(): string | undefined; /** * Перевіряє, чи дозволено автоматичне відповідання. * @returns Чи дозволено автоматичне відповідання. */ get autoAnswer(): boolean; /** * Отримує затримку автоматичного відповідання. * @returns Затримка автоматичного відповідання. */ get autoAnswerDelay(): number; /** * Отримує спробу. * @returns Спроба. */ get attempt(): Task | null; /** * Відповідає на дзвінок. * @param req - Запит на відповідання. * @returns Чи успішно відповіли. */ answer(req: AnswerRequest): Promise; /** * Затримка автоматичного відповідання. * @param req - Запит на відповідання. */ answerDelay(req: AnswerRequest): void; /** * Завершує дзвінок. * @param cause - Причина завершення. * @returns Результат завершення дзвінка. */ hangup(cause?: string): Promise; /** * Запускає прослуховування дзвінка. * @param req - Запит на прослуховування. * @returns Результат прослуховування. */ eavesdrop(req: EavesdropRequest): Promise; /** * Змінює стан прослуховування. * @param state - Новий стан прослуховування. * @returns Результат зміни стану прослуховування. */ changeEavesdropState(state: EavesdropState): Promise; /** * Перемикає утримання дзвінка. * @returns Результат утримання дзвінка. */ toggleHold(): Promise; /** * Утримує дзвінок. * @returns Результат утримання дзвінка. */ hold(): Promise; /** * Виймає дзвінок з утримання. * @returns Результат виймання дзвінка з утримання. */ unHold(): Promise; /** * Надсилає DTMF. * @param dtmf - DTMF. * @returns Результат надсилання DTMF. */ sendDTMF(dtmf: string): Promise; /** * Виконує сліпий переказ дзвінка. * @param destination - Місце призначення. * @param variables - Змінні. * @returns Результат переказу. */ blindTransfer(destination: string, variables?: object): Promise; /** * Вимикає або включає мікрофон. * @param mute - Якщо true, вимикає мікрофон; якщо false, включає мікрофон. * @returns Результат вимикання або включення мікрофона. */ mute(mute?: boolean): Promise; muteVideo(mute?: boolean): Promise; trySendInfo(syncRequested?: boolean): void; get mutedVideo(): boolean; get remoteVideoMuted(): boolean | null; get remoteAudioMuted(): boolean | null; get remoteHold(): boolean | null; get allowRecordCall(): boolean; /** * Створює міст між дзвінками. * @param call - Дзвінок, з яким створюється міст. * @param variables - Змінні. * @returns Результат створення мосту. */ bridgeTo(call: Call, variables?: object): Promise; /** * Надсилає звітність про дзвінок. * @param reporting - Дані звітності. * @returns Результат надсилання звітності. */ reporting(reporting: Reporting): Promise; /** * Оновлює розмову. * @param sec - Кількість секунд. * @returns Результат оновлення розмови. */ renew(sec?: number): Promise; /** * Робить запрошення користувача. * @param req - Запит на запрошення. * @returns Результат запрошення. */ callToUser(req: UserCallRequest): Promise; /** * Встановлює контакт для дзвінка. * @param contactId - Ідентифікатор контакту. * @returns Результат встановлення контакту. */ setContact(contactId: number): Promise; processTransferAgent(agentId: number, params: CallParams): Promise; processTransferQueue(queueId: number, params: CallParams): Promise; blindTransferQueue(queueId: number): Promise; startRecordNative(name?: string): Promise; stopRecordNative(): Promise; startRecord(name: string): Promise; stopRecord(): void; screenshot(name: string): Promise; /** * Встановлює дані контакту. * @param e - Дані події контакту. */ private setContactData; private setVideo; } export {}; //# sourceMappingURL=call.d.ts.map