← Назад к заметкам

Заметки

navigator.mediaDevices is undefined при звонке в приложении

Navigator.mediaDevices is undefined при звонке в приложении: HTTPS, браузер, iframe, разрешения.

navigator.mediaDevices is undefined при звонке в приложении. Основной фокус: HTTPS, браузер, iframe, разрешения.

Задача

Разобрать телефонию, звонок из CRM или ограничения браузера в приложении.

Задача — navigator.mediaDevices is undefined при звонке в приложении. HTTPS, браузер, iframe, разрешения.

Главное — не искать один универсальный метод, а сначала определить сущность, права и слой API, через который выполняется действие.

Как это устроено

Звонок в Битрикс24 зависит от номера в карточке, маршрута телефонии, приложения, браузера и разрешений на медиа. В приложении дополнительно мешают iframe, HTTPS и политики браузера.

Разложите сценарий на уровни: где появляется исходное значение, какой метод его меняет, кто выполняет действие и какое событие должно сработать после изменения.

Если сценарий проверяется под администратором, отдельно повторите его под обычным пользователем. Для прав, CRM, задач, Диска и приложений это часто даёт другой результат.

Рабочий подход

Проверяйте цепочку полностью: формат номера, пользователя, подключённую линию, сценарий click2call, браузерные разрешения и сетевые условия. Для REST-вызовов добавьте ограничение частоты и журнал попыток.

Откройте приложение по HTTPS, проверьте браузер, разрешение микрофона и ограничения iframe. В небезопасном контексте браузер может вообще не отдавать mediaDevices.

На коробке удобнее добавлять временное логирование рядом с местом выполнения кода, а в облаке — сохранять входящие и исходящие REST-запросы в свой журнал интеграции.

Частые ошибки

Если звонок не стартует из карточки, это не всегда ошибка REST. Часто номер не нормализован, пользователь не сопоставлен с телефонией или браузер не даёт доступ к микрофону.

  • Проверять сценарий только под администратором и не видеть проблему прав обычного пользователя.
  • Регистрировать placement до завершения установки и ждать, что он сразу появится у всех пользователей.
  • Не логировать фактический запрос и ответ, из-за чего ошибка выглядит случайной.