Сервер записи вызовов
Go to file
2026-02-21 19:42:07 +00:00
dependencies Замена install.sh на f7recording.sh: удалён install.sh, обновлена документация и deploy.sh 2026-02-21 19:40:19 +00:00
docker-compose Initial commit: F7cloud Talk Recording Server 2026-02-17 12:18:51 +00:00
docs Initial commit: F7cloud Talk Recording Server 2026-02-17 12:18:51 +00:00
LICENSES Initial commit: F7cloud Talk Recording Server 2026-02-17 12:18:51 +00:00
packaging Initial commit: F7cloud Talk Recording Server 2026-02-17 12:18:51 +00:00
src/f7cloud/talk/recording Initial commit: F7cloud Talk Recording Server 2026-02-17 12:18:51 +00:00
tests Initial commit: F7cloud Talk Recording Server 2026-02-17 12:18:51 +00:00
.gitignore Exclude large dependencies from git repository 2026-02-17 12:19:10 +00:00
AUTHORS.md Initial commit: F7cloud Talk Recording Server 2026-02-17 12:18:51 +00:00
CHANGELOG.md Initial commit: F7cloud Talk Recording Server 2026-02-17 12:18:51 +00:00
DEPLOY.md Удаление скриптов deploy.sh и start-container.sh 2026-02-21 19:42:07 +00:00
f7recording.sh Изменение скрипта установки 2026-02-21 19:27:57 +00:00
INSTALL_EXAMPLE.md Замена install.sh на f7recording.sh: удалён install.sh, обновлена документация и deploy.sh 2026-02-21 19:40:19 +00:00
INSTALL.md Замена install.sh на f7recording.sh: удалён install.sh, обновлена документация и deploy.sh 2026-02-21 19:40:19 +00:00
LICENSE.txt Initial commit: F7cloud Talk Recording Server 2026-02-17 12:18:51 +00:00
PROJECT_STRUCTURE.md Замена install.sh на f7recording.sh: удалён install.sh, обновлена документация и deploy.sh 2026-02-21 19:40:19 +00:00
pyproject.toml Initial commit: F7cloud Talk Recording Server 2026-02-17 12:18:51 +00:00
README.md Удаление скриптов deploy.sh и start-container.sh 2026-02-21 19:42:07 +00:00
REUSE.toml Initial commit: F7cloud Talk Recording Server 2026-02-17 12:18:51 +00:00
server.conf.in Initial commit: F7cloud Talk Recording Server 2026-02-17 12:18:51 +00:00

F7cloud Talk Recording Server

Сервер записи для F7cloud Talk, который позволяет записывать видеозвонки.

Описание

F7cloud Talk Recording Server предоставляет HTTP API для записи видеозвонков в F7cloud Talk. Сервер работает как клиент Talk и записывает звонки через браузер.

Структура проекта

f7cloud-talk-recording/
├── src/                          # Исходный код
│   └── f7cloud/
│       └── talk/
│           └── recording/
│               ├── __init__.py              # Инициализация модуля
│               ├── __main__.py              # Точка входа CLI
│               ├── Server.py                # HTTP сервер (Flask)
│               ├── Service.py               # Сервис записи
│               ├── Config.py                # Управление конфигурацией
│               ├── Participant.py           # Управление участником в браузере
│               ├── BackendNotifier.py       # Уведомления бэкенда
│               ├── RecorderArgumentsBuilder.py  # Построитель аргументов для ffmpeg
│               └── Benchmark.py            # Бенчмарк для тестирования
│
├── dependencies/                 # Внешние зависимости
│   ├── firefox-esr/             # Firefox ESR (браузер для записи)
│   └── geckodriver               # Geckodriver (Selenium WebDriver для Firefox)
│
├── tests/                        # Тесты
│   ├── ServerTest.py            # Тесты сервера
│   └── ConfigTest.py            # Тесты конфигурации
│
├── server.conf.in                # Шаблон конфигурационного файла
├── pyproject.toml                # Конфигурация Python проекта
├── f7recording.sh                # Скрипт установки (запуск с .env-файлом)
├── INSTALL.md                    # Подробная инструкция по установке
└── README.md                     # Этот файл

Быстрый старт

Установка

git clone https://git.f7cloud.ru/root/F7_recording.git
cd F7_recording
sudo ./f7recording.sh /path/to/f7cloud-install.env

Конфигурация

Отредактируйте /etc/f7cloud-talk-recording/server.conf:

[http]
listen = 127.0.0.1:8000

[backend]
backends = my-backend
secret = your-shared-secret-here

[my-backend]
url = https://your-f7cloud-instance.com
secret = your-shared-secret-here

[recording]
browser = firefox
driverPath = /usr/local/bin/geckodriver
browserPath = /usr/local/bin/firefox-esr

Запуск

sudo systemctl start f7cloud-talk-recording
sudo systemctl enable f7cloud-talk-recording

Зависимости

Системные зависимости

  • Python 3.8+
  • PulseAudio
  • Xvfb (виртуальный дисплей)
  • FFmpeg
  • Firefox ESR (включен в dependencies/)
  • Geckodriver (включен в dependencies/)

Python зависимости

  • flask
  • prometheus-client
  • psutil
  • pulsectl
  • pyvirtualdisplay>=2.0
  • requests
  • requests-toolbelt
  • selenium>=4.11.0
  • websocket-client

Все зависимости указаны в pyproject.toml и будут установлены автоматически при установке.

Основные компоненты

Server.py

HTTP сервер на Flask, который обрабатывает запросы на начало/конец записи.

Service.py

Управляет процессом записи:

  • Создает виртуальный дисплей (Xvfb)
  • Создает аудио sink (PulseAudio)
  • Запускает браузер в kiosk режиме
  • Запускает FFmpeg для записи
  • Загружает запись на сервер

Participant.py

Управляет участником в браузере через Selenium WebDriver:

  • Открывает страницу записи
  • Подключается к signaling серверу
  • Управляет медиа потоками

Config.py

Управляет конфигурацией из файла server.conf.

API

Сервер предоставляет HTTP API для управления записями. Подробности см. в документации API.

Развертывание

Для развертывания на новом сервере:

  1. Скопируйте весь репозиторий на сервер
  2. Запустите sudo ./f7recording.sh /path/to/f7cloud-install.env
  3. Настройте /etc/f7cloud-talk-recording/server.conf
  4. Запустите сервис: sudo systemctl start f7cloud-talk-recording

Подробные инструкции см. в INSTALL.md.

Разработка

Установка для разработки

python3 -m venv venv
source venv/bin/activate
pip install -e ".[dev]"

Запуск тестов

pytest tests/

Линтинг

pylint src/

Лицензия

AGPL-3.0-or-later

Поддержка

Для получения помощи см. INSTALL.md или создайте issue в репозитории.