Действия

CLS. Руководство пользователя: различия между версиями

Материал из Флора AI

Нет описания правки
 
(не показаны 52 промежуточные версии 2 участников)
Строка 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" style="text-align: center"|'''<u>Управление обзвонами</u>'''
|-
! style="color:green;width: 20%" |'''POST /calls/call'''
! colspan="2" style="width: 80%" |Прямой звонок с номера на номер. Используется для проверки прохождения звонка.
|-
! style="color:blue|'''GET/cls/calls/list/tasks'''
! colspan="3"  |Получение задач для списка
|-
! style="color:blue" |'''GET/cls/calls/queues/status'''
! colspan="3"  |Получение статуса всех очередей
|-
|-
! style="color:green;width: 15%" |'''POST /calls/call'''
! style="color:green" |'''POST /calls/start'''
! colspan="2" style="width: 85%" |<small>Прямой звонок с номера на номер</small>
! colspan="2" |<nowiki>Старт списка обзвона | оповещения</nowiki>
|-
|-
| colspan="2" style="width: 50%" |<small><code>{</code></small>
! style="color:green" |'''POST /calls/stop'''
    <small><code>"source": "8000",</code></small>
! colspan="2" |<nowiki>Остановка списка обзвона | оповещения</nowiki>
 
|-
    <small><code>"destination": "6000",</code></small>
! colspan="3" style="text-align: center"|'''<u><nowiki>Управление списками обзвона | оповещения</nowiki></u>'''
 
|-
    <small><code>"limits": {</code></small>
! style="color:green" |'''POST /lists/add'''
 
! colspan="2" |<nowiki>Добавление нового списка для обзвона | оповещения</nowiki>
        <small><code>"no_answer_timeout": 10,</code></small>
|-
 
! style="color:red" |'''DELETE /lists/delete/{id}'''
        <small><code>"dial_tries": 1,</code></small>
! colspan="2" |<nowiki>Удаление существующего списка для обзвона | оповещения</nowiki>
 
|-
        <small><code>"max_channels": 2,</code></small>
! style="color:blue" |'''GET /lists/export/{id}'''
 
! colspan="2"  |<nowiki>Экспорт списка для обзвона | оповещения в CSV файл</nowiki>
        <small><code>"redial_timeout": 600,</code></small>
|-
 
! style="color:green" |'''POST /lists/import/{id}'''
        <small><code>"watchdog": 240</code></small>
! colspan="2"  |<nowiki>Экспорт списка для обзвона | оповещения из CSV файла</nowiki>
 
|-
    <small><code>},</code></small>
! style="color:blue" |'''GET /lists/list'''
 
! colspan="2" |<nowiki>Получения всех списков для обзвона | оповещения из БД</nowiki>
    <small><code>"metadata": {}</code></small>
|-
 
! style="color:blue" |'''GET /lists/{id}'''
<small><code>}</code></small>
! colspan="2" |<nowiki>Получение конкретного списка для обзвона | оповещения из БД</nowiki>
| style="width: 50%" |<small><code>{</code></small>
    <small><code>  "error": 0,</code></small>
 
    <small><code>  "message": "сообщение о статусе результата"</code></small>
 
<small><code>}</code></small>
|-
|-
! style="color:green;width: 15%" |'''POST /calls/start'''
! style="color:green" |'''POST /lists/load/{id}'''
! colspan="2" style="width: 85%" |<nowiki>Старт списка обзвона | оповещения</nowiki>
! colspan="2" |<nowiki>Дозагрузка в существующую инстанцию списка обзвона | оповещения элементов из скрипта</nowiki>
|-
|-
| colspan="2" style="width: 50%" |
! style="color:orange" |'''PUT /lists/modify/{id}'''
* <small>id - id списка</small>
! colspan="2" |<nowiki>Изменение существующего списка для обзвона | оповещения</nowiki>
| style="width: 50%" |<small><code>{</code></small>
    <small><code>  "error": 0,</code></small>
 
    <small><code>  "message": "сообщение о статусе результата"</code></small>
 
<small><code>}</code></small>
|-
|-
! style="color:green;width: 15%" |'''POST /calls/stop'''
! style="color:blue" |'''GET /lists/status/{id}'''
! colspan="2" style="width: 85%" |<nowiki>Остановка списка обзвона | оповещения</nowiki>
! colspan="2" |<nowiki>Получение статуса существующего списка для обзвона | оповещения</nowiki>
|-
|-
| colspan="2" style="width: 50%" |
! colspan="3" style="text-align: center"|'''<u><nowiki>Управление инстанциями обзвона | оповещения</nowiki></u>'''
* <small>id - id списка</small>
| style="width: 50%" |<small><code>{</code></small>
    <small><code>  "error": 0,</code></small>
 
    <small><code>  "message": "сообщение о статусе результата"</code></small>
 
<small><code>}</code></small>
|-
|-
! colspan="3" |<nowiki>Управление списками обзвона | оповещения</nowiki>
! style="color:green" |'''POST /instances/add/{list_id}'''
! colspan="2" |<nowiki>Создание инстанции обзвона | оповещения на основе списка, без запуска обзвона | оповещения</nowiki>
|-
|-
! style="color:green;width: 15%" |'''POST /lists/add'''
! style="color:blue" |'''GET /instances/get/{instance_id}'''
! colspan="2" style="width: 85%" |<nowiki>Добавление нового списка для обзвона | оповещения</nowiki>
! colspan="2" |Получить детальную информацию о конкретной инстанции
|-
|-
| colspan="2" style="width: 50%" |<small><code>{</code></small>
! style="color:blue" |'''GET /instances/list'''
<small><code>  "name": "Test Call List",</code> - имя списка</small>
! colspan="2" |Получение списка инстанций
 
<small><code>  "source": "8000",</code> - источник вызова | оповещения</small>
 
<small><code>  "limits": {</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>    "watchdog": 240</code></small>
 
<small><code>  },</code></small>
 
<small><code>  "dialed": 0,</code></small>
 
<small><code>  "timeintervals": [</code></small>
 
<small><code>    "default"</code> - id временного интервала</small>
 
<small><code>  ],</code></small>
 
<small><code>  "channel": "voice",</code> - используемый канал</small>
 
<small><code>  "channel_parameters": {</code> - используется для каналов telegram и vk</small>
 
<small><code>    "robot_id": "",</code></small>
 
<small><code>    "endpoint": ""</code></small>
 
<small><code>  },</code></small>
 
<small><code>  "script_before_dial": "",</code> - скрипт для выполнения перед каждым вызовом | оповещением</small>
 
<small><code>  "script": "",</code> - скрипт дозагрузки элементов для обзвона</small>
 
<small><code>  "autoload": false,</code> - автоматическая дозагрузка элементов для обзвона при старте списка</small>
 
<small><code>  "scheduler": [</code> - планировщик выполнения обзвона | оповещения</small>
 
<small><code>    "35 14 * * *"</code> - cron-расписание запуска обзвона</small>
 
<small><code>  ],</code></small>
 
<small><code>  "items": [</code></small>
 
<small><code>    {</code></small>
 
<small><code>      "destinations": [</code> - телефоны | user_id для каналов отличных от voice</small>
 
<small><code>        "6000"</code></small>
 
<small><code>      ],</code></small>
 
<small><code>      "metadata": {}</code> - дополнительная произвольная информация</small>
 
<small><code>    }</code></small>
 
<small><code>  ]</code></small>
 
<small><code>}</code></small>
| style="width: 50%" |<code><small>{
  <code>"error": 0,</small></code>
 
  <code><small>"message": "success",</small></code>
 
  <code><small>"id": "123e4567-e89b-12d3-a456-426614174000"</small></code>
 
<code><small>}</small></code>
|-
|-
! style="color:red;width: 15%" |'''DELETE /lists/delete/{id}'''
! style="color:red" |'''DELETE /instances/remove/{instance_id}'''
! colspan="2" style="width: 85%" |<nowiki>Удаление существующего списка для обзвона | оповещения</nowiki>
! colspan="2" |<nowiki>Удаление инстанции обзвона | оповещения</nowiki>
|-
|-
| colspan="2" style="width: 50%" |
! colspan="3" style="text-align: center"|'''<u>Управление временными интервалами</u>'''
* <small>id - id списка</small>
|<code><small>{</small></code>
    <small><code>  "error": 0,</code></small>
 
    <small><code>  "message": "сообщение о статусе результата"</code></small>
 
<code><small>}</small></code>
|-
|-
! style="color:blue;width: 15%" |'''GET /lists/export/{id}'''
! style="color:green" |'''POST /timeintervals/add'''
! colspan="2" style="width: 85%" |<nowiki>Экспорт списка для обзвона | оповещения в CSV файл</nowiki>
! colspan="2" |Создание временного интервала
|-
|-
| colspan="2" style="width: 50%" |
! style="color:red" |'''DELETE /timeintervals/delete/{id}'''
* <small>id - id списка</small>
! colspan="2" |Удаление существующего интервала времени
|<small><code>{</code></small>
    <small><code>  "error": 0,</code></small>
 
    <small><code>  "message": "сообщение о статусе результата"</code></small>
 
<small><code>}</code></small>
|-
|-
! style="color:green;width: 15%" |'''POST /lists/import/{id}'''
! style="color:blue" |'''GET /timeintervals/get/{id}'''
! colspan="2" style="width: 85%" |<nowiki>Экспорт списка для обзвона | оповещения из CSV файла</nowiki>
! colspan="2" |Получение конкретного временного интервала
|-
|-
| colspan="2" |
! style="color:blue" |'''GET /timeintervals/list'''
* <small>csv - csv файл с элементами списка</small>
! 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 /lists/list'''
! style="color:orange" |'''PUT /timeintervals/modify/{id}'''
! colspan="2" style="width: 85%" |<nowiki>Получения всех списков для обзвона | оповещения из БД</nowiki>
! colspan="2" |Изменение существующего временного интервала
|-
|-
| colspan="2" style="width: 50%" |<small>No parameters</small>
! colspan="3" style="text-align: center"|'''<u>Управление конфигурациями</u>'''
| style="width: 50%" |<code><small>{</small></code>    <code><small>"error": 0,</small></code>
<code><small>"lists": []</small></code>
<code><small>}</small></code>
|-
|-
! style="color:green;width: 15%" |'''POST /lists/load/{id}'''
! style="color:blue" |'''GET /configs/get/{id}'''
! colspan="2" style="width: 85%" |<nowiki>Дозагрузка в существующую инстанцию списка обзвона | оповещения элементов из скрипта</nowiki>
! colspan="2" |Получение конкретной конфигурации
|-
|-
| colspan="2" style="width: 50%" |
! style="color:blue" |'''GET /configs/list'''
* <small>id - id списка</small>
! colspan="2" |Получения списка доступных конфигураций
| style="width: 50%" |
|-
|-
! style="color:orange;width: 15%" |'''PUT /lists/modify/{id}'''
! style="color:orange" |'''PUT /configs/modify/{id}'''
! colspan="2" style="width: 85%" |<nowiki>Изменение существующего списка для обзвона | оповещения</nowiki>
! colspan="2" |Изменение существующей конфигурации
|-
|-
| colspan="2" style="width: 50%" |
! colspan="3" style="text-align: center"|'''<u>Логирование</u>'''
| style="width: 50%" |
|-
|-
! style="color:blue;width: 15%" |'''GET /lists/status/{id}'''
! style="color:blue" |'''GET /logs/logs'''
! colspan="2" |<nowiki>Получение статуса существующего списка для обзвона | оповещения</nowiki>
! colspan="2" |Получение логов с указанной даты
|-
|-
| colspan="2" |
! colspan="3" style="text-align: center"|'''<u>Лицензия</u>'''
* <small>id - id списка</small>
|
|-
|-
| colspan="3" |<nowiki>Управление инстанциями обзвона | оповещения</nowiki>
! style="color:blue" |'''GET /license/check'''
! colspan="2" |Получение состояния лицензии
|}
|}

Текущая версия от 17:45, 16 января 2026

Общее описание

Сервис массового обзвона и уведомлений, поддерживающий множественные каналы связи и гибкую настройку

Основные возможности:
  • Выбор канала связи
    • голосовые звонки - интеграция с 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 со всеми методами с возможностью их проверки.

Описание методов API
Управление обзвонами
POST /calls/call Прямой звонок с номера на номер. Используется для проверки прохождения звонка.
GET/cls/calls/list/tasks Получение задач для списка
GET/cls/calls/queues/status Получение статуса всех очередей
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 Получения всех списков для обзвона | оповещения из БД
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 Получение списка инстанций
DELETE /instances/remove/{instance_id} Удаление инстанции обзвона | оповещения
Управление временными интервалами
POST /timeintervals/add Создание временного интервала
DELETE /timeintervals/delete/{id} Удаление существующего интервала времени
GET /timeintervals/get/{id} Получение конкретного временного интервала
GET /timeintervals/list Получение списка временных интервалов
PUT /timeintervals/modify/{id} Изменение существующего временного интервала
Управление конфигурациями
GET /configs/get/{id} Получение конкретной конфигурации
GET /configs/list Получения списка доступных конфигураций
PUT /configs/modify/{id} Изменение существующей конфигурации
Логирование
GET /logs/logs Получение логов с указанной даты
Лицензия
GET /license/check Получение состояния лицензии