раздел 04
Хранение и автоматизация
Скачать файл - половина дела. Дальше два вопроса: куда его положить и как сделать, чтобы это происходило само.
Куда складывать
- Диск сервера. Просто и быстро для небольших объёмов. Минус - место кончается, диск надо чистить и бэкапить.
- Объектное хранилище S3. Масштабируется, не упирается в диск, удобно отдавать ссылки. Подходящий вариант для архива записей. Про настройку хранилища - курс Серверы.
Типичная схема для S3: скачали файл потоком (раздел 03) и тут же залили в бакет, по желанию не сохраняя на диск вообще.
Автоматизация: webhook вместо опроса
Можно периодически опрашивать API на новые записи (поллинг), но это лишние запросы и задержка. Правильнее - подписаться на событие. Zoom присылает webhook recording.completed, когда облачная запись готова к скачиванию.
В payload этого события приходят данные встречи и список файлов с download_url. Вместе с событием Zoom часто передаёт отдельный download_token - короткоживущий токен именно для скачивания этих файлов, чтобы не дёргать OAuth-токен под каждое событие.
Скачивание из webhook - тот же код, что в разделе 03: берёте download_url из payload и передаёте токен через заголовок Authorization: Bearer DOWNLOAD_TOKEN либо через ?access_token=DOWNLOAD_TOKEN.
Удаление записи из Zoom после бэкапа
Когда файл надёжно сохранён, запись в облаке можно удалить - освободить место. Zoom это умеет через API удаления записей встречи, с параметром действия: переместить в корзину или удалить совсем.
Безопасный порядок:
Сам эндпоинт удаления и его параметры - в курсе Zoom API. Удаление трогайте в последнюю очередь, когда весь поток скачивания и проверки уже отлажен.