Действия

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

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

(Новая страница: «===== '''Общее описание''' ===== Сервис предназначен для преобразования текста в речь. Входными данными для сервиса является текст, результатом работы будет аудиофайл. ====='''Термины и определения'''===== Text-to-speech server (TTS) – сервис синтеза речи. Модель (голос) – мод...»)
 
Нет описания правки
Строка 1: Строка 1:
===== '''Общее описание''' =====
===== '''Общее описание''' =====
Сервис предназначен для преобразования текста в речь. Входными данными для сервиса является текст, результатом работы будет аудиофайл.
Сервис массового обзвона и уведомлений, поддерживающий множественные каналы связи и гибкую настройку




====='''Термины и определения'''=====
'''Основные возможности:'''
Text-to-speech server (TTS) – сервис синтеза речи.
 
* Выбор канала связи
** голосовые звонки - интеграция с '''FreeSWITCH''' для исходящих звонков
** telegram | VK - интеграция с '''SES''' для последующей отправки уведомления в мессенджер
* Управление списками обзвона
** CRUD операции - создание, чтение, изменение, удаление списков
** Импорт/Экспорт - загрузка и выгрузка контактов из CSV
** Автозагрузка - динамическое расширение списков через скрипт
** Планировщик - cron-подобное расписание запуска обзвонов
* Конфигурация и лимиты
** Глобальные настройки - централизованное управление конфигурацией
** Временные интервалы - точное управление временем работы
** Праздники - учет выходных дней при обзвонах
** Лимиты обзвона - контроль нагрузки и таймаутов
* Мониторинг и отчетность
** Реальное время - отслеживание статуса обзвонов
** Логирование - детальные логи всех звонков / уведомлений
** API - полный программный доступ ко всем функциям


Модель (голос) – модель нейронной сети, отвечающая за синтез спектрограммы из текста. От модели зависит, каким голосом будет синтезирован текст.


Вокодер – модель нейронной сети, отвечающая за синтез аудиоданных из спектрограммы.
====='''Термины и определения'''=====
CLS (Call List Service) - сервис массового обзвона и уведомлений с поддержкой множественных каналов связи.


Swagger UI – интерактивная веб-консоль с кратким описанием методов API и возможностью выполнять запросы к сервису TTS в реальном времени
Swagger UI – интерактивная веб-консоль с кратким описанием методов API и возможностью выполнять запросы к сервису CLS в реальном времени.


Список обзвона (Call List) - набор контактов с метаданными для выполнения массовой рассылки или обзвона.


ListCaller - основной класс, управляющий выполнением кампании по конкретному списку.


Instance - активный экземпляр ListCaller, выполняющий обзвон.


===== '''Описание методов API''' =====
===== '''Описание методов API''' =====
Запросы осуществляются по протоколу HTTP 1.1 на адрес сервера с доступным сервисом TTS. По умолчанию используется порт 6186/tcp.
Запросы осуществляются по протоколу HTTP 1.1 на адрес сервера с доступным сервисом CLS. По умолчанию используется порт 6188/tcp.


Авторизация запросов не требуется. HTTP-запросы должны содержать заголовок <code>"accept: application/json"</code>
Авторизация запросов не требуется. HTTP-запросы должны содержать заголовок <code>"accept: application/json"</code>


Ответ сервиса представляет собой JSON или текстовый документ в кодировке UTF-8, или двоичный файл.
Содержимое документа зависит от результата выполнения запроса. При наличии ошибки в качестве ответа вернется переменная error=1 и описание в переменной message. Для удобства проверки методов по ссылке http://АДРЕС:6188 будет отображен интерфейс Swagger со всеми методами с возможностью их проверки.
 
Содержимое документа зависит от результата выполнения запроса. При наличии ошибки в качестве ответа вернется переменная error=1 и описание в переменной message. Для удобства проверки методов по ссылке http://АДРЕС:6186 будет отображен интерфейс Swagger со всеми методами с возможностью их проверки.


{| class="wikitable" style="width: 110%"
{| class="wikitable" style="width: 110%"
|+''Описание методов API''
|+''Описание методов API''
! style="color:blue;width: 15%" |'''GET/tts/'''
! colspan="3" |Управление обзвонами
! colspan="2" style="width: 85%" |<small>Вывод списка моделей (голосов синтеза).</small>
|-
| colspan="2" style="width: 50%" |<small>Входные параметры отсутствуют</small>
| style="width: 50%" |<small><code>{ models: [model1,...,modelN] }</code></small>
|-
! style="color:blue;width: 15%" |'''GET/tts/dictionary/export'''
! colspan="2" style="width: 85%" |<small>Выгрузка пользовательского словаря ударений.</small>
|-
| colspan="2" style="width: 50%" |<small>Входные параметры отсутствуют</small>
| style="width: 50%" |<small>простой текст - строки с словом и его интерперетацией с ударением</small>
|-
! style="color:blue;width: 15%" |'''GET/tts/dictionary/get'''
! colspan="2" style="width: 85%" |<small>Выгрузка пользовательского словаря ударений в виде json.</small>
|-
|-
| colspan="2" style="width: 50%" |<small>Входные параметры отсутствуют</small>
! style="color:blue;width: 15%" |'''POST /calls/call'''
| style="width: 50%" |<small><code>[</code></small>  <small><code>[   "слово",   "замена слова с удар+ением"],</code></small>
! colspan="2" style="width: 85%" |<small>Прямой звонок с номера на номер</small>
 
<small><code>[   "слово2",   "замена слова2 с удар+ением"],</code></small>
 
<small><code>...</code></small>
 
<small><code>]</code></small>
|-
! style="color:green;width: 15%" |'''POST/tts/dictionary/import'''
! colspan="2" style="width: 85%" |<small>Загрузка пользовательского словаря ударений. Текущий словарь будет переписан.</small>
|-
|-
| colspan="2" style="width: 50%" |
| colspan="2" style="width: 50%" |
* <small>'''csv''' — файл строк со словом и его интерпретацией с ударением.</small>
* <small>'''source''' - откуда совершить звонок</small>
| style="width: 50%" |<small><code>{</code></small>
* <small>'''destination''' - куда позвонить</small>
 
* <small>'''metadata'''</small> - <small>метаданные звонка, которые запишутся в логи. JSON строка любого вида</small>
<small><code>  "error": 0,</code></small>
* <small>'''limits''' - лимиты звонка, если не указать, то применятся глобальные параметры из конфигурации в бд. JSON строка следующего вида:</small>
 
<small><code>  "message": "сообщение о статусе результата"</code></small>


<small><code>}</code></small>
<code><small>{</small></code>
|-
! style="color:green;width: 15%" |'''POST/tts/dictionary/put'''
! colspan="2" style="width: 85%" |<small>Загрузка пользовательского словаря ударений в виде json. Текущий словарь будет переписан.</small>
|-
| colspan="2" style="width: 50%" |
* <small>'''json''' — строка следующего вида:</small>


<small><code>[</code></small>
<code><small>"watchdog": 60,</small></code>


<small><code>[   "слово",   "замена слова с удар+ением" ],</code></small>
<code><small>"no_answer_timeout": 10,</small></code>


<small><code>"слово2",   "замена слова2 с удар+ением" ],</code></small>
<code><small>"dial_tries": 1,</small></code>


<small><code>...</code></small>
<code><small>"max_channels": 2,</small></code>


<small><code>]</code></small>
<code><small>"redial_timeout": 600</small></code>
| style="width: 50%" |<small><code>{</code></small>


<small><code>  "error": 0,</code></small>
<code><small>}</small></code>
| style="width: 50%" |<small><code>{</code></small><small><code>  "error": 0,</code></small>


<small><code>  "message": "сообщение о статусе результата"</code></small>
<small><code>  "message": "сообщение о статусе результата"</code></small>
Строка 86: Строка 74:
<small><code>}</code></small>
<small><code>}</code></small>
|-
|-
! style="color:green;width: 15%" |'''POST/tts/normalize'''
! style="color:blue;width: 15%" |'''POST /calls/start'''
! colspan="2" style="width: 85%" |<small>Нормализация текста — перевод цифр в слова и расстановка ударений (ударения только в нормализованной части фразы), например «в понедельник 10.10.2025» -> «в понедельник дес+ятого октябр+я две т+ысячи дв+адцать п+ятого г+ода».</small>
! colspan="2" style="width: 85%" |
|-
| colspan="2" style="width: 50%" |
| style="width: 50%" |
|-
! style="color:blue;width: 15%" |'''POST /calls/stop'''
! colspan="2" style="width: 85%" |
|-
|-
| colspan="2" style="width: 50%" |
| colspan="2" style="width: 50%" |
* <small>'''text''' — фраза для нормализации.</small>
| style="width: 50%" |
| style="width: 50%" |<small><code>{</code></small>
|-
 
! colspan="3" |Управление списками
<small><code>  "error": 0,</code></small>
|-
 
! style="color:green;width: 15%" |'''POST /lists/add'''
<small><code>  "message": "success",</code></small>
! colspan="2" style="width: 85%" |
 
|-
<small><code>  "text": "нормализованный текст"</code></small>
| colspan="2" style="width: 50%" |
 
| style="width: 50%" |
<small><code>}</code></small>
|-
! style="color:green;width: 15%" |'''DELETE /lists/delete/{id}'''
! colspan="2" style="width: 85%" |
|-
| colspan="2" style="width: 50%" |
|
|-
|-
! style="color:green;width: 15%" |'''POST/tts/revoice/{revoicer}'''
! style="color:green;width: 15%" |'''GET /lists/export/{id}'''
! colspan="2" style="width: 85%" |<small>Модификация или искажение голоса</small>
! colspan="2" style="width: 85%" |
|-
|-
| colspan="2" style="width: 50%" |
| colspan="2" style="width: 50%" |
* <small>'''wav''' — аудиофайл для обработки.</small>
|
* <small>'''revoicer''' — модель модификации голоса.</small>
|-
| style="width: 50%" |<small>wav файл с модифицированным (искаженным) голосом.</small>
! style="color:green;width: 15%" |'''POST /lists/import/{id}'''
! colspan="2" style="width: 85%" |
|-
|
|
|
|-
|-
! style="color:blue;width: 15%" |'''GET/tts/revoicers'''
! style="color:blue;width: 15%" |'''GET /lists/list'''
! colspan="2" style="width: 85%" |<small>Перечень моделей модификации или искажения голоса. Модели поставляются только в составе дистрибутива. Модель distortion — искажение голоса, делает голос неузнаваемым и речь неразборчивой.</small>
! colspan="2" style="width: 85%" |
|-
|-
| colspan="2" style="width: 50%" |<small>Входные параметры отсутствуют</small>
| colspan="2" style="width: 50%" |
| style="width: 50%" |<small>[  "distortion" ]</small>
| style="width: 50%" |
|-
|-
! style="color:blue;width: 15%" |'''GET/tts/split'''
! style="color:blue;width: 15%" |
! colspan="2" style="width: 85%" |<small>Разбивка текста на фразы. Текст из нескольких предложений разбивает на отдельные фразы. Фразы отдаёт списком.</small>
! colspan="2" style="width: 85%" |
|-
|-
| colspan="2" style="width: 50%" |
| colspan="2" style="width: 50%" |
* <small>'''text''' - текст для обработки</small>
| style="width: 50%" |
| style="width: 50%" |<small>{  "error": 0,</small>
 
<small>  "message": "success",</small>
 
<small>  "phrases": [ "фраза 1", "фраза 2", ....  "фраза N"  ] }</small>
|-
|-
! style="color:green;width: 15%" |'''POST/tts/synthesize/{id}'''
! style="color:green;width: 15%" |
! colspan="2" style="width: 85%" |<small>Синтез звукового файла из текста для фраз большого размера — тип запроса «POST» позволяет отправку больших текстов.</small><small><small>'''ВНИМАНИЕ''': аналогичный метод GET теперь отсутствует.</small>
! colspan="2" style="width: 85%" |
|-
|-
| colspan="2" style="width: 50%" |
| colspan="2" style="width: 50%" |
* <small>'''ID''' — имя модели</small>
| style="width: 50%" |
* <small>'''text''' — текст синтезируемой фразы</small>
* <small>'''rate''' — скорость речи</small>
* <small>'''pitch''' — высота (тон)</small>
* <small>'''volume''' — громкость</small>
* <small>'''frequency''' — частота дискретизации (по умолчанию 22050 Гц)</small>
* <small>'''format''' - формат файла результата (wav, opus, ogg, mp3)</small>
* <small>'''link''' - если 1, то вернуть только ссылку на файл</small>
| style="width: 50%" |<small>файл с синтезированой фразой</small>
|-
|-
! style="color:blue;width: 15%" |'''GET/license/check'''
! style="color:blue;width: 15%" |
! colspan="2" |<small>Проверка лицензии</small>
! colspan="2" |
|-
|-
| colspan="2" |<small>Входные параметры отсутствуют</small>
| colspan="2" |
|<small>Пример '''неограниченной''' лицензии:
|
 
|}
</small><code><small>{</small></code>
 
    <code><small>"error": 0,</small></code>
 
    <code><small>"uuid": "362e51300b1029f9b45fb8d58b2a91bf",</small></code>   
 
    <code><small>"remaining_licenses": "infinity",</small></code>
 
    <code><small>"threshold": 0</small></code>
 
<code><small>}</small></code>
 
<small>Пример '''ограниченной''' лицензии:
 
</small><code><small>{</small></code>
 
    <code><small>"error": 0,</small></code>
 
    <code><small>"uuid": "362e51300b1029f9b45fb8d58b2a91bf",</small></code>   
 
    <code><small>"remaining_licenses": 100,</small></code>
 
    <code><small>"threshold": 100</small></code>
 
<code><small>}</small></code>

Версия от 17:18, 30 июля 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 - откуда совершить звонок
  • destination - куда позвонить
  • metadata - метаданные звонка, которые запишутся в логи. JSON строка любого вида
  • limits - лимиты звонка, если не указать, то применятся глобальные параметры из конфигурации в бд. JSON строка следующего вида:

{

"watchdog": 60,

"no_answer_timeout": 10,

"dial_tries": 1,

"max_channels": 2,

"redial_timeout": 600

}

{  "error": 0,

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

}

POST /calls/start
POST /calls/stop
Управление списками
POST /lists/add
DELETE /lists/delete/{id}
GET /lists/export/{id}
POST /lists/import/{id}
GET /lists/list