Как настроить запись звонков в Google Drive или Dropbox через SIP-сервер — пошагово и без лишней воды

Как настроить запись звонков в Google Drive или Dropbox через SIP-сервер — пошагово и без лишней воды

Если ты ведёшь бизнес, где звонки — это часть работы: поддержка, продажи, колл-центр — ты знаешь, как важно сохранять записи разговоров. Не просто хранить, а делать это надёжно, доступно и без лишних хлопот. И если ты уже используешь SIP-сервер (Asterisk, FreeSWITCH, 3CX и т.п.), то запись звонков — это не проблема. Проблема — куда их складывать.

Хранить записи на локальном сервере? Риск потери данных, сложности с доступом из мобильного, резервное копирование — всё это превращается в головную боль. Гораздо проще — автоматически загружать записи в облако: Google Drive или Dropbox. И да, это можно настроить без программирования и без привлечения разработчика. Я покажу, как.

Почему именно облако? Не проще ли оставить на сервере?

Да, можно. Но только если у тебя:

  • нет резервного копирования;
  • нет доступа к серверу извне;
  • ты не проверяешь звонки с телефона;
  • и не боишься, что при сбое диска ты потеряешь 3 месяца записей.

Если хоть один пункт не подходит — облако не роскошь, а необходимость. Google Drive и Dropbox дают:

  • доступ из любого устройства;
  • автоматическое резервное копирование;
  • поиск по файлам и метаданным;
  • возможность делиться ссылками без доступа к серверу.

А если ты используешь SIP-сервер — ты уже имеешь все инструменты, чтобы это автоматизировать. Никаких платных сервисов вроде CallRail или CallMiner не нужно. Только твой сервер и пара настроек.

Как это работает: схема без сложностей

Вот как выглядит цепочка:

  1. Звонок проходит через SIP-сервер (например, Asterisk).
  2. Сервер записывает аудиофайл в формате WAV или MP3 на локальный диск (обычно в /var/spool/asterisk/monitor/).
  3. После завершения звонка запускается скрипт, который:
    • находит новый файл;
    • переименовывает его по шаблону (например, 2024-06-15_14-30-22_+79123456789.wav);
    • загружает его в Google Drive или Dropbox;
    • удаляет локальную копию (опционально).
  4. Ты получаешь доступ к записи через браузер или мобильное приложение.

Это не магия. Это стандартный workflow, который работает на любом Linux-сервере с SIP-сервером.

Выбор между Google Drive и Dropbox

Оба облака подойдут. Но есть нюансы.

Критерий Google Drive Dropbox
Интеграция с API Сложнее: требует OAuth2, настройка в Google Cloud Console Проще: чёткая документация, меньше шагов
Скорость загрузки В среднем 15–30 секунд на 1 МБ 10–25 секунд на 1 МБ
Бесплатный тариф 15 ГБ 2 ГБ
Форматы файлов Поддерживает любые, но лучше WAV/MP3 Тоже любые, но лучше WAV/MP3
Поиск по содержимому Да, через Google AI (если включено) Нет, только по имени файла
Доступ к API для скриптов Требует регистрации приложения, ключи, настройка OAuth Простой токен доступа (App Key + Secret)
Удобство для команды Лучше, если уже используете G Suite Лучше, если команда давно на Dropbox

Если ты только начинаешь — выбирай Dropbox. Меньше головной боли с настройкой. Если ты уже в экосистеме Google (Gmail, Google Workspace, Sheets) — Google Drive. Плюс он умеет искать слова в записях, если включить аудио-транскрипцию (но это отдельная тема).

Как настроить загрузку в Dropbox — пошагово

Я покажу на примере FreeSWITCH, но принцип тот же для Asterisk.

Шаг 1: Создай приложение в Dropbox

  • Зайди на https://www.dropbox.com/developers/apps.
  • Нажми «Create app» → «Scoped access» → «Full Dropbox» → «App Folder».
  • Назови приложение, например: CallRecordings.
  • Скопируй App Key и App Secret.

Шаг 2: Получи токен доступа

Ты не будешь вводить логин/пароль в скрипт. Вместо этого — токен.

Шаг 3: Установи утилиту для загрузки

На сервере (Ubuntu/Debian) установи dropbox-uploader — это легковесный скрипт на bash, который работает через API.

curl -s https://raw.githubusercontent.com/andreafabrizi/Dropbox-Uploader/master/dropbox_uploader.sh -o /usr/local/bin/dropbox_uploader.sh
chmod +x /usr/local/bin/dropbox_uploader.sh

Запусти его и введи App Key и App Secret, когда попросит:

/usr/local/bin/dropbox_uploader.sh

После этого он сохранит токен в ~/.dropbox_uploader. Ты больше не будешь его вводить.

Шаг 4: Напиши скрипт для загрузки

Создай файл: /opt/call-recording/upload-to-dropbox.sh

#!/bin/bash

# Путь к записям
RECORDINGS_DIR="/var/spool/freeswitch/recordings"
# Папка в Dropbox
DROPBOX_DIR="/call_recordings"
# Максимальный возраст файла для обработки (в минутах)
MAX_AGE=5

# Ищем файлы, которые были созданы не позднее MAX_AGE минут назад
find "RECORDINGS_DIR" -name "*.wav" -mmin -MAX_AGE | while read file; do
    # Извлекаем номер клиента из имени файла (если есть)
    # Пример: 2024-06-15_14-30-22_+79123456789.wav
    filename=(basename "file")
    target_path="DROPBOX_DIR/filename"
    
    # Загружаем в Dropbox
    /usr/local/bin/dropbox_uploader.sh upload "file" "target_path"
    
    # Удаляем локальную копию (опционально)
    # rm "$file"
    
    echo "Загружено: $filename"
done

Сделай его исполняемым:

chmod +x /opt/call-recording/upload-to-dropbox.sh

Шаг 5: Запусти скрипт по расписанию

Открой crontab:

crontab -e

Добавь строку, чтобы скрипт запускался каждые 5 минут:

*/5 * * * * /opt/call-recording/upload-to-dropbox.sh >> /var/log/call-upload.log 2>&1

Готово. Каждые 5 минут скрипт проверит папку, найдёт новые файлы и загрузит их в Dropbox.

Как настроить Google Drive — коротко

Тут сложнее, но не критично. Тебе нужно:

  • Зарегистрировать приложение в Google Cloud Console;
  • Включить Drive API;
  • Создать OAuth-клиент (приложение типа «Другое»);
  • Скачать credentials.json;
  • Установить Python-библиотеку google-api-python-client;
  • Запустить скрипт один раз вручную — он откроет браузер, ты авторизуешься, и он сохранит токен.

После этого можно писать скрипт на Python, который загружает файлы. Пример:

from googleapiclient.discovery import build
from googleapiclient.http import MediaFileUpload
from google.auth.transport.requests import Request
from google.oauth2.credentials import Credentials

# ... настройка авторизации (с файлом token.json)

def upload_to_drive(file_path, folder_id):
    service = build('drive', 'v3', credentials=creds)
    file_metadata = {'name': 'call_20240615.wav', 'parents': [folder_id]}
    media = MediaFileUpload(file_path, mimetype='audio/wav')
    file = service.files().create(body=file_metadata, media_body=media, fields='id').execute()
    print(f'Файл загружен: {file.get("id")}')

Запускать тоже через crontab. Но — сложнее, чем с Dropbox. И если ты не разработчик — Dropbox проще.

Частые ошибки — и как их избежать

  1. Записи не загружаются, потому что файлы не найдены. Проверь путь к записям в SIP-сервере. У Asterisk — /var/spool/asterisk/monitor/, у FreeSWITCH — /var/spool/freeswitch/recordings/. Если не знаешь — включи логи звонков и посмотри, куда пишется файл.
  2. Скрипт запускается, но ничего не делает. Убедись, что у него есть права на чтение файлов и на выполнение dropbox_uploader.sh. Проверь: ls -la /opt/call-recording/upload-to-dropbox.sh. Если нет -rwx — дай права: chmod +x.
  3. Файлы загружаются, но с непонятными именами. Не используй динамические имена вроде call_12345.wav. Используй шаблон: ГГГГ-ММ-ДД_ЧЧ-ММ-СС_номер.wav. Это потом легко искать.
  4. Скрипт не запускается по cron. Cron не знает переменных окружения. В скрипте пропиши полные пути ко всем утилитам. И проверь, что в cron указан правильный путь к интерпретатору: /bin/bash /opt/....
  5. Загрузка занимает 2 минуты, а звонок был 30 секунд. Это нормально. Но если файлы большие — лучше сжимать. Конвертируй WAV в MP3 перед загрузкой: ffmpeg -i input.wav -b:a 16k output.mp3. Это сократит размер в 5–10 раз.

Что выбрать в зависимости от ситуации

  • Ты один, маленький бизнес, нет IT-специалиста — выбирай Dropbox. Настройка займёт 30 минут. Токен — один раз. Скрипт — один файл. Работает.
  • У тебя команда из 5+ человек, и все в Google Workspace — Google Drive. Делиться ссылками проще, интеграция с Gmail и Calendar есть. Плюс — поиск по словам в записях (если включить транскрипцию).
  • Ты ведёшь юридически значимые записи (например, в финтехе или медицине) — добавь шифрование. Перед загрузкой сжимай и шифруй файлы через gpg. Dropbox и Google Drive не гарантируют, что твои файлы не будут сканироваться. Шифрование — твоя защита.
  • Ты хочешь, чтобы записи автоматически транскрибировались — Google Drive. Включай в настройках «Транскрипция аудио» (требует Google Workspace Enterprise). Dropbox — только хранение.
  • Ты не хочешь зависеть от облака — настрой резервное копирование на внешний HDD или в другой облако (например, Backblaze B2). Не полагайся только на один сервис.

Как лучше сделать — практические рекомендации

  • Используй MP3, а не WAV. WAV — 10–20 МБ за минуту. MP3 — 1–2 МБ. Это экономия места и времени загрузки.
  • Переименовывай файлы по шаблону. YYYY-MM-DD_HH-MM-SS_+79123456789.mp3 — это стандарт. Так ты сможешь найти запись по номеру или дате без поиска по содержимому.
  • Удаляй старые записи. Через 90 дней удаляй файлы из облака. Или настрой архивацию в более дешёвое хранилище (например, Google Coldline).
  • Создай отдельную папку в облаке. Например: /call_recordings/2024/06/. Это упрощает управление.
  • Тестируй на реальном звонке. После настройки позвони сам себе, проверь, что файл появился в облаке. Не полагайся на «должно работать».
  • Логируй всё. Добавь в скрипт запись в лог: echo "(date): Загруженоfilename" >> /var/log/call-upload.log. Это спасёт, когда что-то пойдёт не так.

Итог: что делать прямо сейчас

Если ты читаешь это — ты уже на полпути. Вот что делать:

  1. Проверь, куда SIP-сервер сохраняет записи. Открой его конфиг и найди параметр типа recordings или monitor.
  2. Выбери Dropbox — он проще. Google Drive — только если ты уже в Google-экосистеме.
  3. Создай приложение в Dropbox и получи токен.
  4. Установи dropbox_uploader.sh на сервер.
  5. Напиши скрипт, который ищет новые файлы и загружает их.
  6. Добавь его в cron — каждые 5 минут.
  7. Позвони себе, проверь — файл появился в Dropbox.

Всё. Через час ты будешь иметь надёжную, автоматическую систему хранения записей звонков — без платных сервисов, без сложностей, без риска потери данных. И ты не будешь искать в архивах старую запись, потому что она просто исчезла с сервера.

Проверь, как работает система в течение недели. Если всё ок — ты сделал всё правильно. Если нет — ищи в логах. Там всегда написано, что пошло не так.

Информация в этой статье носит ознакомительный характер. Настройка SIP-серверов и облаков требует понимания безопасности и резервного копирования. Перед внедрением в продакшен проконсультируйся с IT-специалистом, особенно если речь идёт о персональных данных клиентов.

Virtual-Sim.ru