Действия

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

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

(Добавление информации о лицензировании)
Нет описания правки
Строка 86: Строка 86:
|logs/
|logs/
|Путь к папке логов.
|Путь к папке логов.
|-
|logs.debug
|false
|Режим расширенного логирования.
|-
|-
|logs.backups
|logs.backups
Строка 94: Строка 98:
|5242880
|5242880
|Максимальный размер текущего лог-файла в байтах.
|Максимальный размер текущего лог-файла в байтах.
|-
|storage.audio.web
|/opt/ses/storage/web
|Путь для временного хранения фрагментов аудио веб сессий
|-
|storage.audio.hot
|/opt/ses/storage/hot
|Путь к "горячему" хранилищу аудиоданных
|-
|storage.audio.cold
|null
|Путь к "холодному" хранилищу аудиоданных, куда переливаются данные из "горячего" хранилища.
|-
|-
|servers.{service}.url
|servers.{service}.url
Строка 154: Строка 170:


<small>}</small>
<small>}</small>
|-
|connectors.freeswitch
|{}
|Номера внутренних телефонов внутри freeswitch с привязкой к роботам
<small>"5000": {</small>
<small>        "robot": "ffeaa99a-13d2-4bff-b458-1231c884f8ee"</small>
<small> }</small>
|-
|vad.listening.maxLength
|10000
|Максимальная длина звукового фрагмента
|-
|vad.listening.minSpeech
|120
|Минимальный отрезок речи, который считать значимым
|-
|vad.listening.skipSilence
|60
|Не считать тишиной отрезки, короче данного значения
|-
|vad.listening.maxSilence
|1200
|Максимальная длительность тишины перед отправкой фрагмента
|-
|vad.listening.speechWaiting
|4000
|Длительность ожидания начала речи
|-
|vad.playing.maxLength
|2000
|Максимальная длина звукового фрагмента в режиме активного слушания
|-
|vad.playing.minSpeech
|60
|Минимальный отрезок речи, который считать значимым в режиме активного слушания
|-
|vad.playing.skipSilence
|60
|Не считать тишиной отрезки, короче данного значения в режиме активного слушания
|-
|vad.playing.maxSilence
|200
|Максимальная длительность тишины перед отправкой фрагмента в режиме активного слушания
|-
|cluster.logfile
|logs/sync.log
|Файл логов синхронизации есть только на главном сервере кластера
|-
|cluster.statusFile
|logs/sync.status
|Статус задачи синхронизации есть только на главном сервере кластера
|-
|cluster.nodes
|[ ]
|Перечень подчиненных нод для синхронизации изменений заполняется только на главном сервере кластера
|-
|-
|tmp
|tmp
|"/tmp/ses"
|"/tmp/ses"
|Dременная папка.
|Временная папка.
|}
|}


Строка 244: Строка 317:
==='''Протоколы и порты'''===
==='''Протоколы и порты'''===


Сервис использует порты 6157/tcp, 6170/tcp и 6190/tcp для доступа к API-интерфейсу и порт 6191/tcp для WebSocket-сервера. Порт 6190 может быть изменен в конфигурационном файле.
Сервис использует порты 6190/tcp для доступа к API-интерфейсу и порт 6191/tcp для WebSocket-сервера. Порт 6190 может быть изменен в конфигурационном файле.
 
 


==='''Журналы работы'''===
==='''Журналы работы'''===

Версия от 15:48, 3 июля 2025

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

Сервис предназначен для сценарных машин.


Термины и определения

Script Engine Service (SES) – сервис, обеспечивающий работу сценарных машин.


Требования к окружению

В процессе работы сервис взаимодействует со следующими сервисами:

  • UPS – настройка осуществляется через файл /opt/ups/config.json
  • SMC, SEE, SPR, TTS, SBS, QAS – настройка осуществляется через файл /opt/ses/config.json.


Установка ses

Дистрибутив распространяется в виде установочных пакетов для окружения и сервиса. Загрузите установочные пакеты на сервер и выполните команды для вашей системы в каталоге с пакетом.

Перед установкой непосредственно сервиса необходимо установить сервисный пакет окружения.

  • Установка/обновление ses осуществляется скриптом chmod +x ./ses-<версия>-<релиз>.sh && ./ses-<версия>-<релиз>.sh -i с правами администратора. Список всех ключей инсталлятора можно посмотреть, запустив инсталлятор ./ses-<версия>-<релиз>.sh без ключей.
  • Загрузить последнюю версию продукта curl -s "https://repo.connect2ai.net/api/ses/new" --user '[user]:[pass]' 2>&1 | bash или в интерактивном режиме bash -c "$(curl -s https://repo.connect2ai.net/api/ses --user '[user]:[pass]' 2>&1)".
  • Обновить ses /opt/ses/inupdate в интерактивном режиме. Или запустить с ключом:
    • /opt/ses/inupdate -b – обновить до последней beta версии;
    • /opt/ses/inupdate -r – обновить до последней release версии;
    • /opt/ses/inupdate -n – обновить до последней версии (неважно beta или release).
  • Проверить актуальную версию продукта curl -s "https://repo.connect2ai.net/api/ses/version.
  • Посмотреть лог изменений curl -s "https://repo.connect2ai.net/api/ses/changelog" --user '[user]:[pass]'.
  • Полное описание всех команд API репозитория можно найти по ссылке https://repo.connect2ai.net/api. [user]:[pass] – это тот же логин и пароль, что и от Nextcloud.
  • В папке с продуктом можно добавить 2 файла конфигурации (допускается один общий файл на все продукты в папке с окружением /opt/pve/):
    • echo -n "[user]:[pass]" > /opt/ses/.userapi (это файл авторизации в API, нужен для обновления и загрузки моделей)
    • echo -n "http://example.com:3128 [user] [password]" > /opt/ses/.proxy (это файл конфигурации proxy, необходим для обновления и загрузки моделей, при отсутствующем прямом подключении к интернету)

При обновлении следующий список файлов и папок сохраняется: .userapi, .proxy, logs, nnets, config.json, cache, pretrained, pve, data. Сервис не требует остановки и возвращается в актуальное состояние после обновления.

Не забудьте запустить сервис и включить в автозапуск в системе:

sudo systemctl enable ses.service && sudo systemctl start ses.service

Удостоверьтесь, что сервис стартовал:

systemctl status ses.service

Разрешите доступ к портам 6157/tcp, 6170/tcp, 6191/tcp, а также порту, определенном в конфиге (по умолчанию 6190/tcp) на нужном интерфейсе.


Лицензия

Сервис не функционирует без действующей лицензии. Информация о лицензии хранится в файле:

/opt/ses/license.json

Файл лицензии должен соответствовать следующему формату:

{"service": "ses", "expire": "2045-01-01", "licenses": , "key": ""}

Для получения лицензии необходимо:

1. Запустить сервис systemctl start ses и извлечь UUID, указанный в файле /opt/ses/logs/log.txt

2. Передать полученный UUID руководителю проекта для оформления лицензии.


Настройка сервиса

Файл config.json

Настройка параметров сервиса ses производится в файле /opt/ses/config.json

Описание параметров приведено в таблице

Параметр По умолчанию Назначение
port 6190 Порт API интерфейса используется в UPS — настройка servers.ses в конфиге UPS.
logs.path logs/ Путь к папке логов.
logs.debug false Режим расширенного логирования.
logs.backups 10 Количество старых сохраняемых логов.
logs.maxSize 5242880 Максимальный размер текущего лог-файла в байтах.
storage.audio.web /opt/ses/storage/web Путь для временного хранения фрагментов аудио веб сессий
storage.audio.hot /opt/ses/storage/hot Путь к "горячему" хранилищу аудиоданных
storage.audio.cold null Путь к "холодному" хранилищу аудиоданных, куда переливаются данные из "горячего" хранилища.
servers.{service}.url "http://127.0.0.1:PORT/{service}" Адрес сервера. Возможные варианты значения service (с портами по умолчанию) следующие: smc(6181), see(6184), spr(6183), tts(6186), sbs(6185), qas(6187).
servers.{service}.timers.connect 2 Таймаут подключения к серверу.
servers.{service}.timers.read 10 Таймаут получения данных с сервера.
connectors.vk {} Параметры подключения к ботам VK

{  "имя_подключения":{

    "token":"Ключ доступа",

    "robot":"id робота",

    "group_id":"id сообщества ВКонтакте",

    "whitelist":[],

    "activators":[]

    },

...............

}

connectors.telegram {} Параметры подключения к telegram ботам

{  "имя_подключения":{

    "token":"Ключ доступа",

    "robot":"id робота",

    "variables":{

      "phone": "1234567890"

    },

    "timers": {      "getUpdates": 3    },

    "whitelist":[],

    "activators":[]

    },

...........

}

connectors.freeswitch {} Номера внутренних телефонов внутри freeswitch с привязкой к роботам

"5000": {

        "robot": "ffeaa99a-13d2-4bff-b458-1231c884f8ee"

 }

vad.listening.maxLength 10000 Максимальная длина звукового фрагмента
vad.listening.minSpeech 120 Минимальный отрезок речи, который считать значимым
vad.listening.skipSilence 60 Не считать тишиной отрезки, короче данного значения
vad.listening.maxSilence 1200 Максимальная длительность тишины перед отправкой фрагмента
vad.listening.speechWaiting 4000 Длительность ожидания начала речи
vad.playing.maxLength 2000 Максимальная длина звукового фрагмента в режиме активного слушания
vad.playing.minSpeech 60 Минимальный отрезок речи, который считать значимым в режиме активного слушания
vad.playing.skipSilence 60 Не считать тишиной отрезки, короче данного значения в режиме активного слушания
vad.playing.maxSilence 200 Максимальная длительность тишины перед отправкой фрагмента в режиме активного слушания
cluster.logfile logs/sync.log Файл логов синхронизации есть только на главном сервере кластера
cluster.statusFile logs/sync.status Статус задачи синхронизации есть только на главном сервере кластера
cluster.nodes [ ] Перечень подчиненных нод для синхронизации изменений заполняется только на главном сервере кластера
tmp "/tmp/ses" Временная папка.


Эмуляция сервисов интеграции

В каталоге /opt/ses/testapi могут располагаться эмуляторы сервисов интеграции. Эмулятор будет доступен по адресу htttp://<адрес ses>/testapi/<название_сервиса>. Для создания эмулятора поместите в папку /opt/ses/testapi/ файл <название_сервиса>.reply. Содержимое файла будет отдано без изменений, как есть по адресу "http://<адрес_ses>:<порт_ses>/ses/testapi/<название_сервиса>".


Настройка каналов и виджетов

Настройка виджета для сайта

  1. Размещаете на сайте, например http://сайт.рф ссылку на виджет <script src="http://адрес_ups/ses/widget/js" key="xxxxxxxx"></script> (ключ придумайте сами)
  2. Делаете конфиг канала в файле /opt/ses/config.json в разделе connectors.web. В конфиге следующее:

"web": {

"http://сайт.рф~xxxxxxxx": { #сайт_с_виджетом~ключ

             "robot": "28013d0a-...", # id робота

             "color": "#4d3e33", #акцентный цвет виджета"

             "host": "адрес_ses:6191", #адрес который прослушивает ws(wss) запросы

             "microphone": false, #возможность отправлять/принимать аудио

             "transcription": false, #возможность расшифровки аудио клиента

             "variables": {

                 "var_1": "1234567890"

               } } }

Если на сайте SSL, то дополнительно поднимаете реверс-прокси для UPS (http://адрес_ups) и для websocket (адрес_ses:6191). Особенности реализации на nginx:

Основной конфиг должен включать директиву proxy_set_header Host $host; а также заголовки CORS и обработку OPTIONS запросов. Дополнительно в нем? возможно? придется обработать путь "/lang" с переводом.

Конфиг для websocket должен обеспечивать обработку upgrade запросов (https://nginx.org/en/docs/http/websocket.html) для перенаправления websocket трафика, а также прослушивание отдельного порта, например 8091.

Тогда в ссылку на виджет (адрес_ups) и в конфиг канала (адрес_ses:6191) нужно будет вносить адреса, которые поддерживают SSL. Пример конфига nginx для wss:

server {

   server_name ups_сервер.ru;

   listen 6191 ssl;

  include snippets/ssl-params.conf;

  ssl_certificate /etc/letsencrypt/live/ups_сервер.ru/fullchain.pem;

  ssl_certificate_key /etc/letsencrypt/live/ups_сервер.ru/privkey.pem;

  ssl_trusted_certificate /etc/letsencrypt/live/ups_сервер.ru/chain.pem;

  client_max_body_size 1000M;

  proxy_read_timeout 6000;

  proxy_connect_timeout       6000;

  proxy_send_timeout          6000;

  send_timeout                6000;

  large_client_header_buffers 8 256k;

   location / {

       proxy_pass http://локальныq_адрес_ses:6191;

       proxy_http_version 1.1;

       proxy_set_header Upgrade $http_upgrade;

       proxy_set_header Connection "upgrade";

       proxy_set_header Host $host;

       proxy_cache_bypass $http_upgrade; } }


Протоколы и порты

Сервис использует порты 6190/tcp для доступа к API-интерфейсу и порт 6191/tcp для WebSocket-сервера. Порт 6190 может быть изменен в конфигурационном файле.

Журналы работы

Для проверки состояния сервиса выполните sudo systemctl status ses.

Журналы сервиса находятся в каталоге, определенном в конфигурационном файле (по умолчанию – /opt/ses/logs/). Ошибки также пишутся в системный журнал, для просмотра можно воспользоваться командой sudo journalctl -u ses


Удаление и обновление ses

Для удаления выполните команду:

/opt/ses/uninstall

Команда удалит сервис и рабочий каталог, включая все файлы конфигурации. Для обновления запустите скрипт установки, как указано в п. 4. При этом обновление не изменяет файл /opt/ses/config.json.