import type { CallVariables } from './call'; import type { Client, FileUploadProgress } from './client'; import type { Reporting, Task, TaskData } from './task'; /** * Перелік причин відмови. */ export declare enum DeclineCause { Timeout = "TIMEOUT", Busy = "BUSY", Cancel = "CANCEL", Transfer = "TRANSFER" } /** * Перелік дій чату. */ export declare enum ChatActions { Message = "message", UserInvite = "user_invite", Invite = "invite_conversation",// коли запрошують в групу нового учасника Joined = "join_conversation", Close = "close_conversation", Leave = "leave_conversation", Decline = "decline_invite", Update = "update_channel", Destroy = "destroy", MessageDeleted = "message_deleted" } /** * Перелік станів розмови. */ export declare enum ConversationState { Init = "init", Invite = "invite", Active = "active", Pending = "pending", Closed = "closed" } /** * Подія чату. */ export interface ChatEvent { /** * Дія, що викликала подію. * @type {string} */ action: string; /** * Дані події. * @type {object} */ data?: object; } /** * Базовий інтерфейс події чату. */ export interface BaseChatEvent { /** * Ідентифікатор розмови. * @type {string} */ conversation_id: string; /** * Час події (Unix timestamp). * @type {number} */ timestamp: number; } /** * Подія запрошення до чату. */ export interface InviteEvent extends BaseChatEvent { /** * Ідентифікатор запрошення. * @type {string} */ invite_id: string; /** * Назва розмови. * @type {string} */ title: string; /** * Члени чату. * @type {ChatChannel[]} */ members: ChatChannel[]; /** * Повідомлення в чаті. * @type {Message[]} */ messages: Message[]; /** * Інформація про розмову. * @type {ConversationInfo} */ conversation: ConversationInfo; /** * Змінні виклику. * @type {CallVariables} */ variables?: CallVariables; } /** * Подія приєднання до чату. */ export interface JoinedEvent extends BaseChatEvent { /** * Член чату, що приєднався. * @type {ChatChannel} */ member: ChatChannel; } /** * Подія повідомлення в чаті. */ export interface MessageEvent extends BaseChatEvent, Message { } /** * Подія виходу з чату. */ export interface LeavedEvent extends BaseChatEvent { /** * Ідентифікатор чату, з якого вийшли. * @type {string} */ leaved_channel_id: string; /** * Причина виходу. * @type {DeclineCause | null} */ cause?: DeclineCause | null; } /** * Подія закриття чату. */ export interface CloseEvent extends BaseChatEvent { /** * Ідентифікатор каналу, з якого закрито розмову. * @type {string} */ from_channel_id: string; /** * Причина закриття. * @type {string} */ cause: string; } /** * Подія відмови від запрошення. */ export interface DeclineInviteEvent extends BaseChatEvent { /** * Ідентифікатор користувача, який відмовився. * @type {number} */ user_id: number; /** * Ідентифікатор запрошення. * @type {string} */ invite_id: string; /** * Причина відмови. * @type {DeclineCause | null} */ cause?: DeclineCause | null; } /** * Подія оновлення каналу. */ export interface UpdateChannelEvent extends BaseChatEvent { /** * Ідентифікатор каналу. * @type {string} */ channel_id: string; /** * Час оновлення. * @type {number} */ updated_at: number; } /** * Інтерфейс для повідомлення в чаті. */ export interface Message { /** * Ідентифікатор повідомлення. * @type {number} */ id: number; /** * Ідентифікатор каналу. * @type {string} */ channel_id: string; /** * Тип повідомлення. * @type {string} */ type: string; /** * Текст повідомлення. * @type {string} */ text: string; /** * Файл, прикріплений до повідомлення. * @type {MessageFile} */ file?: MessageFile; /** * Контактна інформація. * @type {object} */ contact?: object; /** * Час створення. * @type {number} */ created_at: number; /** * Час оновлення. * @type {number | null} */ updated_at?: number | null; conversation?: string; variables?: object | null; } /** * Інтерфейс для видаленого повідомлення. */ export interface MessageDeleted { /** * Ідентифікатор повідомлення. * @type {number} */ id: number; /** * Ідентифікатор каналу. * @type {string} */ channel_id: string; /** * Ідентифікатор розмови. * @type {string} */ conversation_id: string; /** * Тип повідомлення. * @type {string} */ type: string; /** * Текст повідомлення. * @type {string} */ text: string; /** * Час повідомлення. * @type {number} */ timestamp: number; /** * Час створення. * @type {number | undefined} */ created_at?: number; } /** * Інтерфейс для інформації про канал чату. */ export interface ChatChannel { /** * Ідентифікатор каналу. * @type {string | undefined} */ id?: string; /** * Назва каналу. * @type {string | undefined} */ name?: string; /** * Тип каналу. * @type {string | undefined} */ type?: string; /** * Месенджер каналу. * @type {string | undefined} */ messenger?: string; /** * Чи є це самостійний користувач. * @type {boolean | undefined} */ self?: boolean; } /** * Інтерфейс для файлу повідомлення. */ export interface MessageFile { /** * Ідентифікатор файлу. * @type {number} */ id: number; /** * Назва файлу. * @type {string} */ name: string; /** * MIME-тип файлу. * @type {string} */ mime: string; /** * Розмір файлу. * @type {number} */ size: number; /** * URL для завантаження файлу. * @type {string} */ url: string; /** * URL для потокового доступу до файлу. * @type {string} */ streamUrl: string; } /** * Інтерфейс для повідомлення з інформацією про канал. */ export interface MessageWithChannel { /** * Ідентифікатор повідомлення. * @type {number} */ id: number; /** * Ідентифікатор каналу. * @type {string} */ channelId: string; /** * Тип повідомлення. * @type {string} */ type: string; /** * Файл, прикріплений до повідомлення. * @type {MessageFile} */ file?: MessageFile; /** * Текст повідомлення. * @type {string | undefined} */ text?: string; /** * Контактна інформація. * @type {object | null} */ contact?: object | null; /** * Час створення. * @type {number} */ createdAt: number; /** * Час оновлення. * @type {number} */ updatedAt: number; /** * Член чату, який відправив повідомлення. * @type {ChatChannel | null} */ member: ChatChannel | null; variables?: object | null; } /** * Інтерфейс для інформації про розмову. */ export interface ConversationInfo { /** * Ідентифікатор розмови. * @type {string} */ id: string; /** * Назва розмови. * @type {string} */ title: string; /** * Час створення. * @type {number} */ created_at: number; /** * Час оновлення. * @type {number | null} */ updated_at: number | null; } /** * Інтерфейс для елемента розмови. */ export interface ConversationItem { /** * Ідентифікатор розмови. * @type {string} */ id: string; /** * Ідентифікатор запрошення. * @type {string | undefined} */ invite_id?: string; /** * Ідентифікатор каналу. * @type {string | undefined} */ channel_id?: string; /** * Назва розмови. * @type {string} */ title: string; /** * Час створення. * @type {number} */ created_at: number; /** * Час закриття. * @type {number} */ closed_at: number; /** * Час оновлення. * @type {number} */ updated_at: number; /** * Час приєднання. * @type {number} */ joined_at: number; /** * Час виходу. * @type {number | undefined} */ leaving_at?: number; /** * Змінні виклику. * @type {CallVariables | undefined} */ variables?: CallVariables; /** * Члени розмови. * @type {ChatChannel[]} */ members: ChatChannel[]; /** * Повідомлення в розмові. * @type {Message[]} */ messages: Message[]; /** * Дані задачі. * @type {TaskData | undefined} */ task?: TaskData; member?: ChatChannel; } /** * Інтерфейс для контакту. */ interface Contact { /** * Ідентифікатор контакту. * @type {number | null} */ id: number | null; /** * Приховати контакт. * @type {boolean} */ hide: boolean; } /** * Клас Conversation: Описує чат, включаючи його стан, учасників, повідомлення та інші атрибути. * * Конструктор Conversation: * client: Клієнт для виконання запитів, використовуваних у розмові. * conversationId: Ідентифікатор розмови. * title: Назва розмови. * members: Список учасників розмови. * messages: Список повідомлень у розмові. * variables: Опційні змінні виклику, що можуть бути використані в розмові. * Конструктор ініціалізує всі властивості класу, задаючи значення за замовчуванням або використовує * передані параметри для налаштування об'єкта розмови. */ export declare class Conversation { private readonly client; private readonly conversationId; readonly _title: string; data: any; state: ConversationState; channelId: string | null; inviteId: string | null; member: ChatChannel; members: ChatChannel[]; _cause: DeclineCause | null; _messages: Message[]; autoAnswered: boolean; _autoAnswerParam: boolean | string | number; _autoAnswerTimerId: any | null; createdAt: number; updatedAt: number; answeredAt: number; invitedAt: number; closedAt: number; _hasReporting: boolean; lastAction: ChatActions | null; variables?: CallVariables; task: Task | null; queue: { [index: string]: any; } | null; contact: Contact | null; meetingId: string | null; /** * Конструктор для розмови. * @param {Client} client - Клієнт для виконання запитів. * @param {string} conversationId - Ідентифікатор розмови. * @param {string} title - Назва розмови. * @param {ChatChannel[]} members - Члени розмови. * @param {Message[]} messages - Повідомлення в розмові. * @param {CallVariables} [variables] - Змінні виклику. */ constructor(client: Client, conversationId: string, _title: string, members: ChatChannel[], messages: Message[], variables?: CallVariables); /** * Встановлює інформацію про запрошення. * @param {string} inviteId - Ідентифікатор запрошення. * @param {number} timestamp - Час запрошення. */ setInvite(inviteId: string, timestamp: number): void; /** * Перевіряє, чи є ручний розподіл в черзі. * @type {boolean} */ get manualDistribution(): boolean | null; /** * Отримує ідентифікатор контакту. * @type {number | null} */ get contactId(): number | null; /** * Перевіряє, чи слід приховувати контакт. * @type {boolean} */ get hideContact(): boolean | undefined; /** * Встановлює ідентифікатор контакту. * @param {number} id - Ідентифікатор контакту. */ setContactId(id: number): void; /** * Перевіряє, чи потрібно автоматично відповісти. * @type {boolean} */ get autoAnswer(): boolean; /** * Отримує затримку для автоматичної відповіді. * @type {number} */ get autoAnswerDelay(): number; /** * Встановлює розмову як відповідану. * @param {string} channelId - Ідентифікатор каналу. * @param {number} timestamp - Час відповіді. * @param {ChatChannel} member - Член чату. */ setAnswered(channelId: string, timestamp: number, member: ChatChannel): void; /** * Встановлює розмову як закриту. * @param {number} timestamp - Час закриття. */ setClosed(timestamp: number): void; /** * Встановлює причину відмови від запрошення. * @param {DeclineInviteEvent} e - Подія відмови. */ setDecline(e: DeclineInviteEvent): void; /** * Встановлює причину виходу з чату. * @param {LeavedEvent} e - Подія виходу. */ setLeave(e: LeavedEvent): void; /** * Оновлює видалене повідомлення. * @param {MessageDeleted} d - Видалене повідомлення. */ setDeletedMessage(d: MessageDeleted): void; /** * Отримує ідентифікатор розмови. * @type {string} */ get id(): string; /** * Отримує причину відмови або виходу. * @type {DeclineCause | null} */ get cause(): DeclineCause | null; /** * Отримує всі повідомлення з каналу. * @type {MessageWithChannel[]} */ get messages(): MessageWithChannel[]; get getConversationId(): string; /** * Отримує всі повідомлення з каналу. * @returns {MessageWithChannel[]} */ getMessages(): MessageWithChannel[]; /** * Обробляє наступний етап (потрібно реалізувати). * @returns {Promise} */ next(): Promise; /** * Обробляє пагінацію для повідомлень. * @param {number} page - Номер сторінки. * @param {number} perPage - Кількість повідомлень на сторінку. * @returns {Promise} */ pagination(_page: number, _perPage: number): Promise; /** * Додає нове повідомлення до розмови. * @param {MessageEvent} e - Подія нового повідомлення. */ newMessage(e: MessageEvent): void; /** * Перевіряє, чи дозволена відмова. * @type {boolean} */ get allowDecline(): boolean; /** * Перевіряє, чи дозволено приєднання. * @type {boolean} */ get allowJoin(): boolean; /** * Перевіряє, чи дозволено вихід. * @type {boolean} */ get allowLeave(): boolean; /** * Перевіряє, чи дозволена подача звітності. * @type {boolean} */ get allowReporting(): boolean; /** * Перевіряє, чи є звітність. * @type {boolean} */ get hasReporting(): boolean; /** * Отримує ідентифікатори всіх учасників. * @type {string[]} */ get membersId(): string[]; /** * @deprecated * Отримує завдання, яке зараз виконується. * @type {Task | null} */ get attempt(): Task | null; /** * Перевіряє, чи була розмова передана. * @type {boolean} */ get isTransferred(): boolean; /** * Відмовляється від розмови. * @param {DeclineCause} [cause] - Причина відмови. * @returns {Promise} */ decline(cause?: DeclineCause): Promise; /** * Затримує приєднання до розмови, якщо потрібно. * @returns {Promise} */ joinDelay(): Promise; /** * Приєднується до розмови. * @returns {Promise} */ join(): Promise; /** * Закриває розмову. * @param {string} cause - Причина закриття. * @returns {Promise} */ close(cause: string): Promise; /** * Виходить з розмови. * @param {string} cause - Причина виходу. * @returns {Promise} */ leave(cause: string): Promise; /** * Відправляє текстове повідомлення. * @param {string} text - Текст повідомлення. * @returns {Promise} */ sendText(text: string): Promise; /** * Відправляє файл. * @param {File} file - Файл для відправки. * @param {FileUploadProgress} [cb] - Колбек для відстеження прогресу завантаження. * @returns {Promise} */ sendFile(file: File, cb?: FileUploadProgress): Promise; /** * Відправляє дані (текст або файл). * @param {string | File} data - Дані для відправки. * @param {FileUploadProgress} [cb] - Колбек для відстеження прогресу завантаження. * @returns {Promise} */ send(data: string | File, cb?: FileUploadProgress): Promise; /** * Оновлює інформацію про членів розмови. * @param {ChatChannel[]} members - Нові члени розмови. */ setMembers(members: ChatChannel[]): void; /** * Перевіряє, чи належить повідомлення розмові. * @param {Message} m - Повідомлення. * @returns {boolean} */ isMessageInConversation(m: Message): boolean; /** * Надсилає звіт для поточної розмови. * * Цей метод викликає метод reporting об'єкта Task, щоб надіслати звіт про розмову. * Якщо розмова не знаходиться в черзі, буде згенерована помилка. * * @param {Reporting} reporting - Об'єкт Reporting, який містить дані звіту. * @throws {Error} - Якщо розмова не знаходиться в черзі. * @returns {Promise} - Результат виконання методу reporting об'єкта Task. */ reporting(reporting: Reporting): Promise; /** * Оновлює час для поточної розмови в черзі. * * Цей метод викликає метод renew об'єкта Task, щоб оновити час розмови. * Якщо розмова не знаходиться в черзі, буде згенерована помилка. * * @param {number} [sec] - Кількість секунд для продовження розмови. Якщо не зазначено, використовується значення за замовчуванням. * @throws {Error} - Якщо розмова не знаходиться в черзі. * @returns {Promise} - Результат виконання методу renew об'єкта Task. */ renew(sec?: number): Promise; /** * Переносить розмову до плану. * * Цей метод відправляє запит на сервер для перенесення розмови до зазначеного плану. * * @param {number} planId - Ідентифікатор плану, до якого потрібно перенести розмову. * @param {CallVariables} variables - Змінні. * @returns {Promise} - Результат запиту на сервер для перенесення розмови. */ transferToPlan(planId: number, variables?: CallVariables): Promise; /** * Переносить розмову до іншого користувача. * * Цей метод відправляє запит на сервер для перенесення розмови до вказаного користувача. * * @param {number} userId - Ідентифікатор користувача, до якого потрібно перенести розмову. * @param {CallVariables} variables - Змінні. * @returns {Promise} - Результат запиту на сервер для перенесення розмови. */ transferToUser(userId: number, variables?: CallVariables): Promise; /** * Встановлює контакт для розмови. * * Цей метод відправляє запит на сервер для призначення контактного ідентифікатора до розмови. * * @param {number} contactId - Ідентифікатор контакту, який потрібно призначити для розмови. * @returns {Promise} - Результат запиту на сервер для встановлення контакту. */ setContact(contactId: number): Promise; /** * Надсилає частину текстового повідомлення у розмову. * * Цей метод надсилає частину текстового повідомлення на сервер у рамках розмови. * * @param {string} text - Текст повідомлення, яке потрібно надіслати. * @returns {Promise} - Результат запиту на сервер для надсилання частини текстового повідомлення. */ private sendMessageTextChunk; /** * Визначає учасника, який надіслав повідомлення. * * Цей метод перевіряє, чи є відправник повідомлення поточним учасником розмови або одним з членів розмови. * * @param {Message} msg - Повідомлення, для якого потрібно визначити відправника. * @returns {ChatChannel | null} - Об'єкт `ChatChannel`, що представляє учасника, який надіслав повідомлення, або `null`, якщо учасник не знайдено. */ private messageMember; } export {}; //# sourceMappingURL=conversation.d.ts.map