開發人員與遠端會話中 WebRTC 型通話應用程式的多媒體重新導向整合
多媒體重新導向會將遠端會話中的視訊播放和呼叫從 Azure 虛擬桌面、Windows 365 雲端電腦 或Microsoft開發人員方塊重新導向至您的本機裝置,以便更快速地處理和轉譯。
通話重新導向會優化 WebRTC 型通話應用程式的音訊通話、減少延遲,以及改善通話品質。 本機裝置與電話語音應用程式伺服器之間會發生連線,其中 WebRTC 呼叫會從遠端會話卸載至本機裝置。 建立連線之後,呼叫品質會依存於網頁或應用程式提供者,就像使用非重新導向的呼叫一樣。
通話重新導向可與大部分以 WebRTC 為基礎的通話應用程式搭配使用,而不需要修改。 不過,可能有不支援的案例,或者您可能想要在遠端會話中提供不同的體驗。
本文提供支援的 API 介面和實例方法的相關信息,並顯示可與 Navigator 介面的 屬性搭配mediaDevices
使用的 JavaScript 代碼段。
導覽器介面是媒體擷取和串流 API 的一部分,可整合您的網站與呼叫重新導向。 這些 API 與 WebRTC API 一起,支援使用以 WebRTC 為基礎的呼叫應用程式串流音訊和視訊數據。 多媒體重新導向會取代 API 中 對象的實作 mediaDevices
,以偵測呼叫重新導向、處理中斷連線和重新連線事件,以及收集診斷資訊。
提示
當您想要測試與多媒體重新導向的整合時,您可以啟用所有網站的通話重新導向。 如需詳細資訊,請參閱 為所有月臺啟用呼叫重新導向以進行測試。
支援的 API 介面和實例方法
呼叫重新導向的設計目的是以將遠端會話的呼叫重新導向至本機裝置的實作,順暢地取代標準 WebRTC 使用方式。
以下是從媒體擷取和串流 API 和 WebRTC API 呼叫重新導向所使用的支援介面和實例方法清單:
AnalyserNode
AudioContext
HTMLAudioElement
MediaDevices
MediaStream
MediaStreamAudioDestinationNode
MediaStreamAudioSourceNode
MediaStreamTrack
RTCDataChannel
RTCPeerConnection
RTCRtpReceiver
RTCRtpSender
RTCRtpTransceiver
已知的限制
通話重新導向具有下列 API 限制:
目前只支援有限的節點數目
WebAudio
。setSinkId
HTMLAudioElement
適用於 WebRTCsrcObject
播放軌,不過,任何本機播放,例如鈴聲,一律會在遠端會話的預設音訊輸出上播放。由於某些 API 在正常情況下以同步方式傳回,但在搭配呼叫重新導向使用時,必須成為 Proxy,因此物件的狀態可能無法立即使用。
偵測呼叫重新導向
若要偵測呼叫重新導向是否為使用中,您可以檢查 isCallRedirectionEnabled
對象的屬性 MediaDevices
。 如果此屬性為 true
,則呼叫重新導向為作用中。 如果此屬性為 undefined
或 false
,則呼叫重新導向不會作用中。
window.navigator.mediaDevices['isCallRedirectionEnabled'] = true;
偵測與遠端會話的中斷連線
當使用者在網頁上使用呼叫重新導向時中斷連線並重新連線到遠端會話時,不再提供支援物件的本機 WebRTC 實例。 一般而言,如果使用者重新整理頁面,他們就能再次撥打電話。
網頁可以藉由卸除並重新建立所有 WebRTC 物件、音訊或視訊專案,以及或MediaStreamTrack
介面,來偵測及處理這些中斷連線和MediaStream
重新連線事件。 這種方法不需要重新整理網頁。
若要取得這些事件的通知,請在 對象上MediaDevices
註冊rdpClientConnectionStateChanged
事件,如下列範例所示。 此事件包含新的狀態,可以是 connected
或 disconnected
。
navigator.mediaDevices.addEventListener('rdpClientConnectionStateChanged', () =>
console.log("state change: " + event.detail.state);
);
呼叫重新導向診斷
下列範例會列出對象上 MediaDevices
公開的屬性。 它們提供使用之呼叫重新導向版本和會話標識碼的特定診斷資訊。 此資訊在回報問題給Microsoft時很有用,建議您將其收集為您自己的遙測或診斷數據的一部分。
window.navigator.mediaDevices['mmrClientVersion'];
window.navigator.mediaDevices['mmrHostVersion'];
window.navigator.mediaDevices['mmrExtensionVersion'];
window.navigator.mediaDevices['activityId'];
window.navigator.mediaDevices['connectionId'];
以下是每個屬性所代表的內容:
mmrClientVersion:本機計算機上的檔案
MsMmrDVCPlugin.dll
版本,隨附於 Windows 應用程式和遠端桌面應用程式。mmrHostVersion:安裝在會話主機、雲端計算機或開發方塊上的檔案
MsMMRHost.exe
版本。mmrExtensionVersion:瀏覽器中執行的Microsoft多媒體重新導向延伸模組版本。
activityId:Microsoft用來將遙測與特定會話產生關聯,並對應至目前網頁多媒體重新導向的唯一標識符。
connectionId:Microsoft用來將遙測與特定會話產生關聯的唯一標識符,並且與本機裝置與遠端會話之間的指定連線相關聯。
在瀏覽器擴充功能的詳細數據中,所有使用者都可以使用這項資訊,但此範例會提供程式設計方式來收集它。
通話重新導向記錄
根據預設,多媒體重新導向不會記錄到主控台。 瀏覽器延伸模組有按鈕可讓使用者收集記錄。 下列範例示範如何以程序設計方式啟用主控台記錄。 如果您要進行整合,或擷取需要比瀏覽器擴充功能介面中選項更長執行記錄的問題,您可能想要以程式設計方式啟用控制台記錄。
window.navigator.mediaDevices['mmrConsoleLoggingEnabled'] = true;
您也可以以程式設計方式收集多媒體重新導向記錄,以協助調查。 您也可以註冊 mmrExtensionLog
檔上的事件,以取得網頁的所有記錄。
事件物件的詳細資料有兩個屬性:
層級:表示項目的追蹤類型,並可讓您篩選特定事件。 層級是下列其中一個值:
- 資訊
- verbose
- warning
- error
訊息:以文字為基礎的追蹤訊息。
下列範例示範如何註冊 mmrExtensionLog
事件:
document.addEventListener('mmrExtensionLog', () =>
console.log("MMR event, level:" + event.detail.level + " : " + event.detail.message);
);
相關內容
深入了解 遠端會話中視訊播放和通話的多媒體重新導向。