CLS. Руководство пользователя: различия между версиями
Материал из Флора AI
Нет описания правки |
Нет описания правки |
||
| (не показано 17 промежуточных версий этого же участника) | |||
| Строка 2: | Строка 2: | ||
Сервис массового обзвона и уведомлений, поддерживающий множественные каналы связи и гибкую настройку | Сервис массового обзвона и уведомлений, поддерживающий множественные каналы связи и гибкую настройку | ||
====== '''Основные возможности:''' ====== | |||
'''Основные возможности:''' | |||
* Выбор канала связи | * Выбор канала связи | ||
** голосовые звонки - интеграция с '''FreeSWITCH''' для исходящих звонков | ** голосовые звонки - интеграция с '''FreeSWITCH''' для исходящих звонков | ||
| Строка 23: | Строка 21: | ||
** API - полный программный доступ ко всем функциям | ** API - полный программный доступ ко всем функциям | ||
===== '''Термины и определения''' ===== | |||
====='''Термины и определения'''===== | |||
CLS (Call List Service) - сервис массового обзвона и уведомлений с поддержкой множественных каналов связи. | CLS (Call List Service) - сервис массового обзвона и уведомлений с поддержкой множественных каналов связи. | ||
| Строка 44: | Строка 41: | ||
{| class="wikitable" style="width: 110%" | {| class="wikitable" style="width: 110%" | ||
|+''Описание методов API'' | |+''Описание методов API'' | ||
! colspan="3" |Управление обзвонами | ! colspan="3" |'''<u>Управление обзвонами</u>''' | ||
|- | |- | ||
! style="color:green;width: 15%" |'''POST /calls/call''' | ! style="color:green;width: 15%" |'''POST /calls/call''' | ||
| Строка 102: | Строка 99: | ||
<small><code>}</code></small> | <small><code>}</code></small> | ||
|- | |- | ||
! colspan="3" |<nowiki>Управление списками обзвона | оповещения</nowiki> | ! colspan="3" |'''<u><nowiki>Управление списками обзвона | оповещения</nowiki></u>''' | ||
|- | |- | ||
! style="color:green;width: 15%" |'''POST /lists/add''' | ! style="color:green;width: 15%" |'''POST /lists/add''' | ||
| Строка 227: | Строка 224: | ||
<code><small>"error": 0,</small></code> | <code><small>"error": 0,</small></code> | ||
<code><small>"lists": []</small></code> | <code><small>"lists": []</small></code> | ||
<code><small>}</small></code> | |||
|- | |||
! style="color:blue;width: 15%" |'''GET /lists/{id}''' | |||
! colspan="2" |<nowiki>Получение конкретного списка для обзвона | оповещения из БД</nowiki> | |||
|- | |||
| colspan="2" | | |||
* <small>'''id''' - id списка</small> | |||
|<code><small>{</small></code> | |||
<code><small>"error": 0,</small></code> | |||
<code><small>"list": {}</small></code> | |||
<code><small>}</small></code> | <code><small>}</small></code> | ||
|- | |- | ||
| Строка 270: | Строка 277: | ||
<small><code>}</small></code> | <small><code>}</small></code> | ||
|- | |- | ||
! colspan="3" |<nowiki>Управление инстанциями обзвона | оповещения</nowiki> | ! colspan="3" |'''<u><nowiki>Управление инстанциями обзвона | оповещения</nowiki></u>''' | ||
|- | |- | ||
! style="color:green;width: 15%" |'''POST /instances/add/{list_id}''' | ! style="color:green;width: 15%" |'''POST /instances/add/{list_id}''' | ||
| Строка 336: | Строка 343: | ||
! colspan="2" |<nowiki>Удаление инстанции обзвона | оповещения</nowiki> | ! colspan="2" |<nowiki>Удаление инстанции обзвона | оповещения</nowiki> | ||
|- | |- | ||
| colspan="2" |<small>'''id'''<nowiki> - id списка | инстанции (одно и тоже)</nowiki></small> | | colspan="2" | | ||
* <small>'''id'''<nowiki> - id списка | инстанции (одно и тоже)</nowiki></small> | |||
|<small><code>{</code></small> | |<small><code>{</code></small> | ||
<small><code> "error": 0,</code></small> | <small><code> "error": 0,</code></small> | ||
| Строка 344: | Строка 352: | ||
<small><code>}</code></small> | <small><code>}</code></small> | ||
|- | |- | ||
! colspan="3" |'''<u>Управление временными интервалами</u>''' | |||
|- | |- | ||
|'''POST /timeintervals/add''' | ! style="color:green;width: 15%" |'''POST /timeintervals/add''' | ||
! colspan="2" |Создание временного интервала | |||
|- | |- | ||
| colspan="2" | <small><code>{</code> | | colspan="2" | | ||
<small><code>"id": "02f2d1ce-bb0b-4856-904b-2db13250bb90",</code></small> | <small><code>{</code></small> | ||
<small><code>"id": "02f2d1ce-bb0b-4856-904b-2db13250bb90",</code></small> | |||
<small><code>"name": "Новый интервал 2",</code></small> | <small><code>"name": "Новый интервал 2",</code></small> | ||
| Строка 362: | Строка 372: | ||
<small><code>"dates": [1],</code></small> | <small><code>"dates": [1],</code></small> | ||
<small><code>"intervals": [0,1440]</code></small> | <small><code>"intervals": [[0,1440],]</code></small> | ||
<small><code>}</code></small> | |||
|<small><code>{</code></small> | |||
<small><code> "error": 0,</code></small> | |||
<small><code> "message": "сообщение о статусе результата"</code></small> | |||
<small><code>}</code></small> | |||
|- | |||
! style="color:red;width: 15%" |'''DELETE /timeintervals/delete/{id}''' | |||
! colspan="2" |Удаление существующего интервала времени | |||
|- | |||
| colspan="2" | | |||
* <small>'''id''' - id интервала времени</small> | |||
|<small><code>{</code></small> | |||
<small><code> "error": 0,</code></small> | |||
<small><code> "message": "сообщение о статусе результата"</code></small> | |||
<small><code>}</code></small> | |||
|- | |||
! style="color:blue;width: 15%" |'''GET /timeintervals/get/{id}''' | |||
! colspan="2" |Получение конкретного временного интервала | |||
|- | |||
| colspan="2" | | |||
* <small>'''id''' - id интервала времени</small> | |||
| | |||
<small><code>{</code></small> | |||
<small><code>"error": 0,</code></small> | |||
<small><code>"timeinterval": {</code></small> | |||
<small><code>"id": "default",</code></small> | |||
<small><code>"name": "default",</code></small> | |||
<small><code>"days": "all",</code></small> | |||
<small><code>"weekdays": [</code></small> | |||
<small><code>1</code></small> | |||
<small><code>],</code></small> | |||
<small><code>"months": [</code></small> | |||
<small><code>1</code></small> | |||
<small><code>],</code></small> | |||
<small><code>"dates": [</code></small> | |||
<small><code>1</code></small> | |||
<small><code>],</code></small> | |||
<small><code>"intervals": [</code></small> | |||
<small><code>[0, 1440]</code></small> | |||
<small><code>]</code></small> | |||
<small><code>}</code></small> | |||
<small><code>}</code></small> | |||
|- | |||
! style="color:blue;width: 15%" |'''GET /timeintervals/list''' | |||
! colspan="2" |Получение списка временных интервалов | |||
|- | |||
| colspan="2" |<small>No parameters</small> | |||
| | |||
<small><code>{</code></small> | |||
<small><code>"error": 0,</code></small> | |||
<small><code>"timeintervals": []</code></small> | |||
<small><code>}</code></small> | |||
|- | |||
! style="color:orange;width: 15%" |'''PUT /timeintervals/modify/{id}''' | |||
! colspan="2" |Изменение существующего временного интервала | |||
|- | |||
| colspan="2" | | |||
*<small>'''payload''' как в '''POST /timeintervals/add'''</small> | |||
* <small>'''id''' - id списка</small> | |||
|<small><code>{</code></small> | |||
<small><code> "error": 0,</code></small> | |||
<small><code> "message": "сообщение о статусе результата"</code></small> | |||
<small><code>}</code></small> | |||
|- | |||
! colspan="3" |'''<u>Управление конфигурациями</u>''' | |||
|- | |||
! style="color:blue;width: 15%" |'''GET /configs/get/{id}''' | |||
! colspan="2" |Получение конкретной конфигурации | |||
|- | |||
| colspan="2" | | |||
* <small>'''id''' - id конфигурации</small> | |||
| | |||
<small><code>{</code></small> | |||
<small><code>"error": 0,</code></small> | |||
<small><code>"message": "success",</code></small> | |||
<small><code>"data": {</code></small> | |||
<small><code>"id": "limits",</code></small> | |||
<small><code>"params": {</code></small> | |||
<small><code>"watchdog": 60,</code></small> | |||
<small><code>"no_answer_timeout": 10,</code></small> | |||
<small><code>"dial_tries": 1,</code></small> | |||
<small><code>"max_channels": 2,</code></small> | |||
<small><code>"redial_timeout": 600</code></small> | |||
<small><code>}</code></small> | |||
<small><code>}</code></small> | <small><code>}</code></small> | ||
<small><code>}</code></small> | |||
|- | |||
! style="color:blue;width: 15%" |'''GET /configs/list''' | |||
! colspan="2" |Получения списка доступных конфигураций | |||
|- | |- | ||
| colspan="2" |<small>No parameters</small> | |||
| | | | ||
<code><small>{</small></code> | |||
<code><small>"error": 0,</small></code> | |||
<code><small>"message": "success",</small></code> | |||
<code><small>"data": []</small></code> | |||
<code><small>}</small></code> | |||
|- | |||
! style="color:orange;width: 15%" |'''PUT /configs/modify/{id}''' | |||
! colspan="2" |Изменение существующей конфигурации | |||
|- | |||
| colspan="2" | | | colspan="2" | | ||
<small><code>{</code></small> | |||
<small><code> "id": "string",</code></small> | |||
<small><code> "params": {}</code></small> | |||
<small><code>}</code></small> | |||
| | |||
<small><code>{</code></small> | |||
<small><code> "error": 0,</code></small> | |||
<small><code> "message": "сообщение о статусе результата"</code></small> | |||
<small><code>}</code></small> | |||
|- | |||
! colspan="3" |'''<u>Логирование</u>''' | |||
|- | |||
! style="color:blue;width: 15%" |'''GET /logs/logs''' | |||
! colspan="2" |Получение логов с указанной даты | |||
|- | |- | ||
| colspan="2" | | | colspan="2" | | ||
* <small>'''date''' - стартовая дата (формат: 2025-01-01)</small> | |||
* '''<small>id -</small>''' <small>id списка для фильтрации (опционально)</small> | |||
| | | | ||
<small><code>{</code></small> | |||
<small><code>"error": 0,</code></small> | |||
<small><code>"message": "success",</code></small> | |||
<small><code>"logs": [</code></small> | |||
<small><code>[</code></small> | |||
<small><code>{</code></small> | |||
<small><code>"uuid": "uuid",</code></small> | |||
<small><code>"channel": "voice",</code></small> | |||
<small><code>"source": "8000",</code></small> | |||
<small><code>"destination": "8000",</code></small> | |||
<small><code>"message": "Call to 8000 ended",</code></small> | |||
<small><code>"duration": "44",</code></small> | |||
<small><code>"status": "CALL_ENDED",</code></small> | |||
<small><code>"hangup_cause": "NORMAL_TEMPORARY_FAILURE",</code></small> | |||
<small><code>"sip_hangup_init": "<nowiki>sip:200</nowiki>",</code></small> | |||
<small><code>"metadata": null</code></small> | |||
<small><code>}</code></small> | |||
<small><code>]</code></small> | |||
<small><code>]</code></small> | |||
<small><code>}</code></small> | |||
|- | |||
! colspan="3" |'''<u>Лицензия</u>''' | |||
|- | |||
! style="color:blue;width: 15%" |'''GET /license/check''' | |||
! colspan="2" |Получение состояния лицензии | |||
|- | |||
| colspan="2" |<small>No parameters</small> | |||
| | |||
<small><code>{</code></small> | |||
<small><code>"error": 0,</code></small> | |||
<small><code>"uuid": "uuid",</code></small> | |||
<small><code>"remaining_licenses": "infinity",</code></small> | |||
<small><code>"threshold": 0</code></small> | |||
<small><code>}</code></small> | |||
|} | |} | ||
Текущая версия от 14:41, 25 августа 2025
Общее описание
Сервис массового обзвона и уведомлений, поддерживающий множественные каналы связи и гибкую настройку
Основные возможности:
- Выбор канала связи
- голосовые звонки - интеграция с FreeSWITCH для исходящих звонков
- telegram | VK - интеграция с SES для последующей отправки уведомления в мессенджер
- Управление списками обзвона
- CRUD операции - создание, чтение, изменение, удаление списков
- Импорт/Экспорт - загрузка и выгрузка контактов из CSV
- Автозагрузка - динамическое расширение списков через скрипт
- Планировщик - cron-подобное расписание запуска обзвонов
- Конфигурация и лимиты
- Глобальные настройки - централизованное управление конфигурацией
- Временные интервалы - точное управление временем работы
- Праздники - учет выходных дней при обзвонах
- Лимиты обзвона - контроль нагрузки и таймаутов
- Мониторинг и отчетность
- Реальное время - отслеживание статуса обзвонов
- Логирование - детальные логи всех звонков / уведомлений
- API - полный программный доступ ко всем функциям
Термины и определения
CLS (Call List Service) - сервис массового обзвона и уведомлений с поддержкой множественных каналов связи.
Swagger UI – интерактивная веб-консоль с кратким описанием методов API и возможностью выполнять запросы к сервису CLS в реальном времени.
Список обзвона (Call List) - набор контактов с метаданными для выполнения массовой рассылки или обзвона.
ListCaller - основной класс, управляющий выполнением кампании по конкретному списку.
Instance - активный экземпляр ListCaller, выполняющий обзвон.
Описание методов API
Запросы осуществляются по протоколу HTTP 1.1 на адрес сервера с доступным сервисом CLS. По умолчанию используется порт 6188/tcp.
Авторизация запросов не требуется. HTTP-запросы должны содержать заголовок "accept: application/json"
Содержимое документа зависит от результата выполнения запроса. При наличии ошибки в качестве ответа вернется переменная error=1 и описание в переменной message. Для удобства проверки методов по ссылке http://АДРЕС:6188 будет отображен интерфейс Swagger со всеми методами с возможностью их проверки.
| Управление обзвонами | ||
|---|---|---|
| POST /calls/call | Прямой звонок с номера на номер | |
{
|
{
| |
| POST /calls/start | Старт списка обзвона | оповещения | |
|
{
| |
| POST /calls/stop | Остановка списка обзвона | оповещения | |
|
{
| |
| Управление списками обзвона | оповещения | ||
| POST /lists/add | Добавление нового списка для обзвона | оповещения | |
{
|
{
| |
| DELETE /lists/delete/{id} | Удаление существующего списка для обзвона | оповещения | |
|
{
| |
| GET /lists/export/{id} | Экспорт списка для обзвона | оповещения в CSV файл | |
|
{
| |
| POST /lists/import/{id} | Экспорт списка для обзвона | оповещения из CSV файла | |
|
{
| |
| GET /lists/list | Получения всех списков для обзвона | оповещения из БД | |
| No parameters | {
| |
| GET /lists/{id} | Получение конкретного списка для обзвона | оповещения из БД | |
|
{
| |
| POST /lists/load/{id} | Дозагрузка в существующую инстанцию списка обзвона | оповещения элементов из скрипта | |
|
{
| |
| PUT /lists/modify/{id} | Изменение существующего списка для обзвона | оповещения | |
|
{
| |
| GET /lists/status/{id} | Получение статуса существующего списка для обзвона | оповещения | |
|
{
| |
| Управление инстанциями обзвона | оповещения | ||
| POST /instances/add/{list_id} | Создание инстанции обзвона | оповещения на основе списка, без запуска обзвона | оповещения | |
|
{
| |
| GET /instances/get/{instance_id} | Получить детальную информацию о конкретной инстанции | |
|
{
| |
| GET /instances/list | Получение списка инстанций | |
| No parameters | {
| |
| DELETE /instances/remove/{instance_id} | Удаление инстанции обзвона | оповещения | |
|
{
| |
| Управление временными интервалами | ||
| POST /timeintervals/add | Создание временного интервала | |
|
|
{
| |
| DELETE /timeintervals/delete/{id} | Удаление существующего интервала времени | |
|
{
| |
| GET /timeintervals/get/{id} | Получение конкретного временного интервала | |
|
| |
| GET /timeintervals/list | Получение списка временных интервалов | |
| No parameters |
| |
| PUT /timeintervals/modify/{id} | Изменение существующего временного интервала | |
|
{
| |
| Управление конфигурациями | ||
| GET /configs/get/{id} | Получение конкретной конфигурации | |
|
| |
| GET /configs/list | Получения списка доступных конфигураций | |
| No parameters |
| |
| PUT /configs/modify/{id} | Изменение существующей конфигурации | |
|
|
| |
| Логирование | ||
| GET /logs/logs | Получение логов с указанной даты | |
|
| |
| Лицензия | ||
| GET /license/check | Получение состояния лицензии | |
| No parameters |
| |