Действия

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

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

Нет описания правки
Нет описания правки
Строка 289: Строка 289:
| colspan="2" |
| colspan="2" |
* <small>'''id''' - id списка | инстанции (одно и тоже)</small>
* <small>'''id''' - id списка | инстанции (одно и тоже)</small>
|<small>{</small><small>"id": "86c08271-8415-4ba5-bcf1-e1115a602bd8",</small>
|<code>{
<small>"name": "Test Call List",</small>
"id": "86c08271-8415-4ba5-bcf1-e1115a602bd8",
<small>"source": "8000",</small>
"name": "Test Call List",
<small>"limits":</small>
"source": "8000",
<small>{</small><small>"no_answer_timeout": 5,</small><small>"dial_tries": 1,</small><small>"max_channels": 2,</small><small>"redial_timeout": 200,</small><small>"watchdog": 60</small><small>},</small><small>"timeintervals": ["default" ],</small><small>"holidays": [ "2025-09-14"],</small>
"limits": {
 
"no_answer_timeout": 5,
<small>"channel": "voice",</small>
"dial_tries": 1,
<small>"running": true,</small>
"max_channels": 2,
<small>"progress":</small>
"redial_timeout": 200,
<small>{</small><small>"total_items": 1,</small><small>"processed_items": 1,</small><small>"completed": false,</small><small>"reason": ""</small>
"watchdog": 60
 
},
<small>},</small>
"timeintervals": [
<small>"job_info":</small>
"default"
<small>{</small>
],
<small>"has_job": true,</small><small>"job_id": "86c08271-8415-4ba5-bcf1-e1115a602bd8",</small><small>"next_run": "2025-12-24 20:00:00+03:00"</small><small>},</small><small>"created": "2025-08-18T14:57:17.762777",</small><small>"items":</small>
"holidays": [
 
"2025-09-14",
<small>[</small>
"2025-09-28"
<small>{</small><small>"destinations": [ "6000" ],</small><small>"metadata": {}</small><small>},</small>
],
 
"channel": "voice",
<small>}</small>
"running": true,
<small>]</small>
"progress": {
<small>}</small>
"total_items": 56,
"processed_items": 56,
"completed": false,
"reason": ""
},
"job_info": {
"has_job": true,
"job_id": "86c08271-8415-4ba5-bcf1-e1115a602bd8",
"next_run": "2025-12-24 20:00:00+03:00"
},
"created": "2025-08-18T14:57:17.762777",
"items": [
{
"destinations": [
"6000"
],
"metadata": {}
},
]
}</code>
|-
|-
! style="color:blue;width: 15%" |'''GET /instances/list'''
! style="color:blue;width: 15%" |'''GET /instances/list'''

Версия от 17:05, 18 августа 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 со всеми методами с возможностью их проверки.

Описание методов API
Управление обзвонами
POST /calls/call Прямой звонок с номера на номер
{
   "source": "8000",
   "destination": "6000",
   "limits": {
       "no_answer_timeout": 10,
       "dial_tries": 1,
       "max_channels": 2,
       "redial_timeout": 600,
       "watchdog": 240
   },
   "metadata": {}

}

{
     "error": 0,
     "message": "сообщение о статусе результата"

}

POST /calls/start Старт списка обзвона | оповещения
  • id - id списка
{
     "error": 0,
     "message": "сообщение о статусе результата"

}

POST /calls/stop Остановка списка обзвона | оповещения
  • id - id списка
{
     "error": 0,
     "message": "сообщение о статусе результата"

}

Управление списками обзвона | оповещения
POST /lists/add Добавление нового списка для обзвона | оповещения
{

  "name": "Test Call List", - имя списка

  "source": "8000", - источник вызова | оповещения

  "limits": { - лимиты для вызова (опционально)

    "no_answer_timeout": 10,

    "dial_tries": 1,

    "max_channels": 2,

    "redial_timeout": 600,

    "watchdog": 240

  },

  "dialed": 0,

  "timeintervals": [

    "default" - id временного интервала

  ],

  "channel": "voice", - используемый канал

  "channel_parameters": { - используется для каналов telegram и vk

    "robot_id": "",

    "endpoint": ""

  },

  "script_before_dial": "", - скрипт для выполнения перед каждым вызовом | оповещением

  "script": "", - скрипт дозагрузки элементов для обзвона

  "autoload": false, - автоматическая дозагрузка элементов для обзвона при старте списка

  "scheduler": [ - планировщик выполнения обзвона | оповещения

    "35 14 * * *" - cron-расписание запуска обзвона

  ],

  "items": [

    {

      "destinations": [ - телефоны | user_id для каналов отличных от voice

        "6000"

      ],

      "metadata": {} - дополнительная произвольная информация

    }

  ]

}

{
 "error": 0,
 "message": "success",
 "id": "123e4567-e89b-12d3-a456-426614174000"

}

DELETE /lists/delete/{id} Удаление существующего списка для обзвона | оповещения
  • id - id списка
{
     "error": 0,
     "message": "сообщение о статусе результата"

}

GET /lists/export/{id} Экспорт списка для обзвона | оповещения в CSV файл
  • id - id списка
{
     "error": 0,
     "message": "сообщение о статусе результата"

}

POST /lists/import/{id} Экспорт списка для обзвона | оповещения из CSV файла
  • csv - csv файл с элементами списка
  • id - id списка
{
     "error": 0,
     "message": "сообщение о статусе результата"

}

GET /lists/list Получения всех списков для обзвона | оповещения из БД
No parameters {
   "error": 0,
   "lists": []

}

POST /lists/load/{id} Дозагрузка в существующую инстанцию списка обзвона | оповещения элементов из скрипта
  • id - id списка
{
     "error": 0,
     "message": "сообщение о статусе результата"

}

PUT /lists/modify/{id} Изменение существующего списка для обзвона | оповещения
  • payload как в POST /lists/add
  • id - id списка
{
     "error": 0,
     "message": "сообщение о статусе результата"

}

GET /lists/status/{id} Получение статуса существующего списка для обзвона | оповещения
  • id - id списка
{
   "error": 0,{
   "status": {
       "total_items": 0,
       "processed_items": 0,
       "completed": false,{
       "reason": "",
       "running": false
   }

}

Управление инстанциями обзвона | оповещения
POST /instances/add/{list_id} Создание инстанции обзвона | оповещения на основе списка, без запуска обзвона | оповещения
  • id - id списка
{
     "error": 0,
     "message": "сообщение о статусе результата"

}

GET /instances/get/{instance_id} Получить детальную информацию о конкретной инстанции
  • id - id списка | инстанции (одно и тоже)
{

"id": "86c08271-8415-4ba5-bcf1-e1115a602bd8", "name": "Test Call List", "source": "8000", "limits": { "no_answer_timeout": 5, "dial_tries": 1, "max_channels": 2, "redial_timeout": 200, "watchdog": 60 }, "timeintervals": [ "default" ], "holidays": [ "2025-09-14", "2025-09-28" ], "channel": "voice", "running": true, "progress": { "total_items": 56, "processed_items": 56, "completed": false, "reason": "" }, "job_info": { "has_job": true, "job_id": "86c08271-8415-4ba5-bcf1-e1115a602bd8", "next_run": "2025-12-24 20:00:00+03:00" }, "created": "2025-08-18T14:57:17.762777", "items": [ { "destinations": [ "6000" ], "metadata": {} }, ] }

GET /instances/list Получение списка инстанций
No parameters
DELETE /instances/remove/{instance_id} Удаление инстанции обзвона | оповещения
id - id списка | инстанции (одно и тоже) {
     "error": 0,
     "message": "сообщение о статусе результата"

}

Управление временными интервалами