Entwicklerintegration in die Multimediaumleitung für WebRTC-basierte Anruf-Apps in einer Remotesitzung
Die Multimediaumleitung leitet die Videowiedergabe und Anrufe in einer Remotesitzung von Azure Virtual Desktop, einem Windows 365 Cloud-PC oder Microsoft Dev Box auf Ihr lokales Gerät um, um eine schnellere Verarbeitung und schnelleres Rendering zu ermöglichen.
Die Anrufumleitung optimiert Audioanrufe für WebRTC-basierte Anruf-Apps, verringert die Latenz und verbessert die Anrufqualität. Die Verbindung erfolgt zwischen dem lokalen Gerät und dem Telefonie-App-Server, auf dem WebRTC-Anrufe von einer Remotesitzung auf ein lokales Gerät ausgelagert werden. Nachdem die Verbindung hergestellt wurde, hängt die Anrufqualität jedoch wie bei einem nicht umgeleiteten Anruf von den Webseiten- oder App-Anbietern ab.
Die Anrufumleitung funktioniert mit den meisten WebRTC-basierten Anruf-Apps ohne Änderungen. Es kann jedoch nicht unterstützte Szenarien geben, oder möglicherweise möchten Sie eine andere Erfahrung in einer Remotesitzung bereitstellen.
Dieser Artikel enthält Informationen zu unterstützten API-Schnittstellen und Instanzmethoden und zeigt JavaScript-Codeschnipsel, die Sie mit der Eigenschaft mediaDevices
der Navigator-Schnittstelle verwenden können.
Die Navigator-Schnittstelle ist Teil der Media Capture and Streams-API zum Integrieren Ihrer Website in die Anrufumleitung. Zusammen mit der WebRTC-API bieten diese APIs Unterstützung für das Streamen von Audio- und Videodaten mit WebRTC-basierten Anruf-Apps. Die Multimediaumleitung ersetzt die Implementierung des Objekts mediaDevices
in den APIs, um die Anrufumleitung zu erkennen, die Ereignisse beim Trennen und erneuten Verbinden zu behandeln und Diagnoseinformationen zu sammeln.
Tipp
Wenn Sie Ihre Integration in die Multimediaumleitung testen möchten, können Sie die Anrufumleitung für alle Websites aktivieren. Weitere Informationen finden Sie unter Aktivieren der Anrufumleitung für alle Websites zu Testzwecken.
Unterstützte API-Schnittstellen und Instanzmethoden
Die Anrufumleitung wurde entwickelt, um die standardmäßige WebRTC-Verwendung nahtlos durch eine Implementierung zu ersetzen, die Anrufe von einer Remotesitzung an das lokale Gerät umleitet.
Hier ist eine Liste der unterstützten Schnittstellen und Instanzmethoden, die von der Anrufumleitung von der Media Capture and Streams-API und der WebRTC-API verwendet werden:
AnalyserNode
AudioContext
HTMLAudioElement
MediaDevices
MediaStream
MediaStreamAudioDestinationNode
MediaStreamAudioSourceNode
MediaStreamTrack
RTCDataChannel
RTCPeerConnection
RTCRtpReceiver
RTCRtpSender
RTCRtpTransceiver
Bekannte Einschränkungen
Die Anrufumleitung hat die folgenden API-Einschränkungen:
Derzeit wird nur eine begrenzte Anzahl von
WebAudio
-Knoten unterstützt.setSinkId
aufHTMLAudioElement
funktioniert fürsrcObject
-WebRTC-Spuren, aber jede lokale Wiedergabe, z. B. ein Klingelton, wird immer mit der Standardaudioausgabe der Remotesitzung wiedergegeben.Da einige APIs unter normalen Bedingungen synchron zurückgegeben werden, aber Proxys sein müssen, wenn sie mit der Anrufumleitung verwendet werden, ist es möglich, dass der Status eines Objekts nicht sofort verfügbar ist.
Erkennen der Anrufumleitung
Um festzustellen, ob die Anrufumleitung aktiv ist, können Sie die Eigenschaft isCallRedirectionEnabled
des Objekts MediaDevices
überprüfen. Wenn diese Eigenschaft true
lautet, ist die Anrufumleitung aktiv. Wenn diese Eigenschaft undefined
oder false
lautet, ist die Anrufumleitung nicht aktiv.
window.navigator.mediaDevices['isCallRedirectionEnabled'] = true;
Erkennen der Verbindungstrennung über eine Remotesitzung
Wenn ein Benutzer eine Verbindung mit einer Remotesitzung trennt und erneut herstellt, während die Anrufumleitung auf einer Webseite verwendet wird, ist die lokale WebRTC-Instanz, die die Objekte unterstützt, nicht mehr verfügbar. Wenn ein Benutzer die Seite aktualisiert, kann er in der Regel erneut Anrufe tätigen.
Die Webseite kann diese Trennungs- und Wiederverbindungsereignisse erkennen und verarbeiten, indem sie alle WebRTC-Objekte, Audio- oder Videoelemente sowie MediaStream
- und MediaStreamTrack
-Schnittstellen löscht und erneut erstellt. Dieser Ansatz beseitigt die Notwendigkeit, die Webseite zu aktualisieren.
Um über diese Ereignisse benachrichtigt zu werden, registrieren Sie das Ereignis rdpClientConnectionStateChanged
für das Objekt MediaDevices
, wie im folgenden Beispiel gezeigt. Dieses Ereignis enthält den neuen Status, der entweder connected
oder disconnected
sein kann.
navigator.mediaDevices.addEventListener('rdpClientConnectionStateChanged', () =>
console.log("state change: " + event.detail.state);
);
Diagnose der Anrufumleitung
Im folgenden Beispiel werden die Eigenschaften aufgelistet, die für das Objekt MediaDevices
verfügbar gemacht werden. Sie stellen spezifische Diagnoseinformationen zu den verwendeten Versionen der Anrufumleitung und zu Sitzungsbezeichnern bereit. Diese Informationen sind nützlich, wenn Sie Probleme an Microsoft melden, und wir empfehlen, diese als Teil Ihrer eigenen Telemetrie- oder Diagnosedaten zu erfassen.
window.navigator.mediaDevices['mmrClientVersion'];
window.navigator.mediaDevices['mmrHostVersion'];
window.navigator.mediaDevices['mmrExtensionVersion'];
window.navigator.mediaDevices['activityId'];
window.navigator.mediaDevices['connectionId'];
Folgendes stellt jede Eigenschaft dar:
mmrClientVersion: Die Version der Datei
MsMmrDVCPlugin.dll
auf dem lokalen Computer, die als Teil der Windows-App und der Remotedesktop-App enthalten ist.mmrHostVersion: Die Version der Datei
MsMMRHost.exe
, die auf dem Sitzungshost, dem Cloud-PC oder der Dev-Box installiert ist.mmrExtensionVersion: Die Version der Microsoft-Erweiterung für Multimediaumleitung, die im Browser ausgeführt wird.
activityId: Ein eindeutiger Bezeichner, den Microsoft zum Zuordnen von Telemetriedaten zu einer bestimmten Sitzung verwendet und der der aktuellen Webseite zugeordnet ist, die die Multimediaumleitung umleitet.
connectionId: Ein eindeutiger Bezeichner, den Microsoft zum Zuordnen von Telemetriedaten zu einer bestimmten Sitzung verwendet und der sich auf die angegebene Verbindung zwischen dem lokalen Gerät und der Remotesitzung bezieht.
Alle diese Informationen stehen dem Endbenutzer in den Details der Browsererweiterung zur Verfügung, aber in diesem Beispiel wird eine programmgesteuerte Möglichkeit zum Sammeln bereitgestellt.
Protokolle der Anrufumleitung
Standardmäßig wird die Multimediaumleitung nicht in der Konsole protokolliert. Die Browsererweiterung verfügt über eine Schaltfläche, über die Benutzer Protokolle sammeln können. Das folgende Beispiel zeigt, wie Sie Konsolenprotokolle programmgesteuert aktivieren können. Möglicherweise möchten Sie Konsolenprotokolle programmgesteuert aktivieren, wenn Sie an der Integration arbeiten oder ein Problem erfassen, das längere Ausführungsprotokolle erfordert, als die Option in der Schnittstelle der Browsererweiterung bietet.
window.navigator.mediaDevices['mmrConsoleLoggingEnabled'] = true;
Möglicherweise möchten Sie auch programmgesteuert Protokolle der Multimediaumleitung sammeln, um Untersuchungen zu unterstützen. Alle Protokolle für die Webseite stehen auch durch die Registrierung für das Ereignis mmrExtensionLog
im Dokument zur Verfügung.
Das Ereignisobjekt weist zwei Eigenschaften unter Detail auf:
Ebene: Gibt an, zu welcher Art von Ablaufverfolgung der Eintrag gehört, und ermöglicht es Ihnen, nach bestimmten Ereignissen zu filtern. Die Ebene ist einer der folgenden Werte:
- info
- Ausführlich
- Warnung laden
- error
Nachricht: Die textbasierte Ablaufverfolgungsnachricht.
Das folgende Beispiel zeigt die Registrierung für das Ereignis mmrExtensionLog
:
document.addEventListener('mmrExtensionLog', () =>
console.log("MMR event, level:" + event.detail.level + " : " + event.detail.message);
);
Zugehöriger Inhalt
Weitere Informationen finden Sie unter Multimediaumleitung für die Videowiedergabe und Anrufe in einer Remotesitzung.