К содержимому

CRM качает запись разговора без авторизации — и молча кладёт битый файл

Запись прикрепилась к звонку, но не воспроизводится или весит пару килобайт.

restoauth

Интеграция телефонии с CRM. Звонок завершается, отдаём в CRM ссылку на запись — и она честно её принимает. В карточке звонка появляется вложение.

Открываешь — тишина. Или файл на два килобайта, внутри HTML со страницей логина.

Причина

CRM не пересылает вам файл. Она сама идёт по ссылке своим HTTP-клиентом — с сервера, без ваших заголовков и без токена провайдера.

У любого нормального провайдера телефонии ссылка на запись защищена: без Authorization отдаётся либо 401, либо редирект на страницу входа. Именно эту страницу CRM и сохраняет как «запись разговора», не проверяя, что скачала.

Отсюда и симптом: ошибки нет нигде — ни в логах интеграции, ни в интерфейсе. Формально всё отработало.

Решение

Файл нужно забрать самому и отдать CRM то, что она может скачать без секретов.

Порядок такой:

  1. Скачать запись со стороны провайдера — со своим токеном.
  2. Положить её туда, откуда CRM возьмёт файл без авторизации: временная ссылка с подписью и коротким сроком жизни, либо прямая загрузка файла в CRM, если её API это умеет.
  3. Отдать в CRM уже этот адрес, а не исходный.

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

Как поймать раньше, чем заметит заказчик

Проверять не факт прикрепления, а сам файл:

curl -sI "<ссылка, которую отдаём в CRM>" | head -3
# ожидаем 200 и Content-Type аудио, а не text/html

И контролировать размер: запись разговора не может весить два килобайта. Порог в сотню килобайт отсекает и страницы логина, и пустые файлы.

Соседняя ловушка

Записи короче тридцати секунд провайдер может вообще не хранить. Интеграция будет исправно ходить за ними и получать 404, забивая логи и очередь ретраев. Такие звонки нужно помечать как «без записи» и не повторять запрос — файла не появится никогда.

Дальше

Новые разборы выходят в Telegram раньше, чем попадают сюда. Без анонсов курсов — только материалы.

Читать в Telegram →