Для роботи Вам знадобиться ключ (токен) доступу до API.
Ключ дозволяє ідентифікувати Ваш проект та отримувати до нього доступ із максимальними привілеями без необхідності попередньої авторизації щоразу.
На сторінці особистого кабінету “API” необхідно створити ключ:

Цей ключ необхідно вказувати при кожному запиті в заголовку Authorization.
Усі відносні шляхи усіх методів, описаних у цій документації, мають шляхи відносно https://api.unitalk.cloud/api
Усі запити до методів API виконуються у режимі POST.
Приклад задання режиму, необхідного заголовка авторизації та адреси методу для запиту в Postman виглядає наступним чином:

Також можна відправляти ключ у форматі “Bearer *Ваш ключ*”
Якщо ключ або заголовок авторизації відсутній або вказаний неправильно, результат виконання методу буде наступним:
{"status": "Error", "message": "Authorization invalid"}Будь-який метод описаного API може повернути помилку:
{"status": "Error", "message": "Internal error"}Про такі помилки повідомляйте, будь ласка, у технічну підтримку.
В загальному випадку помилки методів мають наступну структуру:
{
"status": "Error",
"message": "*Текст помилки*",
"data": "*Додаткова інформація*"
}Надалі в цій інструкції будуть розглядатися лише поля message та data (за наявності).
Так, ми знаємо що в JSON не може бути коментарів, але впевнені, що так зрозуміти буде простіше 🙂
Наше апі доволі швидке, і більшість ваших запитів буде займати мілісекунди, бо ми любимо кешувати все, що тільки можна. Але деякі можуть бути складніші, тож звертайте увагу на час їх виконання.
Обробка до 50мс – вважається одним запитом.
<200мс – 2 запити
<500мс – 3 запити
<1000мс – 4 запити
>1000мс – 5 запитів
Рекомендації по зниженню вартості та збільшенню швидкості:
Зверніть увагу, що ви можете інколи кардинально пришвидшити обробку, якщо використаєте фільтр по повному співпадінню, замість часткового. Або інколи запросити більше інформації, і відфільтрувати результат, може виявитись швидше ніж зробити декілька запитів зі складними фільтрами. Не обходьте стороною пакетні запити, як от в обдзвонах, адже додати 1000 номерів в обдзвон одним запитом, значно швидше та дешевше і вам і нам, ніж робити 1000 запитів (а якщо всі вони ще й прилетять одночасно – у нас і DOS захист може спрацювати). А інколи можна використати кеш, як це полюбляємо ми 😊
Інформацію щодо використання запитів по вашому тарифу, ви можете переглянути в розділі “Мій тариф” в особистому кабінеті.
Для запобігання зайвого навантаження в результаті нецільових, шкідливих або надлишкових запитів існують обмеження. Якщо представлені обмеження недостатні для повноцінного використання послуг або призвели до випадкового блокування, зверніться до технічної підтримки.
Обмеження кількості будь-яких HTTP запитів:
· Більше 30 запитів за 10 секунд – тимчасове блокування;
· Повторне перевищення – тимчасове блокування підвищенної тривалості;
· Більше 100 запитів за 10 секунд – постійне блокування.
Обмеження одночасних API дзвінків: 20 одночасних дзвінків.
Обмеження запитів API дзвінків: 15 за секунду.
Робота з обдзвонами виконується за допомогою дій, метод:
Відносний шлях: /autodial/action
Режим: POST
Content-Type: application/json
Дії вказуються в тілі запиту в обов’язковому параметрі action та визначають перелік необхідних параметрів. Перелік існуючих дій:
| GET_LIST | Отримати список обдзвонів |
| GET_WITH_DATA | Отримати список обдзвонів з повними даними |
| ADD | Додати обдзвон |
| UPDATE | Оновити обдзвон |
| REMOVE | Видалити обдзвон |
| REFRESH | Продзвонити повторно |
| CANCEL | Скасувати обдзвон |
| PAUSE | Поставити обдзвон на паузу |
| UNPAUSE | Зняти обдзвон з паузи |
| ADD_NUMBERS | Додати номери |
| GET_NUMBER | Отримати інформацію про номер обдзвону |
| GET_NUMBERS | Отримати інформацію про номери обдзвону |
| GET_CALLS_HISTORY | Отримати інформацію про дзвінки обдзвону |
| REMOVE_NUMBERS | Видалити номери з обдзвону |
| REMOVE_ALL_NUMBERS | Видалити всі номери обдзвону |
Оскыльки даний метод має велику кількість варіацій використання та різноманітних параметрів, рекомендується налаштувати декілька обдзвонів в особистому кабінеті та ознайомитись з їх функціоналом візуально, перш ніж вивчати цю інструкцію.
Можливі помилки:
| Action is null | Цільова дія не вказана |
| Invalid action | Цільова дія вказано невірно |
JSON запиту:
{
"action": "GET_LIST"
}Приклад відповіді у разі успіху:
[
{
"id": 111, // Унікальний ідентифікатор обдзвону
"name": "Sample_name", // Назва обдзвону
"type": "AUTODIAL" // Тип обдзвону
},
...
]Існуючі типи обдзвонів приведені в відповідному словнику.
Дія “Отримати список обдзвонів з повними даними” дозволяє отримати детальну інформацію про поточну конфігурацію обдзвонів проекта в масиві tasks. Окрім того додатково передаються словники, параметри та списки, що можуть знадобитись для інтерпретації та зміни конфігурацій обдзвонів.
Перелік додаткових списків:
· audios – масив аудіозаписів проекту з розділу “Автообдзвони”
· moh – масив аудіозаписів проекту з розділу “Мелодії очікування на лінії та черг”
· groups – масив груп внутрішніх ліній проекту
· scenarios – масив вхідних сценаріїв проекту
· outScenarios – масив вихідних сценаріїв проекту
· ttsSettings – масив профілей налаштувань синтезу мови проекту
· voiceSecretaries – масив голосових секретарів проекту
· Масиви triggerActionEventsData та triggerActionEventsAndTriggerActions надають таку інформацію про події обдзвонів як порядковий номер та список доступних обробників
Перелік додаткових словників:
· triggerActionEvents – прейти до словника
· taskStatuses – перейти до словника
· Параметри autodialNumberStatesInfo та statesInfo містять інформацію відповідну словнику callState в різних представленнях
· autodialerTypes – перейти до словника
· autodialerModes – перейти до словника
· audioSynthesisDynamicValues – перейти до словника
· withdrawalCategories
Перелік додаткових параметрів:
· triggerActionsPresent – вказує на наявність в проекті обробників подій
· maxAddNumbersCount – максимальна кількість номерів, що можна додати за одну дію
· maxRemoveNumbersCount – максимальна кількість номерів, що можна видалити за одну дію
· multiAudiosLimit – максимальна кількість елементів в списку compositeAudio
· minMultiAudioSilenceMillis – мінімальна кількість мілісекунд в елементі silenceMillis масива compositeAudio
· maxMultiAudioSilenceMillis – максимальна кількість мілісекунд в елементі silenceMillis масива compositeAudio
JSON запиту:
{
"action": "GET_WITH_DATA"
}Приклад відповіді у разі успіху:
{
"audios": { // Масив аудіо
"1234": "Sample_audio_name", // "ID": "Назва"
...
},
"moh": { // Масив мелодій очікування на лінії
"2345": "Sample_moh_name", // "ID": "Назва"
...
},
"groups": { // Масив груп внутрішніх ліній
"3456": "Sample_group_name", // "ID": "Назва"
...
},
"scenarios": { // Масив вхідних сценаріїв
"4567": "Main with IVR", // "ID": "Назва"
...
},
"outScenarios": { // Масив вихідних сценаріїв
"5678": "From a fixed number", // "ID": "Назва"
...
},
"ttsSettings": { // Масив профілів налаштувань синтезу мови
"12": "Pretty woman voice", // "ID": "Назва"
...
},
"voiceSecretaries": { // Масив голосових секретарів
"97": "Sample_voice_secretary_name", // "ID": "Назва"
...
},
"triggerActionEvents": { // Масив подій для обдзвону
"AUTODIAL_FINISH": "Обзвон завершен", // "ID": "Назва"
...
},
"triggerActionEventsData": [ // Інформація про події обдзвонів
{
"event": "AUTODIAL_FINISH", // Подія
"title": "Обзвон завершен", // Назва події
"order": 200 // Порядковий номер
},
...
],
"triggerActionEventsAndTriggerActions": { // Списки доступних обробників для кожної події
"AUTODIAL_FINISH": { // "Подія": {Список ддоступних обробників}
"123": "[Telegram] Personal notification", // "ID": "Назва"
...
},
...
},
"triggerActionsPresent": true, // Ознака наявності в проекті обробників події
"autodialNumberStatesInfo": { // Інформація про стани номерів обдзвонів
"lang": { // Мова проекту
"locale": "ru",
"shortLocaleCode": "ru",
"code": "RU"
},
"orderedStates": [ // Впорядкований список станів на основі порядкового номеру
"NEW",
...
],
"statesAndTitles": { // Масив станів з назвами
"DIALING": "В процессе обзвона",
...
},
"repeatableStates": [ // Список станів доступних для автоматичного повторного продзвону
"BUSY",
...
],
"refreshableStates": [ // Список станів доступних для методу REFRESH
"FAIL",
...
],
"warningStates": [ // Список станів, що свідчать про можливі помилки в налаштуваннях обдзвонів або телефонії
"AUDIO_ERR",
...
],
"doneStates": [ // Список станів, що відповідають завершеним дзвінкам
"ANSWER",
...
]
},
"taskStatuses": { // Масив статусів обдзвонів
"IN_PROGRESS": "В процессе обзвона",
...
},
"autodialerTypes": { // Масив типів обдзвонів
"AUTODIAL": "Autodialer",
"GUARANTEED_DIAL": "Guaranteed autodialer",
"VOICE_ROBOT": "Voice robot"
}
"autodialerModes": { // Масив режимів обдзвонів
"FIXED": "By number of threads",
"FREE": "By free operators",
"SMART": "Smart selection"
},
"maxAddNumbersCount": 100000, // Максимальна кількість номерів, що можна додати за одну дію
"maxRemoveNumbersCount": 10000, // Максимальна кількість номерів, що можна видалити за одну дію
"multiAudiosLimit": 20, // Максимальна кількість елементів в списку compositeAudio
"minMultiAudioSilenceMillis": 1, // Мінімальна кількість мілісекунд в елементі silenceMillis масива compositeAudio
"maxMultiAudioSilenceMillis": 10000, // Максимальна кількість мілісекунд в елементі silenceMillis масива compositeAudio
"audioSynthesisDynamicValues": { // Масив динамічних значень
"NA": "Autodialer number: name",
"NO": "Autodialer number: note",
"LI": "Autodialer number: data for Web Dialer",
"P1": "Autodialer number: parameter #1",
"P2": "Autodialer number: parameter #2",
"P3": "Autodialer number: parameter #3",
"P4": "Autodialer number: parameter #4",
"P5": "Autodialer number: parameter #5",
"P6": "Autodialer number: parameter #6",
"P7": "Autodialer number: parameter #7",
"P8": "Autodialer number: parameter #8",
"P9": "Autodialer number: parameter #9",
"P10": "Autodialer number: parameter #10"
},
"withdrawalCategories": { // Масив категорій списань обдзвонів
"CALL": "Совершение звонков",
"AUTODIALER": "Обзвон",
"VOICE_SECRETARY": "Голосовой секретарь",
"TEXT_TO_SPEECH": "Синтез речи",
"SPEECH_RECOGNITION": "Распознавание речи",
"VOICE_ANALYTICS": "Речевая аналитика",
"ANSWERING_MACHINE_DETECTION": "Распознавание автоответчика",
"MESSAGE_SERVICE_MESSAGE": "Отправка сообщений"
},
"tasks": [ // Масив усіх обдзвонів
{
"id": 12345, // ID обдзвону
"name": "Обзвон окна", // Назва обзвону
"autodialerType": "AUTODIAL", // Тип обзвону
"autodialerMode": "FIXED", // Режим обзвону
"statistics": { // Статистика номерів обзвону
"totalCount": 10, // Всього номерів
"doneCount": 6, // Оброблено номерів
"repeatCount": 2 // Повторних дзвінків
"callsDoneCount": // Кількість завершених дзвінків
"statesCount": { // Статистика номерів по статусам
"NEW": 3, // "ID": Кількість
...
}
},
"finishedDate": "2020-04-21", // Дата звершення обдзвону. Присутнє в обдзвонах з станом FINISHED
"threadCount": 1, // Кількість паралельних дзвінків. Присутнє в обдзвонах з режимом FIXED
"delay": 2, // Пауза між кінцем аудіозапису та запуском сценарію в секундах. Присутнє в обдзвонах з типом AUTODIAL
"smartSpeed": 0, // Регулятор швидкості обдзвону. Присутнє в обдзвонах з режимом SMART
"coldBaseStartCallsMultiplier": null, // Якщо не null, змінює кількість одночасних дзвінків в залежності від відсотка додзвону з указаним коефіцієнтом. Присутнє в обдзвонах з режимами FREE та SMART
"callDelay": 0, // Пауза між дзвінками в секундах. Присутнє в обдзвонах з режимом FIXED та враховується лише при кількості потоків - 1
"callDelayOnlyAnswered": true, // Пауза між дзвінками буде спрацьовувати лише після дзвінків на які відповів оператор. Присутнє в обдзвонах з режимом FIXED
"compositeAudio": { // Містить інформацію про комбіноване аудіо, яке буде відтворено при відповіді клієнта на дзвінок. Присутнє в обдзвонах з типом AUTODIAL
"multiAudios": [ // Список частин аудіо
{
"silenceMillis": 500 // Тривалість тиші в мілісекундах
},
{
"id": 46615 // ID аудіозапису проекту
},
{
"synthesisFromDynamicValue": { // Дані для синтезу мови
"dynamicValue": "NO", // Динамічне значення, значення якого буде синтезовно
"settingsId": 117 // ID профіля налаштувань синтезу мови, який буде використовуватись замість вказаного в налаштуваннях обдзвону. Може бути null
}
}
]
},
"moh": 53, // ID аудіо, яке клієнт буде чути під час очікування з'єднання з оператором. Може бути null. Присутнє в обдзвонах з типом GUARANTEED_DIAL
"startDate": "2020-03-15", // Дата початку періода проведення обдзвону (включно)
"endDate": "2020-05-15", // Дата закінчення періода проведення обдзвону (включно)
"timeFrom": [ // Час початку обдзвону за днями тиждня в форматі "HH:mm"
"09:00", // Понеділоу
"11:00", // Вівторок
"11:00", // Середа
"11:00", // Четвер
"11:00", // П'ятниця
null, // Субота, null - обдзвон в цей день не працює
"14:00" // Неділя
],
"timeTo": [ // Час закінчення обдзвону за днями тиждня
"19:00",
"19:00",
"19:00",
"19:00",
"19:00",
null,
"17:00"
],
"voiceSecretaryId": 25 // ID голосового секретаря. Присутнє в обдзвонах з типом VOICE_ROBOT
"groupId": 300, // ID відділу телефонії на який будуть перенаправлятися дзвінки обдзвону. Присутнє в обдзвонах з типом GUARANTEED_DIAL або режимами FREE та SMART
"pseudoGroupOperators": [
"1000", ...
], // Список SIP ліній телефонії на який будуть перенаправлятися дзвінки обдзвону. Якщо вказано параметр groupId, цей параметр буде проігноровано.
"scenarioId": null, // ID вхідного сценарію, який буде активовано, якщо клієнт залишиться на лінії після завершення аудіо. Може бути null. Присутнє в обдзвонах з типом AUTODIAL
"outScenarioId": null, // ID вихідного сценарію, який буде використовуватися для дзвінків обдзвону. Може бути null (55 сек за замовчуванням).
"dialToClientTimeout": null, // Таймаут виклику до абонента. Може бути null.
"pauseOperatorNoAnswerLimit": 5, // Кількість дзвінків поспіль, на які оператор не відповів, після якої він буде встановлений на паузу. Може бути null. Присутнє в обдзвонах з режимами FREE та SMART
"ttsSettingsId": 18, // ID профілю налаштувань синтезу мови. Може бути null. Присутнє в обдзвонах з типами AUTODIAL та GUARANTEED_DIAL
"useTaskAudioIfAudioError": false, // При помилці аудіо: true - “Використовувати аудіо обдзвону”, false - “Завершити дзвінок з помилкою”. Присутнє в обдзвонах з типами AUTODIAL та GUARANTEED_DIAL
"repeatCallsSettings": { // Налаштування повторного дозвону. Може бути null
"earlyStart": true, // Відповідає за ранній повторний дозвін. Якщо false або в обдзвоні понад 1 000 000 номерів — повторний дозвін почне виконуватись лише після завершення необроблених номерів
"highPriority": true, // Відповідає за необхідність додавання повторних дзвінків у пріоритетну чергу
"statesSettings": { // Масив статусів дзвінків, які підлягають повторному дозвону. Може бути порожнім або null, якщо repeatCallAttempts = null
"ANSWER": {
"attempts": 2, // Кількість повторних дозвонів. Доступні значення від 0 до 10. Значення 0 або null вимикають повторний дозвін
"intervalMinutes": 15, // Мінімальний інтервал між повторними дзвінками у хвилинах. Доступні значення від 5 до 1500
"secondsThreshold": 20 // Повторно дзвонити, якщо розмова тривала менше ніж зазначена кількість секунд
},
"NOANSWER": {
"attempts": 30, // Кількість повторних дозвонів. Доступні значення від 0 до 10. Значення 0 або null вимикають повторний дозвін
"intervalMinutes": 60 // Мінімальний інтервал між повторними дзвінками у хвилинах. Доступні значення від 5 до 1500
},
...
}
},
"repeatCallAttempts": 3, // [Застарілий параметр] Кількість повторних продзвонів. Значення 0 та null означають, що повторний продзвон вимкнено
"repeatCallIntervalMinutes": 30, // [Застарілий параметр] Мінімальний інтервал повторних продзвонів в хвилинах
"repeatCallHighPriority": false, // [Застарілий параметр] Значення true вказує на необхідність внесення повторних продзвонів в пріорітетну чергу
"repeatCallStates": [ // [Застарілий параметр] Список статусів дзвінків, які будуть повторно продзванюватись. Якщо пустий або null - повторний продзвон вимкнено
"NOANSWER",
...
],
"repeatCallEarly": true, // [Застарілий параметр] Значення true вказує на необхідність ранніх повторних дзвінків
"callerIdPrefix": null, // Префікс, який буде відображено в SIP клієнті перед номером телефону. Може бути null
"crmMode": "DONT_SEND", // Вказує які дзвінки будуть відправлені в CRM
"clientCalledMode": "NEVER", // Вказує на необхідність ігнорувати номера абонентів від яких надходили дзвінки
"displayName": false, // Вказує на необхідність відображати ім'я, що закріплено за номером, в SIP клієнті
"displayNote": false, // Вказує на необхідність відображати примітку, що закріплено за номеров, в SIP клієнті
"removeAfterFinish": false, // Вказує на необхідність видалення обдзвону після завершення
"markAsBusySeconds": 60, // Кількість секунд на яку SIP лінія відмічається зайнятою після успішного дзвінка. Присутнє в обдзвонах з режимами FREE та SMART
"markAsBusyMinSecondsTalk": 15, // Мінімальная тривалість дзвінка для спрацювання налаштування markAsBusySeconds в секундах. Присутнє в обдзвонах з режимами FREE та SMART
"reservedSipsBusyOnlyForAutodials": true, // Вказує на доступність внутрішніх ліній для дзвінків, що надходять за вхідними сценаріями. Присутнє в обдзвонах з режимами FREE та SMART
"triggerActions": { // Список подій та обробників, що за ними закріплені
"AUTODIAL_NOANSWER": [ // Подія
2, // ID обробника подій
...
],
...
},
"withdrawalStatistics": { // Масив з інформацією про загальні витрати обдзвону
"total": "12.47", // Сума списань за усіма категоріями
"byCategories": { // Масив сумм списань за категоріями
"CALL": "0.60",
...
}
},
"taskStatusInfo": { // Інформація про статус обдзвону
"millis": 1631828328839,
"status": "FINISHED",
"dateForDescription": "2021-09-08",
"durationMillis": 36253180657
}
},
...
],
"statesInfo": [ // Інформація про статуси дзвінків обдзвону
{
"state": "NEW", // ID статусу
"order": 10, // Порядковыий номер
"title": "Не обработано", // Назва статусу
"repeatable": false, // Доступний для автоматичного повторного продзвону (поле repeatCallStates)
"refreshable": false, // Доступний для методу REFRESH
"warning": false // Свідчить про можливі помилки в налаштування обдзвону або телефонії
},
...
]
}Дії “Створити” та “Редагувати” дозволяють конфігурувати новий або існуючий обдзвони відповіно. Частина параметрів є спільною для усіх типів та режимів обдзвонів. Створення та редагування обдзвонів буде розглядатися на прикладі одного запиту, оскільки відмінності незначні:
· id – Унікальний ідентифікатор обдзвону, що редагується, не враховується при створенні
· autodialerType – Тип обдзвону не враховується при редагуванні
· При створенні обдзвону можна опціонально передати перелік номерів для обробки в параметрів numbers та вказати необхідність їх обробки в пріорітетній черзі в параметрі highPriority. Номери в масиві numbers необхідно вказувати в міжнародному форматі, усі сторонні символи будуть попередньо видалені. Для додання номерів в існуючий обдзвон використовуйте дію ADD_NUMBERS.
crmMode визначає інформація про які дзвінки буде передана в CRM. Доступні значення:
· DONT_SEND – Ніякі
· SEND_ANSWERED – Абонент відповів
· SEND_SUCCESS – Відповів абонент та оператор
· ALL_CALLS – Усі
clientCalledMode вказує на необхідність ігнорувати номери абонентів від яких надходили дзвінки. Доступні значення:
· NEVER – Ніколи
· ANSWERED_CALLS – Тільки якщо на дзвінок відповіли
· ALL_CALLS – Завжди
Приклад загальної частини JSON запиту:
{
"action": "ADD", // Або "UPDATE"
"task": {
"id": 0, // ID існуючого обдзвону для "UPDATE". При "ADD" не враховується
"name": "Обзвон", // Має бути унікальним
"autodialerType": "AUTODIAL", // Тип обдзвону. При "UPDATE" не враховується
"autodialerMode": "FIXED", // Режим обдзвону
"startDate": "2020-03-15", // Дата початку періоду проведення обдзвону (включно)
"endDate": "2020-05-15", // Дата закінчення періоду проведення обдзвону (включно)
"timeFrom": [ // Час початку обдзвону за днями тиждня в форматі "HH:mm". Може бути null
"09:00", // Понеділок
"11:00", // Вівторок
"11:00", // Середа
"11:00", // Четвер
"11:00", // П'ятниця
null, // Субота, null - обдзвон в цей день не працює
"14:00" // Воскресенье
],
"timeTo": [ // Час закінчення обдзвону за днями тиждня
"19:00",
"19:00",
"19:00",
"19:00",
"19:00",
null,
"17:00"
],
"outScenarioId": 567, // ID вихідного сценарію, який буде використовуватися для дзвінків обдзвону. Може бути null.
"dialToClientTimeout": null, // Таймаут виклику до абонента. Доступні значення від 10 до 55. Може бути null (55 сек за замовчуванням).
"triggerActions": { // Список подій та обробників, що за ними закріплені. До одної події можна закріпити максимум 5 обробників
"AUTODIAL_NOANSWER": [ // Подія
2, // ID обробника подій
...
],
...
},
"callerIdPrefix": "pref", // Префікс, що буде відображено в SIP клієнті перед номером телефону. Може бути null
"crmMode": "DONT_SEND", // Вказує які дзвінки будуть відправлені в CRM
"clientCalledMode": "NEVER", // Вказує на необхідність ігнорувати номера абонентів від яких надходили дзвінки
"repeatCallsSettings": { // Налаштування повторного дозвону. Може бути null
"earlyStart": true, // Відповідає за ранній повторний дозвін. Якщо false або в обдзвоні понад 1 000 000 номерів — повторний дозвін почне виконуватись лише після завершення необроблених номерів
"highPriority": true, // Відповідає за необхідність додавання повторних дзвінків у пріоритетну чергу
"statesSettings": { // Масив статусів дзвінків, які підлягають повторному дозвону
"ANSWER": {
"attempts": 2, // Кількість повторних дозвонів. Доступні значення від 0 до 10. Значення 0 або null вимикають повторний дозвін
"intervalMinutes": 15, // Мінімальний інтервал між повторними дзвінками у хвилинах. Доступні значення від 5 до 1500
"secondsThreshold": 20 // Повторно дзвонити, якщо розмова тривала менше ніж зазначена кількість секунд
},
"NOANSWER": {
"attempts": 30, // Кількість повторних дозвонів. Доступні значення від 0 до 10. Значення 0 або null вимикають повторний дозвін
"intervalMinutes": 60 // Мінімальний інтервал між повторними дзвінками у хвилинах. Доступні значення від 5 до 1500
},
...
}
}
"displayName": false, // Вказує на необхідність відображати ім'я, що закріплено за номером, в SIP клієнті
"displayNote": false, // Вказує на необхідність відображати примітку, що закріплено за номеров, в SIP клієнті
"removeAfterFinish": false, // Вказує на необхідність видалення обдзвону після завершення
"numbers": [ // Масив номерів для обдзвону. При "UPDATE" не враховується. Може бути null
"+380971111111",
...
],
"highPriority": true // Вказує на необхідність додання номерів з високим пріорітетом. Такі номери обдзвонюються в першу чергу. При "UPDATE" не враховуються
...
}
}
Тип обдзвону, що створюється або редагується, впливає на перелік обов’язкових та допустимих параметрів, які будуть розглядатися окремо.
Для обдзвонів з типом AUTODIAL обов’язково наявність одного з параметрів compositeAudio та scenarioId. Параметр compositeAudio має містити об’єкт multiAudios який є масивом, що вказує аудіо. Кожен елемент масива multiAudios є посиланням на аудіозапис в проекті (id), тишою (silenceMillis) або синтезом аудіо (synthesisFromDynamicValue). Синтез аудіо має містити параметр dynamicValue, значення якого відповідая одному з ключів відповідного словника. Порядок розташування аудіо в масиві відповідає порядку відтворення. Для коректного синтезу аудіо обов’язкова наявність одного в параметрів settingsId частини синтезу та ttsSettingsId обдзвону.
Приклад специфічної для типу обдзвону AUTODIAL частини JSON запиту:
...
"scenarioId": 70, // ID вхідного сценарію, який буде активовано, якщо клієнт залишиться на лінії після завершення аудіо
"compositeAudio": { // Містить інформацію про комбіноване аудіо, яке буде відтворено при відповіді клієнта на дзвінок
"multiAudios": [ // Список частин аудіо
{
"silenceMillis": 500 // Тривалість тиші в мілісекундах
},
{
"id": 46615 // ID аудіозапису проекту
},
{
"synthesisFromDynamicValue": { // ані для синтезу мови
"dynamicValue": "NO", // Динамічне значення, значення якого буде синтезовно
"settingsId": 117 // ID профіля налаштувань синтезу мови, який буде використовуватись замість вказаного в налаштуваннях обдзвону. Може бути null
}
}
]
},
"ttsSettingsId": 18, // ID профілю налаштувань синтезу мови. Може бути null
"useTaskAudioIfAudioError": true, // При помилці аудіо: true - “Використовувати аудіо обдзвону”, false - “Завершити дзвінок з помилкою”
"delay": 2, // Пауза між кінцем аудіозапису та запуском сценарію в секундах. Може бути 0
...Для обдзвонів з типом GUARANTEED_DIAL необхідно обов’язково вказати групу внутрішніх ліній в параметрі groupId чи pseudoGroupOperators .
Приклад специфічної для типу обдзвону GUARANTEED_DIAL частини JSON запиту:
...
"moh": 255, // ID аудіо, яке клієнт буде чути під час очікування з'єднання з оператором. Може бути null
"groupId": 300, // // ID відділу телефонії на який будуть перенаправлятися дзвінки обдзвону
"pseudoGroupOperators": ["1000", ...], // Список SIP ліній телефонії на який будуть перенаправлятися дзвінки обдзвону. Якщо вказано параметр groupId, цей параметр буде проігноровано.
"ttsSettingsId": 18, // ID профілю налаштувань синтезу мови. Може бути null
"useTaskAudioIfAudioError": true, // При помилці аудіо: true - “Використовувати аудіо обдзвону”, false - “Завершити дзвінок з помилкою”
...Для обдзвонів з типом VOICE_ROBOT необхідно обов’язково вказати голосовий секретар в параметрі voiceSecretaryId.
Приклад специфічної для типу обдзвону VOICE_ROBOT частини JSON запиту:
...
"voiceSecretaryId": 25 // ID голосового секретаря
...
Режим обдзвону, що створюється або редагується, впливає на перелік обов’язкових та допустимих параметрів, які будуть розглянуті окремо.
Для обдзвонів з режимом FIXED необхідно обов’язково вказати кількість паралельниз дзвінків (потоків) в параметрі threadCount.
Приклад специфічної для режиму обдзвону FIXED частини JSON запиту:
...
"threadCount": 1, // Кількість паралельних дзвінків
"callDelay": 30, // Пауза між дзвінками в секундах. Враховується тільки при кількості паралельних дзвінків - 1
"callDelayOnlyAnswered": true, // Пауза між дзвінками буде відпрацьовувати тільки після дзвінків, на які відповів оператор
...Для обдзвонів з режимом FREE необхідно обов’язково вказати групу внутрішніх ліній в параметрі groupId. Окрім цього доступні додаткові параметри:
· coldBaseStartCallsMultiplier – Змінює кількість одночасних дзвінків в залежності від відсотка додзвону з вказаним коефіцієнтом. Доступні значення від 0.1 до 1.5
· pauseOperatorNoAnswerLimit – Кількість дзвінків поспіль, на які не відповів оператор, після якої він буде встановлений на паузу
· markAsBusySeconds – Кількість секунд на яку SIP лінія відмічається зайнятою після успішного дзвінка. Доступні значення від 0 до 3600
· markAsBusyMinSecondsTalk – Мінімальна тривалість дзвінка для спрацьовування налаштування markAsBusySeconds в секундах. Доступні значення від 0 до 3600
· reservedSipsBusyOnlyForAutodials – Визначає чи будуть внутрішні лінії з закріпленою групи обдзвону доступні для дзвінків, що надходять за вхідними сценаріями
Приклад специфічної для режиму обдзвону FREE частини JSON запиту:
...
"groupId": 300, // ID відділу телефонії на який будуть перенаправлятися дзвінки обдзвону
"pseudoGroupOperators": ["1000", ...], // Список SIP ліній телефонії на який будуть перенаправлятися дзвінки обдзвону. Якщо вказано параметр groupId, цей параметр буде проігноровано.
"coldBaseStartCallsMultiplier": null, // Змінює кількість одночасних дзвінків в залежності від відсотка додзвону з вказаним коефіцієнтом
"pauseOperatorNoAnswerLimit": 5, // Кількість дзвінків поспіль, на які не відповів оператор, після якої він буде встановлений на паузу
"markAsBusySeconds":60, // Кількість секунд на яку SIP лінія відмічається зайнятою після успішного дзвінка
"markAsBusyMinSecondsTalk":15, // Мінімальна тривалість дзвінка для спрацьовування налаштування markAsBusySeconds в секундах
"reservedSipsBusyOnlyForAutodials": true, // Визначає чи будуть внутрішні лінії з закріпленою групи обдзвону доступні для дзвінків, що надходять за вхідними сценаріями
...Для обдзвонів з режимом SMART необхідно обов’язково вказати групу внутрішніх ліній в параметрі groupId. Окрім цього доступні додаткові параметри:
· coldBaseStartCallsMultiplier – Змінює кількість одночасних дзвінків в залежності від відсотка додзвону з вказаним коефіцієнтом. Доступні значення від 0.1 до 1.5
· pauseOperatorNoAnswerLimit – Кількість дзвінків поспіль, на які не відповів оператор, після якої він буде встановлений на паузу
· markAsBusySeconds – Кількість секунд на яку SIP лінія відмічається зайнятою після успішного дзвінка. Доступні значення від 0 до 3600
· markAsBusyMinSecondsTalk – Мінімальна тривалість дзвінка для спрацьовування налаштування markAsBusySeconds в секундах. Доступні значення від 0 до 3600
· reservedSipsBusyOnlyForAutodials – Визначає чи будуть внутрішні лінії з закріпленою групи обдзвону доступні для дзвінків, що надходять за вхідними сценаріями
· smartSpeed – Допустимі значення від -10 до 10 пропорційно впливають на швидкість обдзвону
Приклад специфічної для режиму обдзвону SMART частини JSON запиту:
...
"groupId": 300, // ID відділу телефонії на який будуть перенаправлятися дзвінки обдзвону
"pseudoGroupOperators": ["1000", ...], // Список SIP ліній телефонії на який будуть перенаправлятися дзвінки обдзвону. Якщо вказано параметр groupId, цей параметр буде проігноровано.
"coldBaseStartCallsMultiplier": null, // Змінює кількість одночасних дзвінків в залежності від відсотка додзвону з вказаним коефіцієнтом
"pauseOperatorNoAnswerLimit": 5, // Кількість дзвінків поспіль, на які не відповів оператор, після якої він буде встановлений на паузу
"markAsBusySeconds":60, // Кількість секунд на яку SIP лінія відмічається зайнятою після успішного дзвінка
"markAsBusyMinSecondsTalk":15, // Мінімальна тривалість дзвінка для спрацьовування налаштування markAsBusySeconds в секундах
"reservedSipsBusyOnlyForAutodials": true, // Указывает на доступность внутренних линий для звонков, поступающих по входящим сценариям
"smartSpeed": 5, // Допустимі значення від -10 до 10 пропорційно впливають на швидкість обдзвону
...Приклад відповіді у разі успіху:
{"status": "Success", "data": 12345}При виконанні дії ADD в полі data передаеться id створеного обдзвону.
Можливі помилки:
| task is null | Поле task не вказано у запиті |
| Please confirm phone number | Непідтверджені проекти не можуть створювати обдзвони |
| Billing not allow | На даному тарифі обдзвон недоступний, або тариф не сплачено |
| Task not found | Обдзвон не знайдено за id при UPDATE |
| groupId and pseudoGroupOperators is nul | Тип обдзвону GUARANTEED_DIAL або режим FREE чи SMART, але поле groupId чи pseudoGroupOperators не вказано у запиті |
| Operator not found: … | В поле pseudoGroupOperators вказані невалідні чи неіснуючі SIP лінії |
| Group not found | Тип обдзвону GUARANTEED_DIAL або режим FREE чи SMART, але група операторів з вказаним id не знайдена |
| Wrong group type | Тип обдзвону GUARANTEED_DIAL або режим FREE чи SMART, але вказана група не є групою внутрішніх ліній |
| Moh not found | Тип обдзвону GUARANTEED_DIAL, але аудіо мелодії очікування не знайдено за вказаним id |
| Wrong audio type: moh | Тип обдзвону GUARANTEED_DIAL, але за вказаним id знайдено аудіон іншох категорії |
| In scenario not found | Тип обдзвону AUTODIAL, але вхідний сценарій за вказаним id не знайдено |
| Not found in scenario and audio | Тип обдзвону AUTODIAL, але ні аудіо, ні вхідний сценарій не вказані у запиті |
| voiceSecretaryId is null | Тип обдзвону VOICE_ROBOT, але голосовий секретар не вказаний у запиті |
| Voice secretary not found | Тип обдзвону VOICE_ROBOT, але голосовий секретар за вказаним id не знайдено |
| compositeAudio | Помилка при вказанні комбінованого аудіо в обдзвонахи типу AUTODIAL. Можливі причини: · too many audio parts – в комбінованому аудіо вказано більше 20 частин · audio not found – аудіо не знайден за вказаним id · audio type is not AUTODIAL – за вказаним id знайдено аудіо іншої категорії · synthesis dynamicValue is null – в елементів синтезу мови не вказано параметр dynamicValue · speech synthesis settings not found – за вказаним settingsId не знайдено профіль налаштувань синтезу аудіо · invalid silenceMillis – значення silenceMillis не у діапазоні від 1 до 10 000 |
| Wrong name | Назва не може бути порожньою або довшою за 45 символів |
| Name already present | Обдзвон з такою назвою вже існує в проекті |
| Not found out scenario | За вказаним id не знайдено вихідний сценарії |
| Wrong dates | Дати обдзвону не вказані, або дата старту обдзвону перевищує дату закінчення |
| Wrong time ranges | В масиві timeFrom або timeTo не 7 елементів, в будь якій парі timeFrom пізніше за timeTo або усі елементи null |
| Prefix is too long | Префікс не повинен перевищувати 20 символів |
| Handler is busy, try again later | Один проект одночасно видаляти або додавати номери лише в один обдзвон. В цей момент в одному з обдзвонів проекту відбувається видалення або додавання номерів. Повторіть спробу пізніше, коли попередня операція завершиться. Може виникнути лише якщо вказано параметр numbers при дії ADD |
| Wrong numbers | В масиві numbers присутні некоректні номери. В полі data буде вказано масив елементів numbers, що не пройшли валідацію |
| Repeat call states is empty | repeatCallAttempts вказує на необхідність автоматичного продзвону номерів, алео repeatCallStates пустий або null |
| Repeat call state is not allowed | В масиві repeatCallStates було передано неприпустимий callState |
| Not found text to speech settings | За вказаним id не знайдено профіль налаштувань синтезу аудіо |
| Wrong trigger action event | В масиві triggerActions передано неприпустимий triggerActionEvent або null |
| triggerActionIds is null | В масиві triggerActions у одного з triggerActionEvent неприпустиме значення або null |
| Too many trigger actions | В масиві triggerActions для одного p triggerActionEvent передано масив з більш ніж 5 обробниками |
| Trigger action not found | За одним з вказаних в triggerActions id не знайдено обробник |
| Few trigger actions with same type | В масиві triggerActions для одного з triggerActionEvent вказано 2 обробника подій з однаковим типом дії |
| Not compatible trigger action | В масиві triggerActions для одного з triggerActionEvent вказано обробник подій, несумісний з цим triggerActionEvent |
| crmMode is null | Поле crmMode не вказано в запиті |
| clientCalledMode is null | Поле clientCalledMode не вказано в запиті |
| Tasks limit exceeded | Перевищено максимальну кількість обдзвонів в проекті |
Приклад JSON запиту:
{
"id": 1307, // ID цільового обдзвону
"action": "REMOVE"
}Відповідь у разі успіху:
{"status": "Success", "message": "Removed"}Можливі помилки:
| Task not found | Обдзвон не знайдено за вказаним id |
| Handler is busy, try again later | Один проект одночасно видаляти або додавати номери лише в один обдзвон. В цей момент в одному з обдзвонів проекту відбувається видалення або додавання номерів. Повторіть спробу пізніше, коли попередня операція завершиться |
Дія “Продзвонити повторно” дозволяє перезапустити обробку номерів у вказаних статусах. Перелік статусів доступних для використання в цій дії наведено у відповідному словнику.
Приклад JSON запиту:
{
"id": 1307, // ID цільового обдзвону
"action": "REFRESH",
"callStates": [ // Масив статусів, номери в яких будуть продзвонені повторно
"NOANSWER",
...
]
}Відповідь у разі успіху:
{"status": "Success"}Успіше виконання цієї дії змінить статус обраних номерів на NEW.
Можливі помилки:
| Task not found | Обдзвон не знайдено за вказаним id |
| states is null or empty | Масив callStates пустий або null |
| state is not allowed | В масиві callStates Вказано недопустимий для REFRESH статус |
| Try again later | Попереднє виконання дії для вказаного обдзвону відбулося менше хвилини тому |
| Numbers not found by states | Не знайдено жодного номеру з вказаними статусами |
Дія”Скасувати обдзвон” дозволяє зупинити обдзвон, що знаходиться в статусі WAITING, IN_PROGRESS або PAUSED. Застосування цієї дії до обдзвонів у статусах FINISHED та CANCELED спричинить помилку. Застосування до NEW – не призведе до будь-яких змін.
Приклад JSON запиту:
{
"id": 1307, // ID цільового обдзвону
"action": "CANCEL"
}Відповідь у разі успіху:
{"status": "Success", "message": "Cancelled"}Успіше виконання цієї дії змінить статус обраного обдзвону на CANCELED (доки в обдзвоні будуть незавершені дзвінки), згодом статус зміниться на FINISHED
Можливі помилки:
| Task not found | Обдзвон не знайдено за вказаним id |
| Task is finished | Неможливо скасувати обдзвон у статусі FINISHED |
| Task is canceled | Неможливо скасувати обдзвон у статусі CANCELED |
Дія “Поставити на паузу” дозволяє призупини обдзвон, що знаходиться в статусі WAITING або IN_PROGRESS. Застосування цієї дії до обдзвонів у статусах FINISHED та CANCELED спричинить помилку. Застосування до NEW або PAUSED – не призведе до будь-яких змін.
Приклад JSON запиту:
{
"id": 1307, // ID цільового обдзвону
"action": "PAUSE"
}Відповідь у разі успіху:
{"status": "Success"}Успіше виконання цієї дії змінить статус обраного обдзвону з WAITING або IN_PROGRESS на PAUSED.
Можливі помилки:
| Task not found | Обдзвон не знайдено за вказаним id |
| Task is finished | Неможливо скасувати обдзвон у статусі FINISHED |
| Task is canceled | Неможливо скасувати обдзвон у статусі CANCELED |
Дія “Зняти з паузи” дозволяє продовжити обдзвон, що знаходиться у сатусі PAUSED. Застосування цієї дії до обдзвонів у статусах FINISHED та CANCELED спричинить помилку. Застосування до NEW, WAITING або IN_PROGRESS – не призведе до будь-яких змін.
Приклад JSON запиту:
{
"id": 1307, // ID цільового обдзвону
"action": "UNPAUSE"
}Відповідь у разі успіху:
{"status": "Success"}Успіше виконання цієї дії змінить статус обраного обдзвону з PAUSED на WAITING або IN_PROGRESS.
Можливі помилки:
| Task not found | Обдзвон не знайдено за вказаним id |
| Task is finished | Неможливо скасувати обдзвон у статусі FINISHED |
| Task is canceled | Неможливо скасувати обдзвон у статусі CANCELED |
Дія “Додати номери” дозволяє додати номери в обдзвон двома способами: вказавши лише номери в масиві numbers або номери з додатковою інформацією в масиві numbersWithData. У випадку коли вказано обидва, будуть додані номери з обох масивів. За один запит можна додати до 100 000 номерів, але не більше 1 000 000 номерів на один обдзвон.
В запиті має бути присутній один з параметрів numbers та numbersWithData. Номери в масиві numbers або параметрі phone необхідно вказувати в міжнародному форматі, усі стороні символи будуть попередньо видалені. Масив numbersWithData дозволяє передавати номери у вигляді елементів з додатковими параметрами, єдиним обов’язковим параметром є phone.
Параметр audios є масивом, що використовується для вказання аудіо, яке буде відтворено замість основного аудіо обдзвону. Кожен елемент масива audios є посиланням на аудіозапис в проекті (id) або синтез аудіо (tts). В елементі має бути присутній один з параметрів id та tts, якщо вказано обидва буде використано id. Порядок розміщення аудіо в масиві відповідає порядку відтворення. Для типу обдзвону AUTODIAL максимум елементів – 5 (з яких 2 синтеза аудіо), для GUARANTEED_DIAL – 1, для VOICE_ROBOT параметр ігнорується.
Для типу обдзвону AUTODIAL id має вказувати на аудіозапис з розділу “Автообдзвони”, для GUARANTEED_DIAL – “Мелодії очікування”. В елементі tts має бути присутній один з параметрів text та ssml, якщо вказано обидва буде використано ssml, максимальна кількість символів – 2500. Параметр ssml має починатись та закінчуватись тегом speak. Процес озвучування відбувається перед стартом дзвінка. Синтезовані аудіо зберігаються до 7 днів по завершеню обдзвону, не більше 3 місяців з моменту створення та в списку аудіозаписів проекту не відображаються. У випадку коли синтезований текст та профіль налаштувань співпадаються – використовується попередньо синтезоване аудіо.
Пример JSON запроса:
{
"id": 1307, // ID цільового обдзвону
"action": "ADD_NUMBERS",
"refreshDuplicates": true, // Вказує на необхідність повторно обробити номери, що вже присутні в обдзвоні
"highPriority": true, // Вказує на необхідність обробляти номери, що додаються, в першу чергу
"numbers": [ // Масив номерів, які необхідно додати
"380970000001",
...
],
"numbersWithData": [ // Масив номерів з додатковою інформацією, які необхідно додати
{
"phone": "380670000002",
"name": "sample_name", // Ім'я. Враховуються перші 100 символів. Може бути null
"note": "sample_note", // Примітка. Враховуються перші 500 символів. Може бути null
"link": "https://...", // Дані для Web Dialer. Враховуються перші 500 символів. Може бути null
"params": { // Параметри які будуть закріплені за номером в обдзвоні. Може бути null
"1": "sample_value", // Номер параметра (1-10): Значення параметра. Враховуються перші 500 символів. Може бути null
...
},
"audios": [ // Масив аудіозаписів та синтезу аудіо, які будуть відтворені при дзвінку на номер замість основного аудіо обдзвону. Може бути null
{
"id": 4953, // ID цільового аудіозапису
},
{
"tts": { // Дані для синтезу аудіо
"text": "sample_text", // Текст який буде озвучено
"ssml": "<speak>sample_text</speak>", // Текст яки буде озвучено в форматі ssml
"settingsId": 18 // ID профіля налаштування синтезу аудіо, який буде використано замість вказаного в налаштуваннях обдзвону. Може бути null
}
},
...
]
},
...
]
}Приклад відповіді у разі успіху:
{"status": "Success", "message": "Numbers added"}Успішне додання номерів в завершений обдзвон (FINISHED) змінить статус на WAITING або IN_PROGRESS.
Можливі помилки:
| Task not found | Обдзвон не знайдено за вканим id |
| Numbers is null or empty | numbers та numbersWithData пусті або null |
| Too many numbers | Перевищено віміт в 100 000 номерів за одну дію |
| Numbers limit exceeded | Перевищено віміт в 1 000 000 номерів в обзвоні |
| Handler is busy, try again later | Один проект одночасно видаляти або додавати номери лише в один обдзвон. В цей момент в одному з обдзвонів проекту відбувається видалення або додавання номерів. Повторіть спробу пізніше, коли попередня операція завершиться |
| Wrong numbers | В масиві numbers присутні некоректні номери. В полі data буде вказано масив елементів numbers, які не пройшли валідацію |
| Numbers not added | Не було збережено ні одного номера |
| Wrong audios | В масиві numbersWithData присутні номери з некоректним audios. В полі data буде вказано масив номерів з відповідною помилкою аудіо. Можливі причини помилок: · Too many audios – занадто багато елементів · Too many text to speech – занадто багато елементів з синтезом аудіо · Audio is null – присутні елементи з значенням null · Audio not found by id – присутні id за якими не знайдено аудіозапис · Wrong type of audio – присутні id які вказують на аудіозаписи недопустимого розділу · Text to speech ‘text’ and ‘ssml’ is null – присутні tts в яких обидва text та ssml пусті · Text to speech ‘text’ not valid – присутні tts в яких text перевищує 2500 символів · Text to speech ‘ssml’ not valid – присутні tts в яких ssml перевищує 2500 символів або не починається та закінчується тегом speak · Text to speech settings not found by id – присутні tts в яких за вказаним settingsId не знайдено профіль налаштувань синтезу аудіо · Audio is empty – присутні елементи в яких обидва tts та id мають значення null |
| Not found in scenario and audio | В автообдзвоні не вказано ні аудіо, ні вхідний сценарій |
| Voice secretary not found | В обдзвоні голосовим роботом не вказаний голосовий робот |
| Group not found | В предиктивному обдзвоні не вказана група операторів |
| Too many params | В params передано білше 10 параметрів |
| Wrong parameter key | В params передано ключ, який не є числом з діапазону від 1 до 10 |
| Billing not allow | Тариф проекту неактивний або недостатній баланс |
Приклад JSON запиту:
{
"id": 1307, // ID цільового обдзвону
"action": "GET_NUMBER",
"number": "380971234567" // Номер телефону
}Приклад відповіді у разі успіху:
{
"taskId": 18700, // ID обдзвону
"phone": "380441234567", // Номер телефону
"state": "ANSWER", // Статус останнього дзвінка обдзвону за цим номером
"stateDateTime": "2020-09-10 05:47:15" // Дата завершення останнього дзвінка обдзвону за цим номером
"calledCount": 0, // Кількість дзвінків на цей номер з останнього запуску обдзвону
"realCalledCount": 0, // Кількість дзвінків на цей номер в обдзвоні
"highPriority": false, // Вказує чи знаходиться номер в пріорітетній черзі
"name": null, // Ім'я закріплене за номером в обдзвоні
"note": "9049", // Примітка закріплена за номером в обдзвоні
"link": "https://...", // Дані для Web Dialer закріплені за номером в обдзвоні
"params": { // Параметри закріплені за номером в обдзвоні
"1": "sample_value", // Номер параметра (1-10): Значення параметра
...
},
"audios": [ // Аудіо закріплені за номером в обдзвоні
{
"id": 46644 // ID аудіозапису
},
{
"tts": { // Параметри синтезу мови
"text": "sample_text",
"settingsId": 107
}
}
]
}Можливі помилки:
| Task not found | Обдзвон не знайдено за вказаним id |
| Wrong phone number | Номер телефону некоректний |
| Call not found | Номер не знайдено в обдзвоні |
Для отримання інформації про всі номери обдзвону необхідно вказати id цільового обдзвону. Кількість записів, які будуть отримані при цьому не перевищу значення параметра limit. За замовчанням limit дорівнює 1000, максимальне значення – 5000. Для отримання наступної групи записів, необхідно в параметрі offest вказати зсів відносно початку списку. Окірм того, записи можна попередньо відфільтрувати за цільовими статусами номерів, перелік яких наведено в відповідному словнику.
Приклад JSON запиту:
{
"id": 1307, // ID цільового обдзвону
"action": "GET_NUMBERS",
"limit": 2000, // Максимальна кількість номері, які будут отримані у відповіді
"offset": 4000, // Зсів записів, що будуть отримані, відносно початку списку
"callStates": [ // Фільтр за callState. Може бути null або пустий
"NOANSWER",
...
]
}Приклад відповіді у разі успіху:
[ // Масив номерів обдзвону з додатковою інформацією
{
"taskId": 18700, // ID обдзвону
"phone": "380441234567", // Номер телефону
"state": "ANSWER", // Статус останнього дзвінка обдзвону за цим номером
"stateDateTime": "2020-09-10 05:47:15" // Дата завершення останнього дзвінка обдзвону за цим номером
"calledCount": 0, // Кількість дзвінків на цей номер з останнього запуску обдзвону
"realCalledCount": 0, // Кількість дзвінків на цей номер в обдзвоні
"highPriority": false, // Вказує чи знаходиться номер в пріорітетній черзі
"name": null, // Ім'я закріплене за номером в обдзвоні
"note": "9049", // Примітка закріплена за номером в обдзвоні
"link": "https://...", // Дані для Web Dialer закріплені за номером в обдзвоні
"params": { // Параметри закріплені за номером в обдзвоні
"1": "sample_value", // Номер параметра (1-10): Значення параметра
...
},
"audios": [ // Аудіо закріплені за номером в обдзвоні
{
"id": 46644 // ID аудіозапису
},
{
"tts": { // Параметри синтезу мови
"text": "sample_text",
"settingsId": 107
}
}
]
},
...
]Можливі помилки:
| Task not found | Обдзвон не знайдено за вказаним id |
| Limit range is 1-5000 | Значення limit не в діапазоні від 1 до 5000 |
| Offset cannot be negative | Значення offset має бути додатнім |
Для отримання інформації про дзвінки обдзвону необхідно, окрім дії, вказати id цільового обдзвону та параметр callHistoryRequest. callHistoryRequest не може бути null, але може бути пустим. Записи повертаються в порядку спадання id дзвінків.
Кількість записів, що будуть повернені при цьому не перевершу значення параметру limit. За замовчаннням limit становить 50, Максимальне значення – 1000. Для отримання наступної групи записів необхідно скористатися одним з двох способів:
· В параметрі offest вказати зсув відносно початку списку;
· В параметрі maxId вказати максимальний (включно) id запису, який буде повернено.
Записи дзвінків можна попередньо відфільтрувати параметрами:
· dateFrom – мінімальна дата та час дзвінка (включно) в форматі “yyyy-MM-dd HH:mm:ss”;
· dateTo – максимальна дата та час дзвінка (невключно) в форматі “yyyy-MM-dd HH:mm:ss”.
Окрім того, записи можна попередньо відфільтрувати в параметрі filter за:
· states – масив статусів дзвінків обдзвонів. Переліка наведено у відповідному словнику;
· phone – частина номеру абонента. Усі зайві символи будуть попередньо видалені;
· operatorNumber – точний номер оператора. Усі зайві символи будуть попередньо видалені;
· name – частина імені, закріпленого за номеров в обдзвоні на момент дзвінка;
· note – частина примітки, закріпленої за номером в обдзвоні на момент дзвінка;
· link – частина даних для Web Dialer, закріплених за номером в обдзвоні на момент дзвінка;
· param – частина будь-якого з параметрів, закріплених за номером в обдзвоні на момент дзвінка;
· voiceSecretaryIds – масив id голосових секретарів, які були використані в дзвінках;
· voiceSecretaryEndReasons – масив причин завершення голосового секретаря, який був використаний в дзвінку. Перелік наведено у відповідному словнику;
· voiceSecretaryEndNodeTypes – масив типів кінцевого вузла голосового секретаря, який був використаний в дзвінку. Перелік наведено у відповідному словнику.
Приклад JSON запиту:
{
"action": "GET_CALLS_HISTORY",
"id": 300, // Обов'язковий параметр. Ідентифікатор цільового обдзвона
"callHistoryRequest": { // Обов'язковий параметр. Усі внутрішні параметри можуть бути null
"dateFrom": "2023-10-24 00:00:00", // Мінімальна дата та час дзвінка
"dateTo": "2023-10-25 00:00:00", // Максимальна дата та час дзвінка
"offset": 0, // Зсув відносно початку виборки
"limit": 50, // Максимальна кількість дзвінків, які будуть повернуті у відповіді
"maxId": 150, // Максимальний ідентифікатор дзвінка
"filter": { // Масив додаткових фільтрів. Усі внутрішні параметри можуть бути null
"states": [ // Масив цільових статусів дзвінка
"ANSWER",
...
],
"phone": "38097", // Частина номерів
"operatorNumber": "2045", // Номер лінії цільового оператора
"name": "part of name", // Частина імені
"note": "part of note", // Частина примітки
"link": "part of data for webdialer ", // Частина даних для WebDialer
"param": "part of param", // Частина одного з параметрів
"voiceSecretaryIds": [ // Масив ідентифікаторів цільових голосових секретарів
"118",
...
],
"voiceSecretaryEndNodeTypes": [ // Масив цільових типів кінцевих вузлів узлов голосового секретаря
"END_SUCCESS",
...
],
"voiceSecretaryEndReasons": [ // Масив цільових причин завершення голосового секретаря
"NORMAL",
...
]
}
}
}
Приклад відповіді у разі успіху:
{
"count": 140, // Кількість відповідних результатів
"offset": 0, // Використаний зсув
"limit": 50, // Використаний ліміт
"items": [ // Масив дзвінків обдзвонів
{
"id": 158, // Ідентифікатор дзвінка
"phone": "380681234567", // Номер телефона
"state": "ANSWER", // Статус завершення дзвінка
"callEndTime": "2023-10-24 16:15:43", // Дата та час завершення дзвінка
"operatorNumber": "2045", // Номер оператора. Може бути null
"userId": 15, // Ідентифікатор оператора. Може бути null
"calledCount": 1, // Кількість додзвонів
"realCalledCount": 2, // Всього додзвонів
"seconds": 3, // Тарифікований час дзвінка. Може бути null
"secondsForClientAnswered": 16, // Час очікування до відповіді клієнта на дзвінок. Може бути null
"secondsDialToClient": 16, // Час набору номера до того, як клієнт відповість або відхилить дзвінок. Може бути null, якщо дзвінок був відхилений системою (у тому сенсі, що дзвінок не був розпочатий)
"secondsClientWaitOperator": 5, // Час очікування оператора. Може бути null
"secondsOperatorWaitCall": 15, // Час очікування звонка. Може бути null
"secondsForOperatorAnswered": 2, // Час до відповіді оператора. Може бути null
"secondsTalk": 10, // Тривалість розмови. Може бути null
"rid": 1052434886, // Випадковий ідентифікатор дзвінка
"name": "some name", // Ім'я до номера обдзвону на момент дзвінка. Може бути null
"note": "some note", // Примітка до номера обдзвону на момент дзвінка. Може бути null
"link": "some data for web dialer", // Дані для WebDialer до номера обдзвону на момент дзвінка. Може бути null
"params": { // Масив параметрів до номера обдзвону на момент дзвінка. Може бути null
"1": "param 1 value", // "Номер": "Значення"
...
},
"withdrawTotal": "1.90", // Сумарна вартість дзвінка. Може бути null
"withdrawByCategories": { // Масив списань за дзвінок за категоріями. Може бути null
"SPEECH_RECOGNITION": "0.10", // Розпізнавання мови
"TEXT_TO_SPEECH": "0.01", // Синтез мови
"CALL": "0.50", // Здійснення дзвінка
"VOICE_SECRETARY": "0.02", // Голосовий секретар
"AUTODIALER": "0.02", // Додаткова вартість обдзвону
"ANSWERING_MACHINE_DETECTION": "0.25" // Розпізнавання автовідповідача
"MESSAGE_SERVICE_MESSAGE": "1" // Відправка повідомлень
},
"executedTriggerActionIds": [ // Масив ідентифікаторів виконаних за дзвінком обробників подій. Може бути null
11,
...
],
"sendFirstMessageToClientSuccess": true, // Ознака успішності відправки першого повідомлення за дзвінком
"secretary": { // Масив даних про проходження голосового секретаря. Може бути null
"id": 118, // Ідентифікатор
"duration": 3, // Тривалість
"endNodeType": "INTERMEDIATE", // Тип кінцевого вузла
"endReason": "USER_REJECT", // Причина завершення
"endNodeId": 1, // Ідентифікатор кінцевого вузла
"endNodeTitle": "Action #1", // Назва кінцевого вузла
"endVoiceSecretaryId": 118, // Ідентифікатор секретаря завершення (може відрізнятися, якщо завершення відбулося у фоновому)
"steps": [ // Масив інформації про кроки секретаря
{
"nodeId": 1, // Ідентифікатор вузла
"actionTitle": "Action #1", // Назва вузла
"recognizedText": "Some text", // розпізнаний текст. Може бути null
"recognizedDates": [ // Масив розпізнаних дат. Може бути null
"2023-10-24",
...
],
"alternativeAudioIndex": "1", // Індекс альтернативного аудіо, яке прослухав абонент. Може бути null
"jumpToNode": false, // Ознака переходу на вузол дією "Перейти на інший вузол"
"startBackgroundSecretaryId": null, // Ідентифікатор секретаря на який було виконано перехід. Може бути null
"endBackgroundSecretaryId": null // Ідентифікатор фонового секретаря з якого вийшли на вузел. Може бути null
},
...
]
}
},
...
]
}Можливі помилки:
| Task not found | Обзвон не найден по указанному id или параметр id не указан |
| Limit range is 1-5000 | Значення limit не в діапазоні від 1 до 5000 |
| Offset is less than 0 | Значення offset має бути додатнім |
| callHistoryRequest is null | Не вказано параметр callHistoryRequest |
| Invalid date from | Некоректна дата та час “від” в фільтрах |
| Invalid date to | Некоректна дата та час “до” в фільтрах |
Дія “Видалити номери” дозволяє видалити номери з обдзвону двома способами:вказавши номери або статуси номерів на видалення. Перелік необхідних номерів вказується в параметрі запиту numbers та може містити максимум 10 000 номерів. Номери необхідно вказувати в міжнародному форматі, усі сторонні сиволи будуть попередньо видалені. Статуси номерів вказуються в параметрі запиту callStates та наведені у відповідному словнику. В запиті має бути присутній один з параметрів callStates та numbers, у випадку коли вказано обидва – буде використано numbers.
Приклад JSON запиту:
{
"action": "REMOVE_CALLS",
"id": 1307, // ID цільового обдзвону
"callStates": [ // Масив статусів номери в яких будуть видалені
"NOANSWER",
...
],
"numbers": [ // Масив номерів які будуть видалені
"380970000001",
...
]
}Приклад відповіді у разі успіху:
{
"status": "Success",
"data": [ // Масив некоректних номерів
"389833883838383838383838",
...
]
}У разі успішного видалення хоча б одного номеру з використанням масиву numbers відповідть буде містити масив некоректних номерів в полі data.
Можливі помилки:
| Task not found | Обдзвон не знайдено за вказаним id |
| numbers and states is null | Обидва параметри numbers та callStates null або пусті |
| Too many numbers | В масиві numbers передано більше 10 000 номерів |
| Phones not found | Масив numbers не містить ні одного номера |
| Numbers not found | Жодний з номерів масиву numbers не зайдено в обдзвоні |
| Numbers not found by states | За статусами з масиву callStates не знайдено ні одного номеру в обдзвоні |
| Handler is busy, try again later | Один проект одночасно видаляти або додавати номери лише в один обдзвон. В цей момент в одному з обдзвонів проекту відбувається видалення або додавання номерів. Повторіть спробу пізніше, коли попередня операція завершиться |
Приклад JSON запиту:
{
"action": "REMOVE_ALL_CALLS",
"id": 1307 // ID цільового обдзвону
}Відповідь у разі успіху:
{"status": "Success", "message": "Removed"}Можливі помилки:
| Task not found | Обдзвон не знайдено за вказаним id |
| Numbers not found | У вказаному обдзвоні відсутні номери |
| Handler is busy, try again later | Один проект одночасно видаляти або додавати номери лише в один обдзвон. В цей момент в одному з обдзвонів проекту відбувається видалення або додавання номерів. Повторіть спробу пізніше, коли попередня операція завершиться |
Типи обдзвонів:
| AUTODIAL | Автообдзвон. Використовується здебільшого для інформування клієнтів або проведення опитувань. Дзвінки автообдзвонів проходять відоповідно до вказаного вхідного сценарію |
| GUARANTEED_DIAL | Гаратнований дозвон. Використовується здебільшого для оптимізації робочого часу оперторів. Дзвінки гарантованих дозвонів розподіляються напряму на операторів вказаної групи внутрішніх ліній |
| VOICE_ROBOT | Голосовий робот. Використовується здебільшого для інформування клієнтів або проведення інтерактивних опитувань. При дзвінках голосових роботів відтворюється вказаний голосовий секретар |
Режими обдзвонів:
| FIXED | За кількістю потоків |
| FREE | За вільними операторами |
| SMART | Розумний підбір |
Статуси обдзвонів:
| NO_NUMBERS | Номери не додано |
| IN_PROGRESS | В процесі обдзвону |
| WAITING | Очікування початку обдзвону |
| WAITING_OPERATORS | Очікування вільних операторів |
| WAITING_REPEAT | Очікування спрацювання налаштування “Повторний дзвінок” |
| PAUSED | На паузі |
| CANCELED | Відмінено, але ще не встиг завершитись (частина номерів обдзвону знаходиться в статусі DIALING) |
| FINISHED | Завершено |
Данмічні значення для синтезу аудіо:
| NA | Номер обдзвона: ім’я |
| NO | Номер обдзвона: примітка |
| LI | Номер обдзвона: дані для Web Dialer |
| P1 | Номер обдзвона: параметр #1 |
| P2 | Номер обдзвона: параметр #2 |
| P3 | Номер обдзвона: параметр #3 |
| P4 | Номер обдзвона: параметр #4 |
| P5 | Номер обдзвона: параметр #5 |
| P6 | Номер обдзвона: параметр #6 |
| P7 | Номер обдзвона: параметр #7 |
| P8 | Номер обдзвона: параметр #8 |
| P9 | Номер обдзвона: параметр #9 |
| P10 | Номер обдзвона: параметр #10 |
Стани дзвінків обдзвонів:
| Статус | Назва статусу | Доступний для автоматичного повторного продзвонювання (поле repeatCallStates) | Доступний для методу REFRESH | Свідчить про можливі проблеми в налаштуваннях обдзвону або телефонії | Є статусом дзвінка |
|---|---|---|---|---|---|
| NEW | Не оброблено | – | – | – | — |
| DIALING | У процесі обдзвону | – | – | – | — |
| ANSWER | Була відповідь абонентом та оператором | – | + | – | + |
| ANSW_RJCT | Абонент відповів та не було дзвінка операторам | + | + | – | + |
| NOANSWER | Немає відповіді | + | + | – | + |
| BUSY | Зайнято або скинуто | + | + | – | + |
| FAIL | Збій з’єднання | + | + | – | + |
| BLOCKED | Заблокований | – | + | – | — |
| TALKING | Автовідповідач: абонент розмовляє | + | + | – | + |
| UNREACHABLE | Автовідповідач: абонент недоступний | + | + | – | + |
| NOT_EXIST | Автовідповідач: номер не існує | + | + | – | + |
| VOICE_MAIL | Автовідповідач: голосова пошта | + | + | – | + |
| CLIENT_CALLED | Абонент зателефонував сам або був вихідний | – | + | – | — |
| CANCEL | Скасовано | – | + | – | — |
| ANSW_NF_OP | Абонент відповів але небуло вільних операторів | + | + | + | + |
| ANSW_OP_NA | Абонент відповів та оператори не прийняли дзвінок | + | + | + | + |
| BUSYOUT | Недостатньо ліній | + | + | + | + |
| AUDIO_ERR | Помилка аудіо | – | + | + | + |
| WRONG_DIR | Неправильний напрямок | – | + | + | + |
| AUTOCANCEL | Скасовано автоматично | – | + | + | — |
Події обдзвонів та дзвінків обдзвонів:
| AUTODIAL_ANSWER | Дзвінок завершено – абонент та оператор відповіли |
| AUTODIAL_ANSW_RJCT | Дзвінок завершено – абонент відповів і не було дзвінка до операторів |
| AUTODIAL_ANSW_NF_OP | Дзвінок завершено – абонент відповів і не було вільних операторів |
| AUTODIAL_ANSW_OP_NA | Дзвінок завершено – абонент відповів та оператори не прийняли дзвінок |
| AUTODIAL_NOANSWER | Дзвінок завершено – немає відповіді |
| AUTODIAL_BUSY | Дзвінок завершено – зайнято або скинуто |
| AUTODIAL_CALL_FAIL | Дзвінок завершено – збій з’єднання |
| AUTODIAL_TALKING | Дзвінок завершено – абонент розмовляє |
| AUTODIAL_UNREACHABLE | Дзвінок завершено – абонент недоступний |
| AUTODIAL_NOT_EXIST | Дзвінок завершено – номер не існує |
| AUTODIAL_BUSYOUT | Дзвінок завершено – недостатньо ліній |
| AUTODIAL_WRONG_DIR | Дзвінок завершено – неправильний напрямок |
| AUTODIAL_AUDIO_ERR | Дзвінок завершено – помилка аудіо |
| AUTODIAL_NUMBER_BLOCKED | Номер заблокований налаштуваннями проекту |
| AUTODIAL_REPEAT_ATTEMPTS_ENDED | Дзвінок завершено неуспішно і закінчилися спроби повторного продзвону |
| AUTODIAL_CLIENT_CALLED | Абонент зателефонував сам або був вихідний |
| AUTODIAL_USER_PAUSED | Користувач поставлено на паузу обдзвоном. Доступно лише для гарантованого дозвону |
| AUTODIAL_STATUS_CHANGED | Статус обдзвону змінено |
| AUTODIAL_CANCEL | Обдзвон скасовано |
| AUTODIAL_AUTOCANCEL | Обдзвон скасовано автоматично |
| AUTODIAL_FINISH | Обдзвон завершено |
Типы кінцевих вузлів голосових секретарів:
| INTERMEDIATE | Проміжний |
| END_SUCCESS | Успішний |
| END_FAIL | Неуспішний |
| BACKGROUND | Фоновий |
| BACKGROUND_DEFER | Фоновий – перенос дзівнка |
Причини завершення голосових секретарів:
| NORMAL | Закінчився нормально |
| USER_REJECT | Абонент завершив розмову |
| GREETING_SILENCE | Абонент молчав під час привітання |
| ANSWERING_MACHINE | Розпізнано автовідповідач |
| RECOGNITION_ERROR | Розпізнавання мови перервалося з технічних причин |
| JUMP_LIMIT | Перевищено ліміт виконаних дій “Перейти на інший вузол” |
| NODE_LIMIT | Перевищено ліміт пройдених вузлів |
| FAIL | Невідома помилка |
Цей метод дозволяє інтегруватися з Вашим програмним забезпеченням і натисканням однієї кнопки відразу дзвонити на номер клієнта без необхідності введення номера вручну на SIP телефоні.
Це зазвичай використовується в CRM системах.
Як це працює: викликає цей метод — дзвонить сип клієнт як вхідний. Після відповіді одразу йде дзвінок на вказаний номер. Основна суть – не потрібно вводити номер руками.
/phones/directCall
Режим: POST
Content-Type: application/x-www-form-urlencoded
Надсилати форму з двома параметрами:
String sip — це номер внутрішньої лінії.
String number — gsm номер, що надсилається у міжнародному форматі. Наприклад: 380504443322.
String meta— String на 1000 символів. Це будь-яка інформація, яка має відображатися у вебхуках. Можливо null.
У разі успіху приклад відповіді:
{"status": "Success","message": "Called"}Можливі помилки:
| Sip not found | |
| Sip not ready | вказана лінія офлайн або зайнята |
| Wrong phone | |
| Meta info is too big | metaбільше 1000 символів |

Також можна відправляти запит передаючи параметри у якості параметрів url, без тіла

Метод використовується якщо необхідно зателефонувати абоненту з метою інформування його про щось.
Після того, як абонент дослухає аудіозапис – дзвінок завершиться.
Аудіозапис необхідно попередньо додати до категорії «API дзвінки» тут:https ://my.unitalk.cloud/new/index.html#audio. Після завантаження Ви побачите її ID
Зверніть увагу! Інформаційні дзвінки не потрапляють в історію дзвінків проекта.
/calls/originateNew
Режим: POST
Content-Type: application/json
Приклад JSON запиту:
{
"phone": "380503332211", // номер абонента, на який необхідно дзвонити. Чи не null.
"outerLine": null // зовнішня лінія для дзвінка абоненту. Якщо null – то лінія буде обрана автоматично, згідно з правилами вихідних сценаріїв.
"meta": "238", // String на 1000 символів. Це будь-яка інформація, яка має відображатися у вебхуках. Можливо null.
"ivrId": 211, // id голосового меню, яке буде відтворено абоненту, який відповів на дзвінок. Якщо вказано audios - буде відтворено після них. Може бути null – якщо вказано параметр audios чи voiceSecretaryId. У голосовому меню дозволені лише дії: "Переклад дзвінка на внутрішню лінію", "Переклад дзвінка на групу номерів" та дозволена лише група внутрішніх ліній (SIP), "Відтворення голосового повідомлення".
"voiceSecretaryId": 321, // id голосового секретаря, який буде викликаний при відповіді абонента на дзвінок. Якщо вказано audios - буде викликаний після них. Може бути null – якщо вказано параметр audios чи voiceSecretaryIds. У голосовому секретарі заборонені дії: "Перенаправлення дзвінка на номер GSM", "Активація сценарію", "Активація голосового меню" та "Перенаправлення дзвінка на відділ" з операторами на GSM.
"audios": [ //масив аудіозаписів та тексту для озвучування з якого будуть синтезовані аудіо, які будуть відтворені абоненту як тільки він відповість на дзвінок. В якому порядку аудіо знаходяться в масиві, в такому відтворюватимуться. Максимум 5 елементів, з них максимум озвучень – 2. Озвучені з тексту аудіозапису у списку аудіозаписів проекту не відображаються. Можливо null.
{
"id": 4953, //id заздалегідь завантаженого аудіо для API дзвінків. Можливо null, у разі tts повинно бути null. Якщо id і tts не null, буде використовуватися id.
"tts": null //дані для озвучування тексту можуть бути null, якщо вказано id
},
{
"id": null,
"tts": { //дані для озвучування тексту можуть бути null, якщо вказано id
"text": "текст для озвучування", // текст, який буде озвучений, не може перевищувати 4960 символів. Може бути null, якщо вказано ssml. Якщо вказано обидва поля text та ssml - використовуватиметься ssml
"ssml": "текст для озвучування" // Альтернатива полю text - текст у форматі ssml. Не може перевищувати 5000 символів. Повинний починатися та закінчуватися тегом speak. Можливо null, якщо вказано поле Text. Якщо вказано обидва поля text та ssml - використовуватиметься ssml
"settingsId": 18 //налаштування синтезу мови, які будуть використовуватися під час озвучування. Не може бути null
}
}
]
}У разі успіху:
{"status": "Success"}Можливі помилки:
| Call already in progress | попередній дзвінок цього абонента ще не завершився |
| Outer line not found | вказана зовнішня лінія для вихідного дзвінка не знайдена у проекті |
| Outer line is tracked | зазначена зовнішня лінія бере участь у трекінгу. З неї не можна робити вихідні |
| Meta info is too big | meta більше 1000 символів |
| No audio та IVR | не вказано аудіозаписи audios, ivrId і voiceSecretaryId, має бути зазначено хоча б щось одне |
| IVR може бути використаний для SIPs тільки | у голосовому меню присутні невирішені дії |
| Service not paid | Тариф не активний, можливо, на рахунку немає коштів, або в тарифі немає API дзвінків |
| Limit of Simultaneously calls has reached | досягнуто межу 20 одночасних дзвінків |
| Wrong phone | номер телефону абонента неправильний |
| audios: Too many audios | у масиві audiosзанадто багато елементів |
| audios: Too many text to speech | у масиві audiosзанадто багато елементів із озвучуванням тексту tts |
| audios: Audio is null | у масиві audiosє null елемент |
| audios: Audio not found by id | аудіозапис не знайдено у проекті за вказаним id |
| audios: Wrong type of audio | зазначений audiosаудіозапис не знаходиться в категорії для API дзвінків |
| audios: Text для ‘text’ and ‘ssml’ is null | в ttsполя text< /span>і ssmlпусті, хоча б одне має бути не null |
| audios: Text до тексту ‘text’ not valid | в tts поле text< /span>довше 4960 символів |
| audios: Text для ‘ssml’ не valid | в ttsполе ssml< /span> довше 5000 символів або не починається і закінчується тегом speak |
| audios: Text to speech ‘settingsId’ is null | не вказано id налаштувань синтезу мови у tts |
| audios: Text для швидких налаштувань не знайдено id | налаштування синтезу мови не знайдено в проекті ID, вказаному в tts.settingsId |
| audios: Audio is empty | у масиві audiosє елемент у якому id і ttsnull |
| audios: Text to speech failed | помилка синтезу аудіо з тексту |

Як це працює: так само як і звичайний с2с, тільки незалежність полягає в тому, що Вам не потрібно попередньо створювати сайт, додавати на нього кнопку зворотного дзвінка
Метод дозволяє створити негайний с2с дзвінок.
Цей дзвінок не буде видно у заявках та CRM системах, але буде в історії дзвінків та вебхуках.
Для його роботи не потрібно попередньо створювати сайт та підключати до нього кнопку зворотного дзвінка
POST /calls/originateC2c
{
"clientNumber": "380935553322",
"steps": [
{
"type": "GSM",
"to": "380931111111",
"awaitingTime": 5
}
]
}clientNumber — номер клієнта, якому треба дзвонити
steps — масив кроків переадресацій. Можна вказувати декілька.
steps.type — GSM, SIP, GROUP
steps.to — номер оператора
steps.awaitingTime — час виклику від 5 до 300 секунд
у полі steps.to необхідно вказувати:
GSM-> номер клієнта у міжнародному форматі (наприклад 380501112233)
SIP -> внутрішній номер лінії (наприклад, 5455)
GROUP -> ID групи (відділу). Id відображається зверху праворуч на кожному відділі в особистому кабінеті

Цей метод дозволяє скинути активний дзвінок за його id, який ви отримуєте у вебхуках або за номером внутрішньої/зовнішньої лінії
/calls/hangup
Режим: POST
Content-Type: application/json
Приклад JSON запиту:
{
"number": null,
"id": 1474427802
}У разі успіху:
{"status": "Success","message": "Found: 1"}Можливі помилки:
| Empty request | Не вказано ані id, ані number |

Для ініціації підключення суфлера необхідно вказати два обов’язкових параметри:
· target – Номер внутрішньої лінії в дзвінку, до якої буде підключений суфлер;
· source – Номер внутрішньої лінії, яка буде підключена суфлером до активного дзвінка.
Відносний шлях: /calls/connectAsPrompter
Режим: POST
Content-Type: application/json
Права на виклик суфлера користувачами відповідних внутрішніх ліній не враховуються при виконанні запиту
Приклад JSON запиту:
{
"target":"1111",
"source":"2222"
}Відповідь у разі успіху:
{"status": "Success"}Можливі помилки:
| Target not found | Цільова лінія не знайдена в проекті |
| Target is not in call | Цільова лінія не знаходиться в дзвінку |
| Source not found | Лінія суфлера не знайдена |
| Source is offline | Лінія суфлера не в мережі |
Для активації мовної аналітики за дзвінком необхідно вказати два обов’язкових параметри:
· callId – Ідентифікатор дзвінка. Може бути отриманий через API з історії дзвінків або у вебхуках за дзвінками;
· profileId – Ідентифікатор профіля аналітики. Може бути отриманий на сторінці особистого кабінету «Мовна аналітика» в шапці цільового профілю.
Відносний шлях: /calls/analytics/create
Режим: POST
Content-Type: —
Запуск аналітики можливий лише за тими дзвінками, для яких були збережені роздільні записи.
Відповідь на запит буде відправлено після закінчення обробки дзвінка, отже рекомендується значно збільшити час очікування відповіді для запитів до даного методу.
Максимальна кількість одночасних дзвінків в обробці – 50.
Приклад запиту:
/calls/analytics/create?callId=12345678&profileId=123
Приклад відповіді у разі успіху:
{
"profileId": 123, // Ідентифікатор профілю, який використовувався для запиту мовного аналізу
"profileName": "Sample Name", // Назва використаного профілю мовного аналізу
"transcription": "00:00:00,000-->00:00:15,000\nOperator: Hello! This is sample speech", // Екранірована транскрипція діалогу
"operatorTag": "Operator", // Діюча особа, яка вважається оператором
"analyticsJson": "{\"dialogTopic\":{\"metricId\":1234,\"metricName\":\"Dialog topic\",\"value\":\"Voice message\",\"position\":0}, ... }",
// Екранований рядок, що містить JSON з результатами аналітики (метриками) дзвінка.
// Кожен ключ (наприклад, "dialogTopic" і т.д.) представляє метрику,
// яка має наступні параметри:
// - metricId: унікальний ідентифікатор метрики;
// - metricName: назва метрики;
// - value: значення метрики (число, рядок, логічне так/ні, список або об'єкт);
// - position: позиція метрики для сортування або відображення.
"analyticsSchema": "{\"$schema\":\"http://json-schema.org/draft-04/schema#\",\"type\":\"object\",\"properties\":{\"dialogTopic\":{\"type\":\"object\",\"properties\":{\"metricId\":{\"type\":\"integer\"},\"metricName\":{\"type\":\"string\"},\"value\":{\"type\":\"string\"},\"position\":{\"type\":\"integer\"}}}, ... }}",
// Рядок, що містить JSON Schema, яка описує структуру об'єкта analyticsJson.
// Схема використовується для валідації метрик і містить опис типів для кожного параметра.
"languageData": { // Об'єкт, в якому містяться дані про мови аналітики
"operatorLanguage": "english", // Мова мовлення оператора
"clientLanguage": "english", // Мова мовлення клієнта
"transcriptionLanguageCode": "en", // ISO код мови отриманої транскрипції
"analyticsLanguageCode": "en", // ISO код мови, на якій були сформовані результати аналітики
"translatedLangCode": null, // ISO код мови, на яку було здійснено переклад аналітики. Якщо переклад не проводився, значення null.
"translatedLangName": null // Назва мови, на яку було здійснено переклад аналітики. Якщо переклад не проводився, значення null.
},
"plainTranscription": "Operator: Hello! This is sample speech" // Транскрипція діалогу
}Параметр відповіді transcription містить рядки транскрипції діалогу в форматі:
· *Час початку проміжку репліки*–>*Час закінчення проміжку репліки* – Наприклад «00:00:00,000–>00:00:15,000»;
· *Діюча особа*: *Транскрипція репліки* – Например «Operator: Hello! This is sample speech»;
· Наступна репліка в аналогічному форматуванні;
· Часові проміжки та транскрипції реплік розділені між собою керуючими символами переносу рядка («\n»);
· В параметрі transcription на відміну від plainTranscription керуючі символи екрановані («\\n»), окрім того plainTranscription не містить часових проміжків реплік.
Можливі помилки:
| Only 50 concurrent requests are allowed | Перевищено ліміт одночасно оброблюваних дзвінків |
| Call does not exist | За вказаним callId не знайдено дзвінок |
| Profile does not exist | За вказаним profileId не знайдено профіль мовної аналітики |
| Analytics is not available for this call | Формування мовної аналітики неможливо, оскільки для вказаного дзвінка відсутні роздільні записи |
| Voice analytics is already in progress | Обробка мовної аналітики вказаним дзвінком вже запущена |
| Voice analytics is not available | Послуга мовної аналітики недоступна |
| Insufficient funds | На балансі проекту недостатньо коштів |
/audio/upload
Режим: POST
Content-Type: multipart/form-data
Надсилати multipart з трьома параметрами:
| name (String) | Не може бути null. Максимум 200 символів |
| type (String) | GENERALСценаріїIVRГолосові менюMELODYМелодії очікування на лінії та чергиAUTODIALАвтодзвінкиAPIAPI дзвінки |
| file (File) | Максимальний розмір: 15мб. Дозволяється аудіо або відео файл будь-якого формату. Його аудіо доріжка буде переконвертована та нормалізована під 0дб.У разі якщо тривалість файлу перевищує ці параметри – буде автоматично обрізано:IVR90 секундAUTODIAL, MELODY, API300 секундGENERAL30 секунд |
| temp (Boolean) | Опціональний параметр. Якщо true — файл позначається як тимчасовий і буде автоматично вилучено о 04:00. |
У разі успіху, в message повернеться id завантаженого аудіофайлу:
{"status": "Success","message": "432"}
Метод синтезує аудіо з тексту та додає аудіозаписи до проекту, із вказаним ім’ям та у вказаний розділ. За один раз можна озвучити до 5 аудіо.
/audio/tts
Режим: POST
Content-Type: application/json
Приклад JSON запиту:
{
"data": [/ / масив даних для синтезу аудіо. Максимум 5 елементів
{ // перший елемент для озвучування
"name": "аудіо для обдзвону", // назва з яким аудіо буде додано до проекту
"type": "AUTODIAL", //розділ аудіо до якого буде додано аудіозапис. Можливі значення: GENERAL (Сценарії), IVR (Голосові меню), MELODY (Мелодії очікування на лінії та черг), AUTODIAL (Автодзвінки), API (API дзвінки)
"tts": { //дані для озвучування тексту
"text": "текст для озвучування", // текст, який буде озвучений, не може перевищувати 4960 символів. Може бути null, якщо вказано поле ssml. Якщо вказано обидва поля text та ssml - використовуватиметься ssml
"ssml": null, / / Альтернатива полю text - текст у форматі ssml. Не може перевищувати 5000 символів. Повинний починатися та закінчуватися тегом speak. Можливо null, якщо вказано поле Text. Якщо вказано обидва поля text та ssml - використовуватиметься ssml
"settingsId": 18 //налаштування синтезу мови, які будуть використовуватися під час озвучування. Не може бути null
}
},
{ //Другий елемент для озвучування
"name": "аудіо для апі дзвінка",
"type": "API",
"tts": {
"text": null,
"ssml": "текст для озвучування",
"settingsId": 16
}
}
]
}У разі успіху:
{
"status": "Success",
"message": "Success",
"data": [//масив з результатом синтезу, по кожному аудіо. Якщо аудіо синтезовано успішно - буде вказано ID з яким воно збереглося в проект. У разі помилки – id буде null, а в полі error буде текст помилки
{ //Успішно синтезоване аудіо (є id)
"name": "аудіо для обдзвону", // назва аудіо
"id": 4962, //id нового аудіо (у разі успіху)
"error": null //Текст помилки (у разі невдачі)
},
{ //синтез невдалий чи виконаний (id немає, є error)
"name": "аудіо для апі дзвінка",
"id": null,
"error": "Same name already present"
}
]
}Можливі значення поля error для кожного з елементів озвучення при Success:
| type is null | не вказано розділ аудіо |
| Name is empty | ім’я аудіо не вказано або порожнє |
| Name length more than 200 chars | ім’я аудіо занадто довге, допускається максимум 200 символів |
| Same name already present | аудіо з таким ім’ям вже існує у проекті |
| tts is null | не вказано дані для озвучення тексту |
| Text до звуку ‘text’ and ‘ssml’ is null | в ttsполя text< /span>і ssmlпусті, хоча б одне має бути не null |
| Text до тексту ‘text’ not valid | в tts поле text< /span> довше 4960 символів |
| Text для ‘ssml’ не valid | в ttsполе ssml< /span> довше 5000 символів або не починається і закінчується тегом speak |
| Text to speech ‘settingsId’ is null | не вказано id налаштувань синтезу мови у tts |
| Text для прослуховування не знайдено id | налаштування синтезу мови не знайдено в проекті ID, вказаному в tts.settingsId |
| Text to speech failed | помилка синтезу аудіо з тексту |
| Internal error | невідома помилка при синтезі аудіо |
Можливі помилки:
| Завжди один simultaneous text to speech request per project | Один і той самий проект не може викликати цей метод одночасно кілька разів. Зачекайте, поки завершиться попередній запит. |
| data is null | У запиті немає параметра data |
| data is empty | У параметрі data немає елементів |
| Too many elements in data | У параметрі data занадто багато елементів. Дозволяється максимум 5 озвучень за 1 запит. |
| Service not paid | Тариф не активний, можливо, на рахунку немає коштів |

Робота з списками виконується за допомогою дій, метод:
Відносний шлях: /lists
Режим: POST
Content-Type: application/json
Цільовий список вказується в тілі запиту в обов’язковому параметрі list. Перелік існуючих списків:
· BLOCKED_PHONES – Список заблокованих номерів в міжнародному форматі, взаємодія з якими відхиляється;
· BLOCKED_FOR_AUTODIAL_PHONES – Список номерів в міжнародному форматі, які неможливо додати в обдзвони.
Дії вказуються в тілі запиту в обов’язковому параметрі operation. Перелік існуючих дій:
· GET – Отримання поточного списку;
· ADD – Додавання елементів в список;
· REMOVE – Видалення елементів з списку.
Для дій ADD та REMOVE обов’язкове зазначення массиву елементів які будуть додані або видалені в параметрі items. Максимальна кількість елементів в масиві items – 100.
Список заблокованих номерів в міжнародному форматі, взаємодія з якими відхиляється. Для роботи з списком заблокованих номерів в обов’язковому параметрі list необхідно вказати «BLOCKED_PHONES». Для дій ADD та REMOVE параметр items має являти собою массив номерів в міжнародному форматі.
Приклад JSON GET запиту:
{
"list": "BLOCKED_PHONES",
"operation": "GET"
}Приклад відповіді:
["380123456789", ...]Приклад JSON ADD запиту:
{
"list": "BLOCKED_PHONES",
"operation": "ADD",
"items": ["380123456789", ...]
}Приклад JSON REMOVE запиту:
{
"list": "BLOCKED_PHONES",
"operation": "REMOVE",
"items": ["380123456789", ...]
}Відповідь для ADD та REMOVE запитів:
{"status": "Success"}Список номерів в міжнародному форматі, які неможливо додати в обдзвони. Для роботи з списком номерів, які неможливо додати в обдзвони, в обов’язковому параметрі list необхідно вказати «BLOCKED_FOR_AUTODIAL_PHONES». Для дій ADD та REMOVE параметр items має являти собою массив номерів в міжнародному форматі.
Приклад JSON GET запиту:
{
"list": "BLOCKED_FOR_AUTODIAL_PHONES"
"operation": "GET"
}Приклад відповіді:
["380123456789", ...]Приклад JSON ADD запиту:
{
"list": "BLOCKED_FOR_AUTODIAL_PHONES",
"operation": "ADD",
"items": ["380123456789", ...]
}Приклад JSON REMOVE запиту:
{
"list": "BLOCKED_FOR_AUTODIAL_PHONES",
"operation": "REMOVE",
"items": ["380123456789", ...]
}Відповідь для ADD та REMOVE запитів:
{"status": "Success"}Історія роботи дозволяє отримати просумовану інформацію про тривалість перебування користувачів в різних статусах роботи за певну дату. Для цього необхідно вказати цільову дату в обов’язковому параметрі date у форматі «yyyy-MM-dd».
Відносний шлях: /users/workHistory
Режим: POST
Content-Type: —
Приклад запиту:
/users/workHistory?date=2024-01-01
Приклад відопіді у разі успіху:
{
"users": {
"12345": { // "Унікальний ідентифікатор користувача": Масив з інформацією про відповідного користувача
"firstName": "John", // Ім'я користувача
"lastName": "Callid", // Прізвище користувача. Може бути null
"phone": 1234, // Номер закріплений за користувачем. Може бути null
"userTimeSeconds": { // Масив з інформацією про час перебування в різних статусах
"byPauses": { // Масив з інформацією про час перебування в різних видах пауз
"Launch": 1800, // "Назва виду статусу": Кількість секунд проведених в відповідному виді статусу
...
},
"byWork": { // Масив з інформацією про час перебування в різних видах статусу "Працює"
"Cold Calling": 18000, // "Назва виду статусу": Кількість секунд проведених в відповідному виді статусу
...
},
"byStop": { // Масив з інформацією про час перебування в різних видах статусу "Не працює"
"Non-working hours": 54000, // "Назва виду статусу": Кількість секунд проведених в відповідному виді статусу
...
},
"stop": 54000, // Кількість секунд в статусі "Не працює"
"work": 28800, // Кількість секунд в статусі "Працює"
"pause": 3600 // Кількість секунд на паузі
},
"middleName": "Triple" // По-батькові. Може бути null
},
...
}
}Відлік кількості секунд проведених користувачем в певному статусі починається з першої зміни статусу після створення та додання користувача в проект.
Можливі помилки:
| Future data is absent | Вказано майбутню дату, відповідні дані відсутні |
Для отримання списку користувачів та даних про них необхідно відправити пустий запит.
Відносний шлях: /users/list
Режим: POST
Content-Type: —
Приклад відповіді:
[
{
"email": "example@gmail.com",
"firstName": "John", // Ім'я користувача
"lastName": "Callid", // Прізвище користувача. Може бути null
"middleName": "Triple" // По-батькові. Може бути null
"phone": 1234, // Номер закріплений за користувачем. Може бути null
"role": "ADMIN", // Роль користувача в проекті
"id": 12345, // Унікальний ідентифікатор користувача
"workStatus": "WORK", // Статус роботи користувача
"workStatusName": "Cold Calling" // Назва виду статусу. Може бути null
},
...
]Для отримання списку користувачів та даних про їх статус роботи необхідно відправити пустий запит.
Відносний шлях: /users/getStatus
Режим: POST
Content-Type: —
Приклад відповіді:
[
{
"firstName": "John", // Ім'я користувача
"lastName": "Callid", // Прізвище користувача. Може бути null
"middleName": "Triple" // По-батькові. Може бути null
"phone": 1234, // Номер закріплений за користувачем. Може бути null
"workStatus": "WORK", // Статус роботи користувача
"workStatusName": "Cold Calling" // Назва виду статусу. Може бути null
},
...
]Для зміни статусу роботи користувача необхідно вказати номер лінії оператора в параметрі number, новий статус роботи в параметрі status. Допустимі значення: WORK (“Працює”), STOP (“Не працює”), PAUS (“Пауза”). Опціаонально, в параметрі statusName можна вказати назву статусу роботи, яка має повністю співпадати з одним із існуючих в проекті.
Відносний шлях: /phones/inner/setStatus
Режим: POST
Content-Type: —
Приклад запиту:
/phones/inner/setStatus?number=1234&status=WORK&statusName=Cold Calling
Відповідить у разі успіху:
{"status": "Success", "message": "Success"}Для отримання списку внутрішніх ліній та їх поточного статусу необхідно відправити пустий запит. У відповідь буде повернуто ассоціативний масив, де ключ – номер внутрішньої лінії, а значення – її поточний статус. Можливі статуси: online (лінія в мережі та не зайнята), busy (лінія в мережі і зайнята дзвінком) и offline (лінія не в мережі).
Відносний шлях: /phones/inner
Режим: POST
Content-Type: —
Приклад відповіді:
{
"2022": "offline"
"2023": "busy",
"2024": "online",
...
}POST /groups/action
Приклад body JSON запиту:
{
"action": "GET"
}Відповідь:
{
"status": "Success",
"data": [
{
"id": 455, // id групи
"name": "Відділ продажу", // ім'я групи
"phones": [ // масив номерів, які містить група
{
"number": "4030", // номер
"firstName": "Олександр", // ім'я користувача, якщо він є
"lastName": "Максимов" // прізвище користувача, якщо він є
}
]
}
]
}
POST /groups/action
Приклад body JSON запиту:
{
"action": "REMOVE_NUMBER",
"groupId": 141, // id групи
"number": "2561" // номер, який потрібно видалити
}Успіх:
{"status": "Success"}Можливі помилки:
| Group not found | Вказана група не знайдена |
| Cant delete the last number from group | не можна видалити останній номер із групи |
| Група не містить певного номера | група не містить зазначеного номера |

POST /groups/action
Приклад body JSON запиту:
{
"action": "ADD_NUMBER",
"groupId": 5859,
"number": "2222"
}Успіх:
{"status": "Success"}Можливі помилки:
| Group not found | id вказує на невідому групу |
| GSM number is not valid | В групу GSM додається номер в невірному форматі |
| Group is already contains specified number | Лінія вже в групі |
| Project does not contain the specified sip number | Лінія не знайдена |

POST /groups/action
Створює групу SIP ліній з вказаними номерами
Приклад body JSON запиту:
{
"action": "CREATE",
"name": "Group name",
"numbers": ["2224"]
}Успіх:
{
"status": "Success",
"data": {
"id": 2925,
"name": "Group name",
"phones": [
{
"number": "2224",
"firstName":"John",
"lastName": "Dou"
}
]
}
}
Можливі помилки:
| Group already exists | група з тою ж назвою вже існує |
| Numbers is empty | не вказані номери ліній |
| Not found: 2224 | sip лінія 2224 не знайдена в проекті |

Для отримання статистики за операторами проекту необхідно вказати початок та кінець цільового періоду в параметрах from та to відповідно, в форматі “yyyy-MM-dd HH:mm:ss”.
Відносний шлях: /operator/statistic
Режим: POST
Content-Type: application/json
Окрім того, записи можна попередньо відфільтрувати в опціональному параметрі filter за:
· callTypes — Список типів дзвінків, за якими буде сформована статистика. Перелік допустимих значень наведено у відповідному словнику;
· innerPhones — Список номерів внутрішніх ліній, за якими буде сформована статистика;
· minTimeSeconds — Мінімальна тривалість розмови в секундах;
· minTimeAwaitingSeconds — Мінімальна тривалість очікування в секундах;
· maxTimeAwaitingSeconds — Максимальна тривалість очікування в секундах.
Приклад JSON запиту:
{
"from": "2024-01-30 00:00:00",
"to": "2024-02-05 23:59:59",
"filter": {
"callTypes": [
"REGULAR",
...
],
"innerPhones": [
"1234",
...
],
"minTimeSeconds": 1,
"minTimeAwaitingSeconds": 1,
"maxTimeAwaitingSeconds": 60
}
}Приклад відповіді у разі успіху:
[
{
"operatorName": "1234 (Sample Name)", // Загальна статистика: Оператор
"operatorPhone": "1234", // Номер оператора
"totalCount": 123, // Загальна статистика: Дзвінків
"inCount": 123, // Загальна статистика: Вхідних
"outCount": 123, // Загальна статистика: Вихідних
"totalDuration": "59:59", // Загальна статистика: Тривалість розмов
"inUniqueCount": 123, // Загальна статистика: Унікальних вхідних
"answOpNaCount": 0, // Загальна статистика: Пропущених, на які не відповіли
"outAnsweredCount": 123, // За вихідними: Успішних
"outAnsweredPercentage": "100.0%", // За вихідними: Відсоток дзвінків, на які відповіли
"outMissedCount": 0, // За вихідними: Без відповіді
"outUniqueCount": 123, // За вихідними: На унікальні номери
"outUniqueAnsweredCount": 123, // За вихідними: Кількість успішних дзвінків на унікальні номери
"outUniqueAnsweredPercentage": "100.0%", // За вихідними: Відсоток успішних дзвінків на унікальні номери від загальної кількості вихідних
"outDuration": "59:59", // За вихідними: Тривалість розмов
"outAverageDuration": "05:30", // За вихідними: Середній час розмови
"inAnsweredCount": 123, // За вхідними: Прийнятих
"inAnsweredPercentage": "100.0%", // За вхідними: Відсоток дзвінків, на які відповіли
"inMissedCount": 0, // За вхідними: Пропущених, на які не відповіли
"inHangupByOperatorCount": 123, // Кількість вхідних, скинутих оператором
"inHangupByClientCount": 123, // Кількість вхідних, скинутих клієнтом
"inUniqueAnsweredCount": 123, // За вхідними: Дзвінків, на які відповіли, з унікальних номерів
"inUniqueAnsweredPercentage": "100.0%", // За вхідними: Відсоток дзвінків, на які відповіли, з унікальних номерів
"inAnsweredNewLeadCount": 123, // За вхідними: Прийнятих від нових клієнтів
"inLostCount": 0, // За вхідними: Втрачених
"inAverageAwaitingTime": "00:15", // За вхідними: Середній час очікування при відповіді
"inTotalAwaitingTime": "02:30", // За вхідними: Загальний час очікування при відповіді
"inDuration": "59:59", // За вхідними: Тривалість розмов
"inAverageDuration": "05:30", // За вхідними: Середній час розмови
"inUniqueRegularCount": 123, // За унікальними: Прямий дзвінок
"inUniqueTrackingCount": 123, // За унікальними: Call tracking
"inUniqueC2cButtonCount": 123, // За унікальними: Click to call
"inUniqueC2cFormCount": 123, // За унікальними: Форма
"inUniqueC2cApiCount": 123, // За унікальними: Click to call API
"inUniqueAutodialCount": 123, // За унікальними: Обдзвон
"inUniqueCallbackCount": 123, // За унікальними: Callback
"inUniqueAutoCallbackCount": 123, // За унікальними: Автопередзвон
"inUniqueApiCount": 123, // За унікальними: API дзвінок
"inRegularCount": 123, // За джерелами: Прямий дзвінок
"inTrackingCount": 123, // За джерелами: Call tracking
"inC2cButtonCount": 123, // За джерелами: Click to call
"inC2cFormCount": 123, // За джерелами: Форма
"inC2cApiCount": 123, // За джерелами: Click to call API
"inAutodialCount": 123, // За джерелами: Обдзвон
"inCallbackCount": 123, // За джерелами: Callback
"inAutoCallbackCount": 123, // За джерелами: Автопередзвон
"inApiCount": 123, // За джерелами: API дзвінок
"inMissedAnsweredCount": 0, // За пропущеними: Пропущених, на які відповіли
"inMissedNewLeadCount": 0, // За пропущеними: Пропущених від нових клієнтів
"inMissedPercentage": "0.0%", // За пропущеними: Відсоток пропущених дзвінків від усього дзвінків
"inMissedAverageAwaitingTime": "00:00", // За пропущеними: Середній час очікування відповіді оператора
"logInTime": "2024-01-30 08:40:00", // Логін
"logOutTime": "2024-02-05 18:30:00", // Логаут
"availableNotInWorkTime": "02:30:00", // Загальний Available
"pauseTime": "05:30:00", // Пауза
"wrapUpTime": "", // Загальний Wrap-up Time
"compoundTime": 123 // Загальний Compound Time
},
...
]Статистика являє собою список об’єктів інформації про усіх операторів та про кожного окремо, що відповідає табличному експорту на сторінці особистого кабінету “За операторами” розділу “Статистика“ з аналогічними критеріями пошуку.
Можливі помилки:
| Wrong FROM date | Не вказана або некоректна дата та час початку цільового періоду |
| Wrong TO date | Не вказана або некоректна дата та час кінця цільового періоду |
Типи джерел дзвінків:
| AUTO_CB | Автопередзвон |
| AUTODIAL | Обдзвон |
| REGULAR | Прямий дзвінок |
| C2C_FORM | Форма зворотнього дзвінка |
| API | API дзвінок |
| TRACKING | Call Tracking |
| CALLBACK | Callback |
| C2C_BUTTON | Кнопка зворотнього дзвінка |
| C2C_API | API зворотній дзвінок |
Для отримання історії дзвінків проекта необхідно вказати початок та кінець цільового періоду в параметрах dateFrom та dateTo відповідно, в форматі “yyyy-MM-dd HH:mm:ss”. Записи повертаються в порядку зменшення id. Кількість записів, які буть отримані при цьому не перевищує значення обов’язкового параметру limit. Допустимий діапазон limit — від 1 до 1000. Для отримання наступної групи дзвінків необхідно в параметрі offest вказати зсув відносно початку списку.
Відносний шлях: /history/get
Режим: POST
Content-Type: application/json
Окрім того, записи можна попередньо відфільтрувати в опціональному параметрі filter за:
· id — ID дзвінка на який відповіли. Допустимі значення: true – тільки з відповіддю, false – тільки без;
· direction — Напрямок дзвінків. Допустимі значення: IN – вхідні, OUT – вихідні, INNER – внутрішні;
· minDuration — Мінімальна тривалість розмови в секундах;
· calledFrom — Масив частин номерів з яких дзвонили;
· calledTo — Масив частин номерів на які дзвонили;
· outerNum — Масив номерів зовнішніх ліній на які надходили або через які виконувались дзвінки;
· exactPhone — Масив повних номерів, які здійснювали або приймали дзвінки;
· newLead — Ознака першого дзвінка за номером клієнта. Допустимі значення: true – тільки перші, false – тільки не перші;
· answered — Ознака дзвінка на який відповіли. Допустимі значення: true – тільки з відповіддю, false – тільки без;
· lost — Ознака втраченого дзвінка (пропущеного, за яким не перетелефонували). Допустимі значення: true – тільки втрачені, false – тільки не втрачені;
· voiceMessage — Ознака залишеного в дзвінку голосового повідомлення. Допустимі значення: true – тільки з голосовим повідомленням, false – тільки без.
Приклад JSON запиту:
{
"dateFrom": "2023-12-12 00:00:00",
"dateTo": "2024-01-01 00:00:00",
"limit": 50,
"offset": 0,
"filter": {
"direction": "IN",
"minDuration": 10,
"calledFrom": ["3809533"],
"calledTo": ["33"],
"outerNum": ["380800123123"],
"exactPhone": ["3333", "380955555555"],
"newLead": false,
"answered": true,
"lost": false,
"voiceMessage": false
}
}Приклад відповіді у разі успіху:
{
"count": 100, // Кількість дзвінків за вказаними критеріями
"calls": [ // Масив дзвінків
{
"id": 19990701, // Випадковий id дзвінка
"dbid": 603, // id дзвінка в проекті
"date": "2023-12-20 15:28:00", // Дата та час дзвінка
"source": "REGULAR", // Джерело дзвінка
"direction": "IN", // Напрямок дзвінка
"from": "380955555555", // Номер, що дзвонив
"to": ["3333"], // Масив номерів на які надійшов дзвінок
"lastGroupName": "Sales managers", // Назва останньої групи внутрішніх ліній, на яку було переведено дзвінок
"secondsFullTime": 300, // Повна тривалість дзвінка
"secondsTalk": 285, // Тривалість розмови
"link": "https://api.unitalk.cloud:8443/tracking/rec/1531144732.920/2023-12-20", // Посилання на запис дзвінка
"comment": "That one was successful!", // Коментар
"state": "ANSWER", // Стан дзвінка
"cause": 16, // Код причини завершення
"callback": false, // Ознака автопередзвону
"utmSource": "google", // Мітка аналітики
"utmMedium": "search", // Мітка аналітики
"utmCampaign": "web", // Мітка аналітики
"utmTerm": "best+product", // Мітка аналітики
"utmContent": "content", // Мітка аналітики
"outerNumber": "site.ua", // Мітка аналітики
"googleId": "1182768620.1182768620", // Мітка аналітики
"facebookClientId": "fb.1.1234567890", // Мітка аналітики
"referer": "google.com" // Мітка аналітики
},
...
]
}Можливі помилки:
| Wrong FROM date | Не вказана або некоректна дата та час початку цільового періоду |
| Wrong TO date | Не вказана або некоректна дата та час кінця цільового періоду |
| Limit range is 1-1000 | Не вказано або некоректний параметр limit |
Ви можете використовувати систему вебхуків для отримання інформації про події телефонії. Крім того, UniTalk підтримує вхідні вебхуки.
Вебхук “Рух за балансом” надає інформацію щодо кожної операції зміни балансу проекту і не може бути конфігурований, оскільки події даної категорії обробляються системою автоматично. Для роботи з цим вебхуком Ваш веб-додаток має приймати JSON методом POST за вказаною на сторінці особистого кабінету “API” URL.
Всього є 5 типів операцій:
| MAIN_REFILL | Поповнення основного рахунку |
| BONUS_REFILL | Поповнення бонусного рахунку |
| CALL | Списання за платний дзвінок |
| SMS | Списання за відправку SMS |
| SERVICES | Списання за послуги |
Приклад JSON, що відправляється:
{
"date": "2022-11-12 19:12:50", // Час проведення операції
"type": "MAIN_REFILL", // Тип операції
"sum": 500000, // Сума операції. 1000 відповідає одиниці валюти проекту
"sumV2": 500000000, // Сума операції. 1000,000 відповідає одиниці валюти проекту
"mainBalance": 15500000, // Основний баланс після завершення операції. 1000 відповідає одиниці валюти проекту
"mainBalanceV2": 15500000000, // Основний баланс після завершення операції. 1000,000 відповідає одиниці валюти проекту
"bonusBalance": 350000, // Бонусний баланс після завершення операції. 1000 відповідає одиниці валюти проекту
"description": "Пополнение баланса на 500.00 UAH через LiqPay" // Опис операції
}Надсилання вебхука може бути обране як тип дії під час створення або редагування дій на сторінці особистого кабінету “Обробка подій”. При конфігурації дії цього типу можна вказати:
1) URL на який буде надіслано вебхук;
2) HTTP метод, який буде використано;
3) Заголовки HTTP;
4) URL параметри;
5) Тип тіла запиту (Для POST, PUT, PATCH);
6) Вміст тіла запиту (Для типів “Вказаний JSON” та “Форма (urlencoded)”).
Події, за якими можна закріпити дії, існують 4 типів:
Типи подій
| Події в обдзвонах номерів | Налаштовуються для кожного окремого обдзвону номерів під час створення або редагування через API або у відповідному розділі особистого кабінету, наприклад, “Обдзвон завершено”. |
| Події у голосових меню | Налаштовуються для кожного окремого голосового меню під час створення чи редагування на сторінці особистого кабінету “Голосове меню”, наприклад, натискання клієнтом клавіші “1” |
| Події дзвінків | Налаштовуються на сторінці особистого кабінету “API”, наприклад “Завершення дзвінка”. Зверніть увагу, дія закріплюється за подією дзвінка незалежно від зовнішньої лінії, яка задіяна при цьому |
| Подія черги з голосовим супроводом | Доступно при створенні або редагуванні вхідного сценарію на сторінці особистого кабінету “Вхідні сценарії”, при виборі перенаправлення на “Черга з супроводом” та активації опції “Спеціальна дія“ |
Докладніше з процесом обробки подій можна ознайомитись в інструкції з обробки подій.
Відправлення вебхука з типом тіла “Стандартний JSON” передбачає формування тіла запиту на підставі типу події, за якою було надіслано вебхук:
Стандартний JSON для подій дзвінків:
{
"event": "CALL_END", // Подія, за якою було відправлено вебхук
"call": { // Масив даних про дзвінок
"id": 1091944, // Випадково генерований id дзвінка для зв'язку його з іншими подіями дзвінків
"dbid": 275, // id під яким цей дзвінок було збережено до бази даних. Згодом дзвінок має саме цей id
"from": "380505557182", // Номер з якого було здійснено дзвінок
"to": [ // Масив номерів, на які було переадресовано дзвінок
"2000"
],
"lastGroupName": "Sales managers", // Назва останньої групи операторів, на яку було переведено дзвінок
"outerNumber": "site.ua", // Зовнішня лінія, яка була використана для здійснення або отримання дзвінка. Містить назву сайту у разі зворотного дзвінка
"direction": "IN", // Напрямок дзвінка: "IN" - вхідний, "OUT" - вихідний, "INNER" - внутрішній
"date": "2018-07-09 16:58:52", // Дата та час прийняття дзвінка
"secondsFullTime": 19, // Повний час дзвінка. Відомо лише у події CALL_END
"secondsTalk": 9, // Час спілкування. Відомо лише у події CALL_END
"utmSource": "google", // Мітки аналітики. Може бути null
"utmMedium": "search", // Мітки аналітики. Може бути null
"utmCampaign": "web", // Мітки аналітики. Може бути null
"utmTerm": "ковры", // Мітки аналітики. Може бути null
"utmContent": "content", // Мітки аналітики. Може бути null
"googleId": "1182768620.1530916891", // Мітки аналітики. Може бути null
"facebookClientId": "fb.1.1234567890", // Мітки аналітики. Може бути null
"referer": "google.com", // Мітки аналітики. Може бути null
"callback": true, // Вказує, чи є цей дзвінок зворотним. Застаріло. Використовуйте поле "source"
"comment": "комментарий к звонку",
"state": "ANSWER", // Стан дзвінка. Для подій CALL_NEW та CALL_REDIRECT - null
"source": "REGULAR", // Джерело дзвінка
"link": "https://api.unitalk.cloud:8443/tracking/rec/1531144732.920/2018-07-09", // Посилання на запис дзвінка. Присутня тільки у випадку полі state - "ANSWER"
"meta": "some info", // Додаткова інформація, яка може бути задана під час ініціації дзвінка через API
"cause": 16 // Код завершення дзвінка
}
}Масив “to”
| При події CALL_NEW вхідного дзвінка | Завжди порожній |
| При події CALL_REDIRECT | Містить один або більше номерів |
| При події CALL_ANSWER | Містить один номер |
| При події CALL_END | Може бути порожнім або містити номери операторів, яким надійшов дзвінок |
| Для API дзвінків | Може бути відсутнім, якщо дзвінок не був ні на кого перенаправлений |
Поле “state”
| ANSWER | Дзвінок було прийнято |
| BUSY | Лінія була зайнята |
| FAIL | Збій |
| NOANSWER | Дзвінок не було прийнято |
| CHANUNAVAIL | Викликаний номер був недоступний |
| NOMONEY | Недостатньо коштів для здійснення дзвінка |
| BUSYOUT | Під час здійснення дзвінка усі зовнішні лінії були зайняті |
| WRONGDIR | Неправильний напрямок дзвінка |
| BLOCKED | Дзвінок було заблоковано згідно з налаштуваннями проекту |
| DIALING | Йде виклик |
| UNREACHABLE | Абонент недоступний або знаходиться поза зоною |
| NOT_EXIST | Викликаний номер не існує |
Поле “source”
| REGULAR | Звичайний прямий дзвінок |
| TRACKING | Дзвінок колтрекінгу |
| CLICK2CALL | Зворотній дзвінок з кнопки |
| LEAD_CATCHER | Обратный звонок с попапа |
| FORM | Зворотній дзвінок із форми |
| CALLBACK | Дзвінок за ознакою callback на зовнішньому номері |
| AUTO_CB | Автоматичний зворотній дзвінок на пропущений виклик |
| AUTODIAL | Дзвінок із обдзвону номерів |
| API_CALL | Дзвінок ініційований через API |
| C2C_API | с2с дзвінок ініційований через API |
Стандартний JSON для голосових подій:
{
"ivrName":"Распределение по отделам", // Назва голосового меню
"from":"380971234567", // Номер телефону абонента
"outerNumber":"380441234567", // Зовнішня лінія, яка була використана для здійснення або отримання дзвінка. Містить назву сайту у разі зворотного дзвінка
"pressedDigit":2, // Цифра, на яку натиснув абонент. Може бути null
"actionType": "MAIN", // Тип дії. "MAIN" - основна дія, "NO_CHOICE" - дія відсутності вибору, "WRONG_DIGIT" - дія неправильного вибору
"projectName": "myproject", // Назва проекту
"utmCampaign": "sale2021", // Мітки аналітики. Може бути null
"utmSource": "google", // Мітки аналітики. Може бути null
"utmMedium": "email", // Мітки аналітики. Може бути null
"utmTerm": "term", // Мітки аналітики. Може бути null
"utmContent": "content", // Мітки аналітики. Може бути null
"googleId": "11111.11111", // Мітки аналітики. Може бути null
"facebookClientId": "fb.1.1234567890" // Мітки аналітики. Може бути null
}Стандартний JSON для подій завершення обдзвонів номерів:
{
"from": "380971234567", // Номер телефону абонента
"operatorNumber": "2040", // Внутрішня лінія оператора. Може бути null
"callName": "Владимир", // Ім'я закріплене за номером дзвінка
"callNote": "покупал окна", // Нотатка до номера обдзвону
"calledCount": 1, // Кількість дзвінків на цей номер в обдзвоні
"callState": "ANSWER", // Статус завершення дзвінка. Детальніше у розділі "Обдзвон номерів" - "Загальні відомості"
"dialName": "обзвон-окна", // Назва обдзвону
"totalCount": 2000, // Кількість номерів у обдзвоні
"doneCount": 537, // Кількість оброблених номерів обдзвону
"projectName": "myproject" // Назва проекту
}Стандартний JSON для подій обдзвонів номерів, не пов’язаних із дзвінками
{}Стандартний JSON для події черги із голосовим супроводом
{
"from":"380971234567", // Номер телефону абонента
"projectName":"my-project", // Назва проекту
"utmCampaign": "sale2021", // Мітки аналітики. Може бути null
"utmSource": "google", // Мітки аналітики. Може бути null
"utmMedium": "email", // Мітки аналітики. Може бути null
"utmTerm": "term", // Мітки аналітики. Може бути null
"utmContent": "content", // Мітки аналітики. Може бути null
"googleId": "11111.11111", // Мітки аналітики. Може бути null
"facebookClientId": "fb.1.1234567890", // Мітки аналітики. Може бути null
"gclid": "gclid..." // Мітки аналітики. Може бути null
"cdid": "cdid...", // Мітки аналітики. Може бути null
"referer": "https://unitalk.cloud", // Мітки аналітики. Може бути null
"ip": "111.111.111.111" // !
}Для видалення відкладених обробників подій необхідно вказати перелік телефонних номерів в міжнародному форматі, обробники подій для яких будуть видалені.
Відносний шлях: /api/eventHandlers/removeScheduledByPhones
Метод: POST
Content-Type: application/json
Приклад JSON запиту:
{
"phones": [ // Масив номерів клієнтів
"380123456789",
...
]
}Приклад відповіді у разі успіху:
{"status": "Success", "data": 12345}У разі успішного виконання запиту, в параметрі data буде повернута кількість видалених обробників.
Можливі помилки:
| Phones is not specified | Параметр phones не вказано або пустий |
| Too many phones | В параметрі phones передано більше 100 елементів |
| Invalid phones | В параметрі phones присутні некоректні номери. В параметрі відповіді data буде вказано масив елементів phones, які не пройшли валідацію |
| Wait until the previous request is processed | Один проект одночасно може запустити тільки один процес видалення відкладених обробників подій. В цей момент в проекті відбувається видалення. Повторіть спробу пізніше, коли попередня операція завершиться |
UniTalk може приймати вебхуки з певною структурою та виконувати за ними дії.
Доступні на даний момент дії:
1) “AUTODIAL_ADD” – Додати номер телефону в обдзвон номерів
2) “AUTODIAL_REMOVE” – Видалити номер телефону з обдзвону номерів
Для використання вхідних вебхуків на сторінці особистого кабінету “API“ необхідно:
1) Згенерувати токен:
2) Натиснути кнопку “Сгенерувати посилання“:
3) Обрати дію, обдзвон до якого вона застосовується, вказати додаткові опції та натиснути кнопку “Сгенерувати“:

4) Заповнити параметри посилання та надіслати на неї POST запит.
Параметри, що заповнюються при генерації автоматично:
| token | Токен для вхідних вебхуків |
| action | Тип дії вебхука |
| id | id обдзвону номерів |
Приклад згенерованого посилання:
https://api.unitalk.cloud:8443/tracking/webhook/event?token=LrqN7GRb1Y1Qx5wRoZHY&action=AUTODIAL_ADD&id=20461&name=¬e=&link=&phones=
Параметри, які потрібно заповнити:
| phones | Номер телефону або список номерів телефону через кому які необхідно додати до обдзвону |
| name | Ім’я, яке буде закріплене за номерами, що додаються. Максимум – 100 символів. Необов’язкове поле |
| note | Нотатка, яка буде закріплена за номерами, що додаються. Максимум – 500 символів. Необов’язкове поле |
| link | Дані для Web Dialer, які будуть закріплені за номерами, що додаються. Максимум – 500 символів. Необов’язкове поле |
Приклад заповненого посилання:
https://api.unitalk.cloud:8443/tracking/webhook/event?token=LrqN7GRb1Y1Qx5wRoZHY&action=AUTODIAL_ADD&id=20461&name=vasya¬e=okna&phones=380971234567
При надсиланні запиту POST за цим посиланням, в обдзвон з id “20461” буде додано номер телефону “380971234567”, з ім’ям “vasya” і заміткою “okna”.
У разі успіху:
{"status": "Success"}Можливі помилки:
| Token not found | Переданий токен не знайдено в UniTalk |
| Action not found | Відсутній параметр action у посиланні |
| Id is null | Відсутній параметр id у посиланні |
| Autodial not found | Обдзвон не знайдено за id |
| Empty phones | Параметр phones не вказаний або порожній |
| Phones not found | Параметр phones не порожній, але в ньому не знайдено хоч би один коректний номер телефону |
| Phones not added | Не вдалося додати номери в обдзвон. Можливо номери вже були додані в обдзвон |
Приклад згенерованого посилання:
https://api.unitalk.cloud:8443/tracking/webhook/event?token=LrqN7GRb1Y1Qx5wRoZHY&action=AUTODIAL_REMOVE&id=20461&phones=
Параметри, які потрібно заповнити:
| phones | Номер телефону або список номерів телефону через кому які необхідно додати до обдзвону |
Приклад заповненого посилання:
https://api.unitalk.cloud:8443/tracking/webhook/event?token=LrqN7GRb1Y1Qx5wRoZHY&action=AUTODIAL_REMOVE&id=20461&phones=380971234567,380670001000
При надсиланні запиту POST за цим посиланням, з обдзвону з id “20461” будуть видалені номери “380971234567” і “380670001000”.
У разі успіху:
{"status": "Success"}Можливі помилки:
| Token not found | Переданий токен не знайдено в UniTalk |
| Action not found | Відсутній параметр action у посиланні |
| Id is null | Відсутній параметр id у посиланні |
| Autodial not found | Обдзвон не знайдено за id |
| Empty phones | Параметр phones не вказаний або порожній |
| Phones not found | Параметр phones не порожній, але в ньому не знайдено хоч би один коректний номер телефону |
| Calls not found | Не вдалося видалити жоден номер. Можливо, в обдзвоні не було жодного із зазначених номерів |
Вебхук «Переклад дзвінка на відповідального оператора» дозволяє отримати інформацію про виклик для подальшого вибору відповідального оператора Вашою системою. Для роботи з цим вебхуком Ваш веб-додаток повинен приймати JSON методом POST за вказаним під час створення або редагування вхідного сценарію на сторінці особистого кабінету «Вхідні сценарії», при виборі перенаправлення на «На відповідального менеджера» та активації опції «Запит у Ваш API» URL.
При виконанні цього перенаправлення, на вказаний URL буде надіслано запит з таким вмістом:
{
"event": "ROUTE",
"call": {
"from": "380505557182", // Номер абонента, що телефонує
"outerNumber": "380442949168" // Зовнішня лінія, на яку було отримано дзвінок
}
}У відповідь Ваш додаток має надіслати JSON наступної структури:
{
"operatorNumber": "2048", // Номер телефону відповідального оператора. Можна вказати SIP або GSM. Може бути null
"callerName": "Александр", // Ім'я абонента, яке буде відображено у SIP клієнті
"ivrId": 487 // id голосового меню, яке потрібно відтворити абоненту. Може бути null
}Попередньо перевіряти чи вільний на даний момент оператор не потрібно: якщо він зайнятий, перенаправлення дзвінка на нього буде пропущено.
Вебхук “Керування чергою із голосовим супроводом” дозволяє отримати інформацію про дзвінок для подальшої пріоритезації обробки клієнтів Вашою системою. Для роботи з цим вебхуком Ваш веб-додаток повинен приймати JSON методом POST за вказаним під час створення або редагування вхідного сценарію на сторінці особистого кабінету «Вхідні сценарії», при виборі перенаправлення на «Чергу з супроводом» та активації опції «Вебхук для керування» URL .
При виконанні цього перенаправлення, на вказаний URL буде надіслано запит з таким вмістом:
{
"outerNumber": "380440000001", // Зовнішня лінія, на яку надійшов дзвінок
"from": "380501234567", // Номер абонента
"utmSource": null, // Мітки аналітики. Може бути null
"utmMedium": null, // Мітки аналітики. Може бути null
"utmCampaign": null, // Мітки аналітики. Може бути null
"utmTerm": null, // Мітки аналітики. Може бути null
"utmContent": null, // Мітки аналітики. Може бути null
"googleId": null, // Мітки аналітики. Може бути null
"facebookClientId": null, // Мітки аналітики. Може бути null
"gclid": null, // Мітки аналітики. Може бути null
"cdid": null, // Мітки аналітики. Може бути null
"referer": null // Мітки аналітики. Може бути null
}
Черга з пріоритетом складається із 10 черг, які обробляються у порядку зменшення номера. За замовчуванням UniTalk визначає всі дзвінки в чергу з номером 5.
Ваша програма може змінити черговий номер, надіславши відповідь у наступні структури JSON:
{
"setPriority": 7 // Номер черги від 1 до 10
}Для відправки повідомлень через SMS та Viber на сторінці особистого кабінету «Сервіс відправки повідомлень» розділу «Інтеграція» має бути підключена інтеграція з сервісом відправки повідомлень. Доступність типів повідомлень та напрямків залежить від налаштування цієї інтеграції. Максимальна довжина тексту для Viber – 1000 символів, для SMS – залежить від сервісу відправки повідомлень.
Відносний шлях: /message/send
Режим: POST
Content-Type: application/json
Приклад JSON запиту для SMS:
{
"messageType": "SMS", // Тип повідомлення "SMS" (обов’язкове поле)
"alfaName": "YourSmsAlphaName", // Альфа-ім’я відправника. Актуально лише для провайдера Unitalk, якщо у вас підключено більше ніж одне альфа-ім’я (необов’язковий параметр)
"to": "380971234567", // Номер телефону отримувача у міжнародному форматі (обов’язкове поле)
"text": "Lorem ipsum dolor sit amet, consectetuer adipiscing elit" // Текст повідомлення (обов’язкове поле)
}Приклад JSON запиту для Viber:
{
"messageType": "VIBER", // Тип повідомлення "VIBER" (обов’язкове поле)
"alfaName": "YourViberAlphaName", // Альфа-ім’я відправника. Актуально лише для провайдера Unitalk, якщо у вас підключено більше ніж одне альфа-ім’я (необов’язковий параметр)
"to": "380971234567", // Номер телефону отримувача у міжнародному форматі (обов’язкове поле)
"text": "Lorem ipsum dolor sit amet, consectetuer adipiscing elit" // Текст повідомлення (обов’язкове поле)
}Приклад відповіді у разі успіху:
{
"status": "Success",
"message": null,
"rus": null,
"data": 1234
}Ідентифікатор повідомлення, що повертається в data, може бути використаний для подальшого отримання інформації про статус відправки повідомлення.
Можливі помилки:
| Message service not connected | Не підключено сервіс відправки повідомлень |
| Validation error | Помилки валідації. Можливі причини: · Неправильний номер телефону одержувача · Відправка повідомлень за цим напрямком не дозволена налаштування інтеграції з сервісом відправки повідомлень · Не обрано тип повідомлення · Відправка SMS відключена в налаштуваннях сервіса відправки повідомлень · Відправка повідомлень в Viber відключена в налаштуваннях сервіса відправки повідомлень · Повідомлення не може бути пустим · Повідомлення занадто довге · Повідомлення містить недопустимі символи |
| UniTalk did not allow sending | UniTalk не дозволив відправку. Можливі причини: · Недоступний напрямок для відправки · На балансі недостатньо коштів · Проект не активний |
| Service response | Відповідь сервіса. Можливі причини: · Невірні дані авторизації · Недостатньо коштів на балансі · Перевищено ліміт запитів · Дубль повідомлення · IP адреса не дозволена в сервісі надсилання повідомлень · м’я відправника заблоковано одержувачем · Недоступна країна одержувача · Номер одержувача заблоковано · Недопустиме ім’я відправника · Ім’я відправника на модерації · Недопустимий номер одержувача · Недопустимий текст · Надсилання повідомлень у Viber недоступне · Дані некоректні · Сервіс надсилання повідомлень тимчасово недоступний |
| Unknown error | Невідома помилка |
Для відправки декількох повідомлень одним запитом може бути використана масова відправка повідомлень. Максимальна кількість повідомлень – 100. Запит може бути в двох варіантах:
· З вказанням загального тексту повідомлень в параметрі text та списку номерів телефонів отримувачів в міжнародному форматі в параметрі recipients;
· З вказанням номерів телефонів отримувачів в міжнародному форматі та відповідних текстів повідомлень в масиві messages, де ключ – номер телефону, а значення – текст повідомлення.
Якщо в запиті одночасно вказано параметри обох способів, будет використано параметр messages.
Відносний шлях: /message/sendBulk
Режим: POST
Content-Type: application/json
Приклади JSON запитів:
{
"messagesType": "SMS", // Тип повідомлень. "SMS" або "VIBER"
"recipients": [ // Номери телефонів отримувачів в міжнародному форматі
"380971234567",
"380981234567",
...
],
"text": "Lorem ipsum dolor sit amet, consectetuer adipiscing elit." // Текст повідомлень
}{
"messagesType": "SMS", // Тип повідомлень. "SMS" або "VIBER"
"messages": { // Масив повідомлень
"380971234567": "Lorem ipsum dolor sit amet, consectetuer adipiscing elit. 1", // "Номер телефону": "Текст повідомлення"
"380981234567": "Lorem ipsum dolor sit amet, consectetuer adipiscing elit. 2", // "Номер телефону": "Текст повідомлення"
...
}
}Приклад відповіді у разі успіху:
{
"status": "Success",
"data": {
"380971234567": { // Відправлено
"id": 123451, // Ідентифікатор повідомлення
"error": null // Текст помилки відправки повідомлення
},
"380981234567": { // Не відправлено
"id": 123452, // Ідентифікатор повідомлення
"error": "Sample error text" // Текст помилки відправки повідомлення
},
...
}
}Масив, що повертається в data, містить ідентифікатор та текст помилки відправки кожного з повідомлень, що відправляються. Ідентифікатор може бути використано для подальшого отримання інформації про статус відправки повідомлення.
Можливі помилки:
| Message service not connected | Не підключено сервіс відправки повідомлень |
| messagesType is null | Не обрано тип повідомлень |
| Messages not specified | В запиті не вказано ні параметр messages, ні recipients |
| Too many messages | Масив messages містить понад 100 пар |
| messages is empty | Масив messages пустий |
| messages contains null key | В масиві messages присутній пустий ключ |
| messages contains null value | В масиві messages присутнє пусте значення |
| Too many recipients | Список recipients містить понад 100 номерів |
| recipients is empty | Список recipients пустий |
| recipients contains null | В списку recipients присутнє пусте значення |
| text is null or empty | Для відправки використовується список recipients, але текст не вказаний |
Для отримання статуса відправки повідомлення необхідно вказати ідентифікатор, отриманий при його відправці, в параметрі id.
Відносний шлях: /message/getStatus
Режим: POST
Content-Type: application/x-www-form-urlencoded (Також можна відправляти запит передаючи параметри у якості параметрів url, без тіла)
Приклад запиту:
/message/getStatus?id=12345
Приклад відповіді у разі успіху:
{
"status": "Success",
"data": {
"messageStatus": "ERROR", // Статус відправки повідомлення
"errorText": "Service response: invalid authorization data" // Текст помилки. Якщо статус не ERROR - null
}
}Масив, що повертається в data, містить статус відправки повідомлення та текст помилки відправки, якщо статус відправки – ERROR.
Статуси відправки:
· SENT – Відправлено. Інформація про доставку відсутня;
· DELIVERED – Доставлено;
· NOT_DELIVERED – Не доставлено;
· ERROR – Помилка відправки.
Можливі помилки:
| Invalid id | Параметр id відсутній або некоректний |
| Message not found | За вказаним id не знайдено повідомлення |
Для отримання списку розсилок та пов’язаної інформації необхідно відправити пустий запит.
Відносний шлях: /messageDistribution/getAll
Режим: POST
Content-Type: –
Приклад відповіді:
[
{
"id": 123, // Ідентифікатор розсилки
"name": "Sample_name", // Назва
"messageType": "SMS", // Тип повідомлень. "SMS" або "VIBER"
"text": "Lorem ipsum dolor sit amet, consectetuer adipiscing elit.", // Текст розсилки
"startTime": "2024-07-07 12:00:00", // Час запуску. Якщо запущена одразу - null
"paused": false, // Ознака паузи. "true" - на паузі, "false" - ні
"totalNumbersCount": 10, // Кількість номерів в розсилці
"currentNumbersCount": 10, // Кількість необроблених номерів
"status": "WAITING_START_TIME" // Статус розсилки
},
...
]Статуси розсилок:
· COMPLETED – Розсилку завершено;
· PAUSED – На паузі;
· WAITING_START_TIME – Очікування часу запуску;
· IN_PROGRESS – В процесі розсилки;
· MESSAGE_SERVICE_NOT_CONNECTED – Не підключено сервіс відправки повідомлень.
Для створення розсилки в запиті необхідно вказати обов’язкові параметри:
· name – Унікальна назва нової розсилки. Максимальна довжина – 45 символів;
· messageType – Тип повідомлень. “SMS” або “VIBER“;
· numbers – Список номерів телефонів отримувачів у міжнародному форматі. Максимальна кількість номерів – 10000;
· text – Текст розсилки. Обмежання залежать від типу повідомлень та сервісу відправки повідомлень.
Опціонально в параметрі startTime можна вказати дату та час відкладеного запуску в форматі “yyyy-MM-dd HH:mm:ss”.
Відносний шлях: /messageDistribution/create
Режим: POST
Content-Type: application/json
Приклад JSON запиту для SMS розсилки:
{
"name": "SmsDistributionName", // Назва розсилки (обов’язково)
"messageType": "SMS", // Тип розсилки "SMS" (обов’язково)
"alphaName": "YourSmsAlphaName", // Альфа-ім’я відправника. Актуально лише для провайдера Unitalk, якщо у вас підключено більше ніж 1 альфа-ім’я (необов’язково)
"numbers": [ // Номери телефонів отримувачів у міжнародному форматі (обов’язково)
"380971234567",
"380671234567",
...
],
"text": "Lorem ipsum dolor sit amet, consectetuer adipiscing elit", // Текст розсилки (обов’язково)
"startTime": "2029-07-07 12:00:00" // Дата і час відкладеного запуску. Може бути null — у такому разі розсилка буде запущена одразу (необов’язково)
}Приклад JSON запиту для Viber Promo розсилки:
{
"name": "ViberDistributionName", // Назва розсилки (обов’язково)
"messageType": "VIBER", // Тип розсилки "VIBER" (обов’язково)
"viberMessageType": "PROMO", // Тип Viber-повідомлень "PROMO" (обов’язково)
"alphaName": "YourViberAlphaName", // Альфа-ім’я відправника. Актуально лише для провайдера Unitalk, якщо у вас підключено більше ніж 1 альфа-ім’я (необов’язково)
"numbers": [ // Номери телефонів одержувачів у міжнародному форматі (обов’язково)
"380971234567",
"380671234567",
...
],
"text": "Lorem ipsum dolor sit amet, consectetuer adipiscing elit.", // Текст розсилки (обов’язково)
"base64Image": "iVBORw0KGgoAAA....", // Зображення у форматі base64, яке буде надіслано в розсилці (необов’язково)
"mimeType": "image/jpeg", // mime-тип вашого base64-зображення (обов’язково, якщо використовується base64Image)
"fileName": "promo_image", // Назва файлу із зображенням (до 20 символів), може використовуватись як метадані (обов’язково, якщо використовується base64Image)
"buttonText": "Buy", // Текст кнопки (до 30 символів) (необов’язково)
"buttonUrl": "https://example.com", // Посилання, яке відкриється після натискання на кнопку (обов’язково, якщо використовується buttonText)
"viberTTL": 3600, // "Time to Live" Viber-повідомлення — скільки секунд воно може чекати доставки. Значення в секундах, від 60 до 86400 (обов’язково)
"startTime": "2029-07-07 12:00:00" // Дата та час відкладеного запуску. Може бути null — тоді розсилка запуститься одразу (необов’язково)
}Приклад JSON запиту для Viber Transactional розсилки:
{
"name": "ViberDistributionName", // Назва розсилки (обов’язково)
"messageType": "VIBER", // Тип розсилки "VIBER" (обов’язково)
"viberMessageType": "TRANSACTIONAL", // Тип Viber-повідомлень "TRANSACTIONAL" (транзакційні повідомлення, обов’язково)
"alphaName": "YourViberAlphaName", // Альфа-ім’я відправника. Актуально лише для провайдера Unitalk, якщо у вас підключено більше ніж одне альфа-ім’я (необов’язково)
"numbers": [ // Номери телефонів одержувачів у міжнародному форматі (обов’язково)
"380971234567",
"380671234567",
...
],
"text": "Your verification code is: 1234", // Текст розсилки (обов’язковий параметр)
"viberTTL": 3600, // "Time to Live" Viber-повідомлення — скільки секунд повідомлення може чекати доставки. Вказується у секундах, від 60 до 86400 (обов’язково)
"startTime": "2029-07-07 12:00:00" // Дата та час відкладеного запуску. Може бути null — тоді розсилка запуститься одразу (необов’язково)
}Приклад JSON запиту для Viber Carousel розсилки:
{
"name": "ViberDistributionName", // Назва розсилки (обов’язково)
"messageType": "VIBER", // Тип розсилки "VIBER" (обов’язково)
"viberMessageType": "CAROUSEL", // Тип Viber-повідомлення "CAROUSEL" (обов’язково)
"alphaName": "YourViberAlphaName", // Альфа-ім’я відправника. Актуально лише для провайдера Unitalk, якщо у вас підключено більше ніж одне альфа-ім’я (необов’язково)
"numbers": [ // Номери телефонів одержувачів у міжнародному форматі (обов’язково)
"380971234567",
"380671234567"
],
"text": "Lorem ipsum dolor sit amet, consectetuer adipiscing elit.", // Текст розсилки (обов’язково)
"carouselItems": [ // Елементи каруселі, від 2 до 5 (обов’язково)
{
"title": "Sneakers A1", // Назва елемента (2–38 символів, обов’язково)
"base64Image": "iVBORw0KGgoAAA....", // Зображення у форматі base64 (обов’язково)
"mimeType": "image/png", // MIME-тип вашого зображення (обов’язково)
"fileName": "a1_carousel", // Назва файлу із зображенням (до 20 символів), може використовуватись як метадані (обов’язково)
"primaryButton": { // Налаштування основної кнопки
"label": "Buy", // Текст кнопки (до 10 символів, обов’язково)
"actionUrl": "https://example.com/a1" // Посилання, яке відкриється при натисканні (обов’язково)
},
"secondaryButton": { // Налаштування другої кнопки (необов’язково)
"label": "Details", // Текст (до 12 символів, необов’язково)
"actionUrl": "https://example.com/a1/info" // Посилання, яке відкриється при натисканні (необов’язково)
}
},
{
"title": "Sneakers B2", // Назва другого елемента (обов’язково)
"base64Image": "iVBORw0KGgoAAA....", // Зображення (обов’язково)
"mimeType": "image/png", // MIME-тип (обов’язково)
"fileName": "b2_carousel", // Назва файлу (обов’язково)
"primaryButton": { // Основна кнопка (обов’язково)
"label": "Buy", // Текст кнопки (до 10 символів, обов’язково)
"actionUrl": "https://example.com/b2" // Посилання (обов’язково)
}
}
],
"viberTTL": 3600, // "Time to Live" — скільки секунд Viber-повідомлення може чекати доставки (від 60 до 86400, обов’язково)
"startTime": "2029-07-07 12:00:00" // Дата та час відкладеного запуску. Може бути null — тоді розсилка стартує одразу (необов’язково)
}
Приклад JSON запиту для Viber+SMS fallback розсилки:
{
"name": "ViberWithSmsFallback", // Назва розсилки (обов’язково)
"messageType": "VIBER", // Тип розсилки "VIBER" (обов’язково)
"viberMessageType": "PROMO", // Тип Viber-повідомлень: "PROMO", "TRANSACTIONAL" або "CAROUSEL" (обов’язково)
"alphaName": "YourViberAlphaName", // Альфа-ім’я відправника. Актуально лише для провайдера Unitalk, якщо у вас підключено більше ніж одне альфа-ім’я (необов’язково)
"numbers": [ // Номери телефонів одержувачів у міжнародному форматі (обов’язково)
"380971234567",
"380671234567"
],
"text": "Lorem ipsum dolor sit amet, consectetuer adipiscing elit", // Текст Viber-розсилки (обов’язково)
"viberTTL": 3600, // "Time to Live" — скільки секунд Viber-повідомлення може чекати доставки. Значення в секундах, від 60 до 86400 (обов’язково)
// Для кожного типу viberMessageType успадковуються всі описані у попередніх JSON параметри
...
"sendSmsAfterViber": true, // Параметр, який відповідає за активацію Viber+SMS fallback-розсилки (обов’язково)
"smsText": "Lorem ipsum dolor sit amet, consectetuer adipiscing elit", // Текст SMS-розсилки (обов’язково)
"smsAlphaName": "YourSmsAlphaName", // Альфа-ім’я відправника для SMS. Актуально лише для провайдера Unitalk, якщо у вас підключено більше ніж одне альфа-ім’я (необов’язково)
"startTime": "2029-07-07 12:00:00" // Дата та час відкладеного запуску. Може бути null — тоді розсилка стартує одразу (необов’язково)
}Приклад відповіді у разі успіху:
{
"status": "Success",
"message": null,
"rus": null,
"data": 1234
}Ідентифікатор розсилки, що повертається в data, може бути використаний для подальшої взаємодії з нею.
Можливі помилки:
| The project does not have a messaging service connected | Не підключено сервіс відправки повідомлень |
| The name cannot be empty or contain more than 45 characters | Назва розсилки не вказана або перевищує 45 символів |
| The name already exists | Розсилка з такою назвою вже існує |
| No customer numbers are listed | Номери в списку numbers не вказані |
| There can be no more than 10000 numbers in the message distribution | Кількість номерів в списку numbers перевищує 10000 |
| Wrong numbers | В списку numbers присутні некоректні номери. В параметрі відповіді data буде повернений список некоректних номерів |
| Incorrect time format | Некоректний формат параметра startTime |
| Validation error | Помилки валідації. Можливі причини: · Не обрано тип повідомлення · Відправка SMS відключена в налаштуваннях сервіса відправки повідомлень · Відправка повідомлень в Viber відключена в налаштуваннях сервіса відправки повідомлень · Повідомлення не може бути пустим · Повідомлення занадто довге · Повідомлення містить недопустимі символи |
Для змінення розсилки в запиті необхідно вказати обов’язкові параметри:
· id – Ідентифікатор розсилки;
· name – Унікальна назва розсилки. Максимальна довжина – 45 символів;
· messageType – Тип повідомлень. “SMS” або “VIBER“;
· text – Текст розсилки. Обмежання залежать від типу повідомлень та сервісу відправки повідомлень.
Опціонально в параметрі startTime можна вказати дату та час відкладеного запуску в форматі “yyyy-MM-dd HH:mm:ss”.
Відносний шлях: /messageDistribution/update
Режим: POST
Content-Type: application/json
Приклад JSON запиту:
{
"id": 1234, // Ідентифікатор розсилки
"name": "Sample_name", // Назва
"messageType": "SMS", // Тип повідомлень. "SMS" або "VIBER"
"text": "Lorem ipsum dolor sit amet, consectetuer adipiscing elit.", // Текст розсилки
"startTime": "2024-07-07 12:00:00" // Дата та час відкладеного запуску. Може бути null, в такому випадку буде запущена одразу
}Відповідь у разі успіху:
{"status": "Success"}Можливі помилки:
| The project does not have a messaging service connected | Не підключено сервіс відправки повідомлень |
| id is not specified | Обов’язковий параметр id не вказано |
| Message distribution not found | Розсилку не знайдено за вказаним id |
| Message distribution completed | Розсилка вже завершена |
| The name cannot be empty or contain more than 45 characters | Назва розсилки не вказана або перевищує 45 символів |
| The name already exists | Розсилка з такою назвою вже існує |
| Incorrect time format | Некоректний формат параметра startTime |
| Validation error | Помилки валідації. Можливі причини: · Не обрано тип повідомлення · Відправка SMS відключена в налаштуваннях сервіса відправки повідомлень · Відправка повідомлень в Viber відключена в налаштуваннях сервіса відправки повідомлень · Повідомлення не може бути пустим · Повідомлення занадто довге · Повідомлення містить недопустимі символи |
Для видалення розсилки необхідно вказати її ідентифікатор в параметрі id.
Відносний шлях: /messageDistribution/remove
Режим: POST
Content-Type: application/x-www-form-urlencoded (Також можна відправляти запит передаючи параметри у якості параметрів url, без тіла)
Приклад запиту:
/messageDistribution/remove?id=1234
Відповідь у разі успіху:
{"status": "Success"}Можливі помилки:
| id is not specified | Обов’язковий параметр id не вказано |
Для призупинення або відновлення розсилки необхідно вказати її ідентифікатор в параметрі id та дію в параметрі paused:
· true – Поставити на паузу;
· false – Зняти з паузи.
Відносний шлях: /messageDistribution/setPaused
Режим: POST
Content-Type: application/x-www-form-urlencoded (Також можна відправляти запит передаючи параметри у якості параметрів url, без тіла)
Приклад запиту:
/messageDistribution/setPaused?id=1234&id=true
Відповідь у разі успіху:
{"status": "Success"}Можливі помилки:
| id is not specified | Обов’язковий параметр id не вказано |
| Message distribution not found | Розсилка не знайдена за вказаним id |
| Message distribution completed | Розсилку вже завершено |
Для роботи з віджетом Chrome (надалі Web Dialer) використовуються методи, що сгруповані за шляхом /widget/
Для відправки сповіщень у Web Dialer необхідно вказати:
· Масив ID користувачів, яким необхідно відобразити це сповіщення, в параметрі userIds;
· Як мінімум один параметр сповіщення в об’єкті data.
Відносний шлях: /widget/sendNotification
Режим: POST
Content-Type: application/json
Приклад JSON запиту:
{
"userIds": [ // Масив ID користувачів
1234,
...
],
"data": { // Параметри сповіщення
"contactName": "John", // Ім'я контакту
"contactLink": "https://www.example-crm.com/leads/1", // Посилання на контакт
"entityName": "Best deal", // Ім'я пов'язаної з контактом сутності
"entityLink": "https://www.example-crm.com/deals/1", // Посилання на пов'язану сутність
"responsible": "Manager #1" // Ім'я відповідального менеджера
}
}Приклад відповіді у разі успіху:
{
"status":"Success",
"data": {
"notificationId": 1234567890 // ID відправленого сповіщення
}
}Параметр notificationId, що повертається в data, може бути використаний для подальшого приховання відправлених сповіщень.
Можливі помилки:
| No users was specified for notifications send | Не було вказано жодного користувача для надсилання сповіщення |
| Data fields is all null | Не вказано значення жодного параметра об’єкта data |
| User with id *xxxx* not found | Користувач із зазначеним ID не був знайдений |
| No users with connected chrome extension was found | Зазначені користувачі не підключили Web Dialer |
Для приховання сповіщень у Web Dialer необхідно вказати:
· Масив ID користувачів, у яких необхідно приховати сповіщення, в параметрі userIds;
· notificationId, отриманий при відправці сповіщення.
Відносний шлях: /widget/hideNotification
Режим: POST
Content-Type: application/json
Приклад JSON запиту:
{
"userIds": [ // Масив ID користувачів
1234,
...
],
"notificationId": 1234567890 // ID цільового сповіщення
}Відповідь у разі успіху:
{"status": "Success"}Можливі помилки:
| No users was specified for notifications hide | Не було вказано жодного користувача для приховування сповіщення |
| NotificationId not specified | notificationId не вказано |
| The specified users are not found or chrome extension not connected | Зазначені користувачі не знайдені або у них не підключений Web Dialer |
Отримати id та назви сутностей проекта:
POST: /dictionary?type=…
можливі значення параметру type:
| IVR | id та назва голосових меню |
| INNER_PHONE | номер SIP лінії та ім’я оператора закріпленого за нею |
| USER | id та ім’я користувачів |
| SITE | id та назва сайтів |
| IN_SCENARIO | id та назва вхідних сценаріїв |
| OUT_SCENARIO | id та назва вихідних сценаріїв |
| TTS_PROFILE | id та назва профілів налаштувань синтезу аудіо |
| STT_PROFILE | id та назва профілів налаштувань розпізнавання мовлення |
| PHONE_GROUP | id та назва відділів телефонії |
| TRIGGER_ACTION | id та назва обробників подій |
| VOICE_ROBOT | id та назва голосових роботів |
| MESSAGE_DISTRIBUTION | id та назва розсилок повідомлень |
| CONTACT_FORMS | id та назва контакт форм |
| VOICE_ANALYTICS_PROFILE | id та назва профілів мовної аналітики |
| AUDIO_ALL | id та назва аудіо всіх типів |
| AUDIO_GENERAL | id та назва аудіо з типом Сценарії |
| AUDIO_IVR | id та назва аудіо з типом Голсові меню |
| AUDIO_AUTODIAL | id та назва аудіо з типом Обдзвони |
| AUDIO_MELODY | id та назва аудіо з типом Мелодії очікування на лінії та черг |
| AUDIO_API | id та назва аудіо з типом API дзвінки |
| AUDIO_VOICE_ROBOT | id та назва аудіо з типом Голосові роботи |
| AUDIO_VOICE_QUEUE | id та назва аудіо з типом Черги дзвінків із голосовим супроводом |
| AUTODIAL_ALL | id та назва обдзвонів всіх типів |
| AUTODIAL_AUTODIALER | id та назва обдзвонів з типом Автообдзвон |
| AUTODIAL_PREDICTIVE | id та назва обдзвонів з типом Предиктивний дозвон |
| AUTODIAL_ROBOT | id та назва обдзвонів з типом Обдзвон голосовим роботом |
| SALE_SCRIPTS | id та назва скриптів продажів |
Тіло відповіді:
{
"734": "ivr name 1",
"2135": "ivr name 2"
}