Как настроить запись звонков в Google Drive или Dropbox через SIP-сервер — пошагово и без лишней воды
Если ты ведёшь бизнес, где звонки — это часть работы: поддержка, продажи, колл-центр — ты знаешь, как важно сохранять записи разговоров. Не просто хранить, а делать это надёжно, доступно и без лишних хлопот. И если ты уже используешь SIP-сервер (Asterisk, FreeSWITCH, 3CX и т.п.), то запись звонков — это не проблема. Проблема — куда их складывать.
Хранить записи на локальном сервере? Риск потери данных, сложности с доступом из мобильного, резервное копирование — всё это превращается в головную боль. Гораздо проще — автоматически загружать записи в облако: Google Drive или Dropbox. И да, это можно настроить без программирования и без привлечения разработчика. Я покажу, как.
Почему именно облако? Не проще ли оставить на сервере?
Да, можно. Но только если у тебя:
- нет резервного копирования;
- нет доступа к серверу извне;
- ты не проверяешь звонки с телефона;
- и не боишься, что при сбое диска ты потеряешь 3 месяца записей.
Если хоть один пункт не подходит — облако не роскошь, а необходимость. Google Drive и Dropbox дают:
- доступ из любого устройства;
- автоматическое резервное копирование;
- поиск по файлам и метаданным;
- возможность делиться ссылками без доступа к серверу.
А если ты используешь SIP-сервер — ты уже имеешь все инструменты, чтобы это автоматизировать. Никаких платных сервисов вроде CallRail или CallMiner не нужно. Только твой сервер и пара настроек.
Как это работает: схема без сложностей
Вот как выглядит цепочка:
- Звонок проходит через SIP-сервер (например, Asterisk).
- Сервер записывает аудиофайл в формате WAV или MP3 на локальный диск (обычно в /var/spool/asterisk/monitor/).
- После завершения звонка запускается скрипт, который:
- находит новый файл;
- переименовывает его по шаблону (например,
2024-06-15_14-30-22_+79123456789.wav); - загружает его в Google Drive или Dropbox;
- удаляет локальную копию (опционально).
- Ты получаешь доступ к записи через браузер или мобильное приложение.
Это не магия. Это стандартный 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: Получи токен доступа
Ты не будешь вводить логин/пароль в скрипт. Вместо этого — токен.
- Зайди на https://www.dropbox.com/developers/apps/info/твой_app_key.
- Нажми «Generate access token».
- Скопируй токен. Он вида:
sl.ABCdEfgHijKlmNoPqRsTuVwXyZ1234567890.
Шаг 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 проще.
Частые ошибки — и как их избежать
- Записи не загружаются, потому что файлы не найдены. Проверь путь к записям в SIP-сервере. У Asterisk —
/var/spool/asterisk/monitor/, у FreeSWITCH —/var/spool/freeswitch/recordings/. Если не знаешь — включи логи звонков и посмотри, куда пишется файл. - Скрипт запускается, но ничего не делает. Убедись, что у него есть права на чтение файлов и на выполнение
dropbox_uploader.sh. Проверь:ls -la /opt/call-recording/upload-to-dropbox.sh. Если нет-rwx— дай права:chmod +x. - Файлы загружаются, но с непонятными именами. Не используй динамические имена вроде
call_12345.wav. Используй шаблон:ГГГГ-ММ-ДД_ЧЧ-ММ-СС_номер.wav. Это потом легко искать. - Скрипт не запускается по cron. Cron не знает переменных окружения. В скрипте пропиши полные пути ко всем утилитам. И проверь, что в cron указан правильный путь к интерпретатору:
/bin/bash /opt/.... - Загрузка занимает 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. Это спасёт, когда что-то пойдёт не так.
Итог: что делать прямо сейчас
Если ты читаешь это — ты уже на полпути. Вот что делать:
- Проверь, куда SIP-сервер сохраняет записи. Открой его конфиг и найди параметр типа
recordingsилиmonitor. - Выбери Dropbox — он проще. Google Drive — только если ты уже в Google-экосистеме.
- Создай приложение в Dropbox и получи токен.
- Установи
dropbox_uploader.shна сервер. - Напиши скрипт, который ищет новые файлы и загружает их.
- Добавь его в cron — каждые 5 минут.
- Позвони себе, проверь — файл появился в Dropbox.
Всё. Через час ты будешь иметь надёжную, автоматическую систему хранения записей звонков — без платных сервисов, без сложностей, без риска потери данных. И ты не будешь искать в архивах старую запись, потому что она просто исчезла с сервера.
Проверь, как работает система в течение недели. Если всё ок — ты сделал всё правильно. Если нет — ищи в логах. Там всегда написано, что пошло не так.
Информация в этой статье носит ознакомительный характер. Настройка SIP-серверов и облаков требует понимания безопасности и резервного копирования. Перед внедрением в продакшен проконсультируйся с IT-специалистом, особенно если речь идёт о персональных данных клиентов.
