import type { ThreadModel } from '@webitel/chat-web-sdk'; import type { CallVariables } from './call'; import type { Client } from './client'; import type { Form } from './form'; /** * Превʼю чату, прикріпленого до комунікації завдання. */ export interface ThreadPreview extends Pick { } export interface Reporting { /** * Успішність операції. * @type {boolean} */ success?: boolean; /** * Ідентифікатор агента. * @type {number} */ agent_id?: number; /** * Час наступного розподілу. * @type {number} */ next_distribute_at?: number; /** * Інформація про комунікацію. * @type {MemberCommunication} */ communication?: MemberCommunication; /** * Нові комунікації. * @type {MemberCommunication[]} */ new_communication?: MemberCommunication[]; /** * Опис. * @type {string} */ description?: string; /** * Відображати чи ні. * @type {boolean} */ display?: boolean; /** * Термін дії. * @type {number} */ expire?: number; /** * Змінні виклику. * @type {CallVariables} */ variables?: CallVariables; /** * Назва. * @type {string} */ name?: string; /** * Часовий пояс. * @type {object} */ timezone?: object; } /** * Перелік станів завдання. * @enum {string} */ export declare enum JobState { /** * Стан завдання - розподіл. */ Distribute = "distribute", /** * Стан завдання - пропозиція. */ Offering = "offering", /** * Стан завдання - з'єднано. */ Bridged = "bridged", /** * Стан завдання - пропущено. */ Missed = "missed", /** * Стан завдання - обробка. */ Processing = "processing", /** * Стан завдання - закрито. */ Closed = "closed", /** * Стан завдання - знищено. */ Destroy = "destroy" } /** * Перелік назв каналів. * @enum {string} */ export declare enum ChannelName { /** * Назва каналу - дзвінок. */ Call = "call", /** * Назва каналу - вихідний дзвінок. */ OutCall = "out_call", /** * Назва каналу - чат. */ Chat = "chat", /** * Назва каналу - завдання. */ Task = "task" } export interface Node { /** * Ідентифікатор вузла. * @type {number} */ id: number; /** * Назва вузла. * @type {string} */ name: string; /** * Значення вузла. * @type {object} */ value: object; /** * Діти вузла. * @type {Node[]} */ children?: Node[]; } export interface CommunicationType { /** * Ідентифікатор типу комунікації. * @type {number} */ id: number; /** * Назва типу комунікації. * @type {string} */ name: string; channel?: string; } export interface MemberCommunication { /** * Місце призначення комунікації. * @type {string} */ destination: string; /** * Тип комунікації. * @type {CommunicationType} */ type: CommunicationType; /** * Відображення комунікації. * @type {string} */ display?: string; /** * Стан комунікації. * @type {number} * @todo */ state?: number; /** * Превʼю чату, прикріпленого до комунікації. * @type {ThreadPreview} */ thread?: ThreadPreview; } export interface ChannelEvent { /** * Статус події каналу. * @type {string} */ status: string; /** * Ідентифікатор спроби. * @type {number} */ attempt_id?: number; /** * Часова мітка події. * @type {number} */ timestamp: number; /** * Канал події. * @type {string} */ channel: string; } export interface Distribute extends ChannelEvent { /** * Ідентифікатор додатку. * @type {string} */ app_id: string; /** * Ідентифікатор черги. * @type {number} */ queue_id: number; /** * Назва черги. * @type {string} */ queue_name: string; /** * Ідентифікатор учасника. * @type {number} */ member_id: number; /** * Назва учасника. * @type {string} */ member_name?: string; /** * Ідентифікатор агента. * @type {number} */ agent_id?: number; /** * Ідентифікатор каналу учасника. * @type {string} */ member_channel_id?: string; /** * Ідентифікатор каналу агента. * @type {string} */ agent_channel_id?: string; /** * Інформація про комунікацію. * @type {MemberCommunication} */ communication: MemberCommunication; /** * Чи є звітність. * @type {boolean} */ has_reporting: boolean; /** * Чи є форма. * @type {boolean} */ has_form?: boolean; /** * Змінні. * @type {{ [key: string]: any }} */ variables?: { [key: string]: any; }; } export interface TaskData extends Distribute { /** * Ідентифікатор додатку. * @type {string} */ app_id: string; /** * Час, коли завдання було з'єднано. * @type {number} */ bridged_at?: number; /** * Час, коли завдання залишило. * @type {number} */ leaving_at?: number; /** * Час обробки в секундах. * @type {number} */ processing_sec?: number; /** * Час оновлення обробки в секундах. * @type {number} */ processing_renewal_sec?: number; /** * Час тайм-ауту обробки. * @type {number} */ processing_timeout_at?: number; /** * Тривалість завдання в секундах. * @type {number} */ duration: number; /** * Стан завдання. * @type {string} */ state: string; /** * Форма. * @type {Form | null} */ form?: Form | null; /** * Чи є форма. * @type {boolean} */ has_form?: boolean; } export interface Offering { /** * Ідентифікатор каналу учасника. * @type {string} */ member_channel_id?: string; /** * Ідентифікатор каналу агента. * @type {string} */ agent_channel_id?: string; /** * Автоматичний прийом. * @type {boolean} */ auto_answer: boolean; } export interface Missed { /** * Тайм-аут. * @type {number} */ timeout: number; /** * Кількість пропущених відповідей. * @type {number} */ no_answers: number; } export interface WrapTime { /** * Тайм-аут. * @type {number} */ timeout: number; } export interface Processing { /** * Тайм-аут обробки. * @type {number | null} */ timeout: number | null; /** * Час обробки в секундах. * @type {number} */ sec: number; /** * Час оновлення обробки в секундах. * @type {number} */ renewal_sec?: number; } export interface DistributeEvent extends ChannelEvent { /** * Інформація про розподіл. * @type {Distribute} */ distribute: Distribute; } export interface BridgedEvent extends ChannelEvent { /** * Форма. * @type {Form | null} */ form?: Form | null; } export interface OfferingEvent extends ChannelEvent { /** * Інформація про пропозицію. * @type {Offering} */ offering: Offering; } export interface FormEvent extends ChannelEvent { /** * Форма. * @type {Form | null} */ form?: Form | null; } export interface TransferEvent extends ChannelEvent { /** * Ідентифікатор спроби передачі. * @type {number} */ to_attempt_id: number; /** * Інформація про розподіл. * @type {Distribute} */ distribute: Distribute; form?: Form; } export interface MissedEvent extends ChannelEvent { /** * Інформація про пропущені події. * @type {Missed} */ missed: Missed; } export interface WrapTimeEvent extends ChannelEvent { /** * Інформація про час завершення. * @type {WrapTime} */ wrap_time: WrapTime; } export interface ProcessingEvent extends ChannelEvent { /** * Інформація про обробку. * @type {Processing} */ processing: Processing; } export interface Queue { /** * Ідентифікатор черги. * @type {number} */ id: number; /** * Назва черги. * @type {string} */ name: string; } export declare class Task { private readonly client; protected distribute: Distribute; /** * Історія розподілів. * @type {Distribute[]} */ history: Distribute[]; /** * Інформація про комунікацію. * @type {MemberCommunication} */ communication: MemberCommunication; /** * Ідентифікатор завдання. * @type {number} */ id: number; /** * Стан завдання. * @type {JobState} */ state: JobState; /** * Дані для постобробки. * @type {object} */ postProcessData: object; /** * Час останньої зміни статусу. * @type {number} */ lastStatusChange: number; /** * Час створення завдання. * @type {number} */ createdAt: number; /** * Час пропозиції. * @type {number} */ offeringAt: number; /** * Час відповіді. * @type {number} */ answeredAt: number; /** * Час з'єднання. * @type {number} */ bridgedAt: number; /** * Час початку обробки. * @type {number} */ startProcessingAt: number; /** * Час завершення. * @type {number} */ stopAt: number; /** * Час закриття. * @type {number} */ closedAt: number; /** * Час звітування. * @type {number} */ reportedAt: number; /** * Форма. * @type {Form | null} */ form: Form | null; /** * Інформація про обробку. * @type {Processing | null} */ _processing: Processing | null; /** * Автоматичний прийом. * @type {boolean} */ autoAnswered: boolean; /** * Параметр автоматичного прийому. * @type {boolean | string | number} */ _autoAnswerParam: boolean | string | number; /** * Тайм-аут автоматичного прийому. * @type {any | null} */ _autoAnswerTimerId: any | null; /** * Конструктор класу. * @param {Client} client - Клієнт. * @param {ChannelEvent} e - Подія каналу. * @param {Distribute} distribute - Інформація про розподіл. */ constructor(client: Client, e: ChannelEvent, distribute: Distribute); /** * Отримати чергу завдання. * @returns {Queue} */ get queue(): Queue; /** * Отримати тривалість завдання в секундах. * @returns {number} */ get duration(): number; /** * Чи є форма. * @returns {boolean} */ get hasForm(): boolean; /** * Отримати канал. * @returns {string} */ get channel(): string; /** * Чи дозволено прийняття завдання. * @returns {boolean} */ get allowAccept(): boolean; /** * Чи дозволено відхилення завдання. * @returns {boolean} */ get allowDecline(): boolean; /** * Чи дозволено закриття завдання. * @returns {boolean} */ get allowClose(): boolean; /** * Отримати ідентифікатор учасника. * @returns {number} */ get memberId(): number; /** * Отримати ідентифікатор черги. * @returns {number} */ get queueId(): number; /** * Чи є звітність. * @returns {boolean} */ get hasReporting(): boolean; /** * Чи дозволено звітування. * @returns {boolean} */ get allowReporting(): boolean; /** * Отримати ідентифікатор каналу агента. * @returns {string} */ get agentChannelId(): string | undefined; /** * Встановити стан завдання. * @param {string} state - Стан завдання. * @todo */ setState(state: string): void; setForm(form: Form | null): void; /** * Встановити час відповіді. * @param {number} t - Час відповіді. */ setAnswered(t: number): void; /** * Встановити пропозицію. * @param {OfferingEvent} e - Подія пропозиції. */ setOffering(e: OfferingEvent): void; /** * Встановити з'єднання. * @param {BridgedEvent} e - Подія з'єднання. */ setBridged(e: BridgedEvent): void; /** * Встановити обробку. * @param {number} now - Час обробки. * @param {Processing} p - Інформація про обробку. */ setProcessing(now: number, p: Processing): void; /** * Встановити закриття завдання. * @param {number} now - Час закриття. */ setClosed(now: number): void; /** * Встановити новий розподіл. * @param {Distribute} d - Інформація про новий розподіл. */ setTransferred(d: Distribute, f?: Form): void; /** * Встановити пропущене завдання. */ setMissed(): void; /** * Отримати час тайм-ауту обробки. * @returns {number | null} */ get processingTimeoutAt(): number | null; /** * Отримати тривалість обробки в секундах. * @returns {number | null} */ get processingSec(): number | null; /** * Отримати спробу. * @returns {Task} */ get attempt(): this; /** * Отримати змінні завдання. * @returns {object} */ get variables(): { [key: string]: any; }; /** * Чи є учасник. * @returns {boolean} */ get isMember(): boolean; /** * Отримати номер для відображення. * @returns {string} */ get displayNumber(): string; /** * Отримати ім'я для відображення. * @returns {string | null} */ get displayName(): string | null; /** * Отримати відображення (ім'я та номер). * @returns {string} */ get display(): string; /** * Отримати тривалість оновлення в секундах. * @returns {number | null} */ get renewalSec(): number | null; /** * Чи є автоматичний прийом. * @returns {boolean} */ get autoAnswer(): boolean; /** * Отримати затримку автоматичного прийому. * @returns {number} */ get autoAnswerDelay(): number; /** * Прийняти завдання. * @returns {Promise} */ accept(): Promise; /** * Автоматично прийняти завдання із затримкою. * @returns {Promise} */ acceptDelay(): Promise; /** * Закрити завдання. * @returns {Promise} */ close(): Promise; /** * Відхилити завдання. * @returns {Promise} */ decline(): Promise; /** * Звітувати про завдання. * @param {Reporting} reporting - Дані звітності. * @returns {Promise} */ reporting(reporting: Reporting): Promise; /** * Оновити завдання. * @param {number} [sec] - Кількість секунд для оновлення. * @returns {Promise} */ renew(sec?: number): Promise; /** * Виконати дію з формою. * @param {string} action - Дія, яку потрібно виконати. * @param {Map} fields - Поля форми. * @returns {Promise} * @throws {Error} Якщо активна форма не знайдена. */ formAction(action: string, fields: Map | undefined): Promise; saveForm(form: Form | null, fields: Map | null): Promise; componentAction(componentId: string, action: string, vars: Map | undefined, sync?: boolean): Promise; } //# sourceMappingURL=task.d.ts.map