Поделиться через


Интеграция разработчика с перенаправлением мультимедиа для приложений вызовов на основе WebRTC в удаленном сеансе

Перенаправление мультимедиа перенаправляет воспроизведение видео и вызовы в удаленном сеансе из Виртуального рабочего стола Azure, Облачный компьютер Windows 365 или Microsoft Dev Box на локальное устройство для ускорения обработки и отрисовки.

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

Перенаправление вызовов может работать с большинством приложений на основе WebRTC без изменений. Однако могут быть неподдерживаемые сценарии или вам может потребоваться предоставить другой интерфейс в удаленном сеансе.

В этой статье содержатся сведения о поддерживаемых интерфейсах API и методах экземпляров, а также фрагменты кода JavaScript, которые можно использовать со свойствомmediaDevices интерфейса Navigator.

Интерфейс навигатора является частью API захвата мультимедиа и потоков для интеграции веб-сайта с перенаправлением вызовов. Вместе с API WebRTC эти API обеспечивают поддержку потоковой передачи аудио- и видеоданных с помощью приложений для вызовов на основе WebRTC. Перенаправление мультимедиа заменяет реализацию mediaDevices объекта в API для обнаружения перенаправления вызовов, обработки событий отключения и повторного подключения, а также сбора диагностических сведений.

Совет

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

Поддерживаемые интерфейсы API и методы экземпляров

Перенаправление вызовов позволяет легко заменить стандартное использование WebRTC реализацией, которая перенаправляет вызовы из удаленного сеанса на локальное устройство.

Ниже приведен список поддерживаемых интерфейсов и методов экземпляров, используемых при перенаправлении вызовов из API захвата мультимедиа и потоков и API WebRTC:

Известные ограничения

Перенаправление вызовов имеет следующие ограничения API:

  • В настоящее время поддерживается только ограниченное количество WebAudio узлов.

  • setSinkId HTMLAudioElement в работает для дорожек WebRTCsrcObject, однако любое локальное воспроизведение, например мелодия звонка, всегда воспроизводится в аудиовыходе по умолчанию удаленного сеанса.

  • Так как некоторые API-интерфейсы возвращаются синхронно в обычных условиях, но должны быть прокси-серверами при использовании с перенаправлением вызовов, возможно, состояние объекта доступно не сразу.

Обнаружение перенаправления вызовов

Чтобы определить, активна ли перенаправление вызововMediaDevices, можно проверка isCallRedirectionEnabled свойство объекта . Если это свойство имеет значение true, перенаправление вызовов активно. Если это свойство имеет значение undefined или false, перенаправление вызовов неактивно.

window.navigator.mediaDevices['isCallRedirectionEnabled'] = true;

Обнаружение отключения от удаленного сеанса

Когда пользователь отключается и повторно подключается к удаленному сеансу при использовании перенаправления вызовов на веб-странице, локальный экземпляр WebRTC, поддерживающий объекты, становится недоступным. Как правило, если пользователь обновляет страницу, он может снова совершать вызовы.

Веб-страница может обнаруживать и обрабатывать эти события отключения и повторного подключения путем стирания и воссоздания всех объектов WebRTC, аудио- и видеоэлеалов и MediaStreamMediaStreamTrack интерфейсов. Такой подход устраняет необходимость обновления веб-страницы.

Чтобы получать уведомления об этих событиях, зарегистрируйте rdpClientConnectionStateChanged событие в объекте MediaDevices , как показано в следующем примере. Это событие содержит новое состояние, которое может иметь значение connected или disconnected.

navigator.mediaDevices.addEventListener('rdpClientConnectionStateChanged', () => 
    console.log("state change: " + event.detail.state);
);

диагностика перенаправления вызовов

В следующем примере перечислены свойства, предоставляемые объекту MediaDevices . Они предоставляют конкретные диагностические сведения об используемых версиях перенаправления вызовов и идентификаторах сеансов. Эта информация полезна при сообщении о проблемах в корпорацию Майкрософт, и мы рекомендуем собирать их как часть данных телеметрии или диагностика.

window.navigator.mediaDevices['mmrClientVersion'];
window.navigator.mediaDevices['mmrHostVersion'];
window.navigator.mediaDevices['mmrExtensionVersion'];

window.navigator.mediaDevices['activityId'];
window.navigator.mediaDevices['connectionId'];

Вот что представляет каждое свойство:

  • mmrClientVersion: версия файла MsMmrDVCPlugin.dll на локальном компьютере, которая входит в состав Windows App и приложения удаленного рабочего стола.

  • mmrHostVersion: версия файла MsMMRHost.exe , установленного на узле сеансов, на облачном компьютере или в поле разработки.

  • mmrExtensionVersion: версия расширения Microsoft Multimedia Redirection, запущенного в браузере.

  • activityId: уникальный идентификатор, который корпорация Майкрософт использует для связывания телеметрии с определенным сеансом и сопоставляется с перенаправлением мультимедиа текущей веб-страницы.

  • connectionId: уникальный идентификатор, который корпорация Майкрософт использует для связывания данных телеметрии с определенным сеансом и относится к заданному соединению между локальным устройством и удаленным сеансом.

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

Журналы перенаправления вызовов

По умолчанию перенаправление мультимедиа не регистрируется в консоли. Расширение браузера имеет кнопку для , чтобы пользователи собирали журналы. В следующем примере показано, как включить журналы консоли программным способом. Вы можете включить журналы консоли программным способом, если вы работаете над интеграцией или записываете проблему, для которой требуются более длительные журналы, чем в интерфейсе расширения браузера.

window.navigator.mediaDevices['mmrConsoleLoggingEnabled'] = true;

Вы также можете программно собирать журналы перенаправления мультимедиа, чтобы помочь в исследованиях. Все журналы для веб-страницы также доступны путем регистрации для mmrExtensionLog события в документе.

Объект события имеет два свойства в разделе подробных сведений:

  • Уровень: обозначает тип трассировки записи и позволяет фильтровать по определенным событиям. Уровень является одним из следующих значений:

    • info
    • многословный
    • warning
    • error
  • Message: текстовое сообщение трассировки.

В следующем примере показано, как зарегистрироваться для mmrExtensionLog события:

document.addEventListener('mmrExtensionLog', () =>
    console.log("MMR event, level:" + event.detail.level + " : " + event.detail.message);
);

Отправка веб-сайта на проверку или запрос помощи

Если вы представляете независимого поставщика программного обеспечения и хотите, чтобы ваш веб-сайт был добавлен в список веб-сайтов для перенаправления звонков, или если вам нужна помощь в интеграции вашего веб-сайта с перенаправлением звонков, заполните и отправьте эту форму.

Дополнительные сведения о перенаправлении мультимедиа для воспроизведения видео и вызовов в удаленном сеансе.