Публикация записей разговоров

Callbee не хранит записи разговоров у себя — вместо этого CRM скачивает их напрямую с вашего сервера FreePBX по прямой HTTP(S)-ссылке. Чтобы это работало, записи нужно опубликовать: настроить веб-сервер, который отдаёт файлы из /var/spool/asterisk/monitor/.

Выберите вашу CRM

Требования к публикации записей отличаются — выберите свою систему:

Требования:

  • Протокол — HTTP или HTTPS
  • Basic Auth — допустим, но не обязателен
  • Самоподписанные SSL-сертификаты — принимает

Рекомендация: используйте Вариант 1. HTTP — быстрее в настройке, достаточно для Битрикс24.

Требования:

  • Протокол — только HTTPS
  • Валидный SSL-сертификат (Let's Encrypt или коммерческий CA) — обязательно
  • Авторизация — без Basic Auth, публичный доступ

Рекомендация: используйте Вариант 2. HTTPS.

Требования:

  • Протокол — HTTP или HTTPS
  • Basic Auth — рекомендуется
  • Самоподписанные SSL — принимает

Рекомендация: если 1С и FreePBX в одной сети — достаточно Варианта 1. HTTP с адресом внутри сети. Если 1С в облаке — Вариант 2. HTTPS с публичным доменом.

Требования:

  • Протокол — только HTTPS
  • Валидный SSL-сертификат — обязательно
  • Авторизация — без Basic Auth

Рекомендация: используйте Вариант 2. HTTPS.

Что понадобится

   
Доступ по SSH root или sudo
Docker для запуска nginx/Caddy (установим на Шаге 1)
Домен например, pbx.company.ru — для HTTPS
Открытый порт 80 (HTTP) или 443 (HTTPS) наружу
DNS A-запись домен → внешний IP вашей АТС/роутера

Вариант 1. HTTP (быстрый старт)

Подходит только для Битрикс24 и 1С в локальной сети. Для amoCRM и ROISTAT нужен HTTPS.

Шаг 1. Установите Docker

curl -fsSL https://get.docker.com | sh
systemctl enable --now docker

Проверьте версию:

docker --version

Шаг 2. Запустите nginx с записями

docker run -d \
  --name recs_nginx \
  --restart=unless-stopped \
  -v /var/spool/asterisk/monitor:/usr/share/nginx/html/monitor:ro \
  -v /var/spool/asterisk/voicemail:/usr/share/nginx/html/voicemail:ro \
  -p 50381:80 \
  nginx

Флаг :ro делает тома только для чтения — nginx физически не может изменить или удалить записи.

Проверьте, что контейнер работает:

docker ps --filter name=recs_nginx

Статус должен быть Up.

Шаг 3. Откройте порт на роутере

Порт 50381/TCP должен быть виден снаружи (кроме сценария «1С в одной сети»). Пробросьте его на роутере:

  • Внешний порт: 50381
  • Внутренний IP: адрес сервера FreePBX
  • Внутренний порт: 50381
  • Источник: ограничьте IP-адресами портала CRM и офисной подсетью

Шаг 4. Проверьте доступ

Откройте в браузере:

http://<ваш-домен-или-IP>:50381/monitor/

Должен открыться листинг папок с записями. Если ответ 404 или Connection refused — проверьте Шаг 3.


Вариант 2. HTTPS (рекомендуется для всех CRM)

HTTPS — единственный способ, который работает для всех четырёх CRM. Используем Caddy — сервер, который автоматически получает и обновляет сертификаты Let's Encrypt.

Шаг 1. Установите Docker

(см. Вариант 1, Шаг 1)

Шаг 2. Подготовьте DNS

В панели управления доменом создайте A-запись:

pbx.company.ru  A  <внешний-IP-вашей-АТС>

Подождите 5–10 минут пока DNS обновится. Проверьте:

dig +short pbx.company.ru

Должен вернуться ваш внешний IP.

Шаг 3. Создайте Caddyfile

mkdir -p /opt/callbee-recs && cd /opt/callbee-recs
nano Caddyfile

Вставьте:

caddyfile
pbx.company.ru {
    root * /srv
    file_server browse
    encode gzip
    log {
        output file /var/log/caddy/access.log
    }
}

Замените pbx.company.ru на ваш домен.

Шаг 4. Запустите Caddy

docker run -d \
  --name recs_caddy \
  --restart=unless-stopped \
  -p 80:80 -p 443:443 \
  -v /opt/callbee-recs/Caddyfile:/etc/caddy/Caddyfile:ro \
  -v /var/spool/asterisk/monitor:/srv/monitor:ro \
  -v /var/spool/asterisk/voicemail:/srv/voicemail:ro \
  -v caddy_data:/data \
  caddy

Caddy сам получит SSL-сертификат от Let's Encrypt при первом запросе к домену.

Шаг 5. Проверьте HTTPS

curl -I https://pbx.company.ru/monitor/

Ожидаемый ответ: HTTP/2 200. Если SSL handshake failed — убедитесь что порт 80/TCP открыт (он нужен Let's Encrypt для выдачи сертификата).


Указание ссылки в Callbee

После публикации запишите итоговый базовый URL — он понадобится при создании сервиса в личном кабинете:

   
HTTP http://pbx.company.ru:50381/monitor
HTTPS https://pbx.company.ru/monitor

Callbee автоматически подставит имя файла записи — например, https://pbx.company.ru/monitor/2026/04/17/out-79991234567-101-20260417-154230-1745678542.12345.wav.


Частые проблемы

amoCRM: «Не удалось загрузить запись» amoCRM не принимает самоподписанные сертификаты. Только Let's Encrypt / коммерческий CA.

Битрикс24: «Файл недоступен» у сотрудников Сотрудники открывают записи со своих IP. Либо откройте порт публично, либо используйте Basic Auth и раздайте credentials в команде.

1С не скачивает файлы Если 1С в облаке, а FreePBX — в локальной сети, домен должен быть доступен из интернета (нужен HTTPS).

ROISTAT: «Истёкший таймаут скачивания» Записи > 50 МБ не успевают скачаться за 30 секунд. Включите encode gzip в Caddyfile и проверьте канал.

Сертификат Let's Encrypt не выдаётся

  1. Порт 80 закрыт на роутере — Let's Encrypt использует HTTP-01 challenge
  2. DNS A-запись не обновилась — проверьте через whatsmydns.net
  3. Rate limit — Let's Encrypt даёт 5 попыток в час на домен