共用方式為


開發人員與遠端會話中 WebRTC 型呼叫應用程式的多媒體重新導向整合

多媒體重新導向會將遠程會話中的視訊播放和呼叫,從 Azure 虛擬桌面、Windows 365 雲端電腦 或Microsoft Dev Box 重新導向至您的本機裝置,以加快處理和轉譯的速度。

通話重新導向可優化 WebRTC 型呼叫應用程式的音訊通話、減少延遲,以及改善通話品質。 本機裝置與電話語音應用程式伺服器之間會發生連線,其中 WebRTC 呼叫會從遠端會話卸載至本機裝置。 建立連線之後,通話品質會依存於網頁或應用程式提供者,就像使用非重新導向的呼叫一樣。

通話重新導向可以與大部分以 WebRTC 為基礎的呼叫應用程式搭配使用,而不需要修改。 不過,可能有不支援的案例,或者您可能想要在遠端會話中提供不同的體驗。

本文提供支援的 API 介面和實例方法的相關信息,並顯示可搭配 mediaDevices Navigator 介面屬性使用的 JavaScript 代碼段。

導覽器介面是 媒體擷取和串流 API 的 一部分,可整合您的網站與呼叫重新導向。 這些 API 與 WebRTC API 搭配使用 WebRTC 型呼叫應用程式,提供串流音訊和視訊數據的支援。 多媒體重新導向會取代 API 中對象的 mediaDevices 實作,以偵測呼叫重新導向、處理中斷連線和重新連線事件,以及收集診斷資訊。

提示

當您想要測試與多媒體重新導向的整合時,您可以讓呼叫重新導向可供所有網站使用。 如需詳細資訊,請參閱 啟用所有月臺的呼叫重新導向以進行測試

支援的 API 介面和實例方法

通話重新導向的設計目的是要將標準 WebRTC 使用量順暢地取代為將呼叫從遠端會話重新導向至本機裝置的實作。

以下是從媒體擷取和串 流 APIWebRTC API 呼叫重新導向所使用的支援介面和實例方法清單:

已知限制

通話重新導向具有下列 API 限制:

  • 目前僅支援有限數目的 WebAudio 節點。

  • setSinkId HTMLAudioElement在適用於 WebRTC srcObject 曲目的 上,不過任何本機播放,例如鈴聲,一律會在遠端會話的預設音訊輸出上播放。

  • 由於某些 API 會在正常情況下以同步方式傳回,但在搭配呼叫重新導向使用時必須是 Proxy,因此物件的狀態可能無法立即使用。

偵測呼叫重新導向

若要偵測呼叫重新導向是否作用中,您可以檢查 isCallRedirectionEnabled 對象的 MediaDevices 屬性。 如果此屬性為 true,則呼叫重新導向為作用中。 如果此屬性為 undefinedfalse,則呼叫重新導向不在作用中。

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

偵測從遠端會話中斷連線

當使用者在網頁上使用呼叫重新導向時中斷連線並重新連線到遠端會話時,就無法再使用支持物件的本機 WebRTC 實例。 一般而言,如果使用者重新整理頁面,他們就可以再次撥打電話。

網頁可以藉由卸除並重新建立所有 WebRTC 物件、音訊或視訊元素,以及或 MediaStreamTrack 介面,來偵測並處理這些中斷連線和MediaStream重新連線事件。 這種方法不需要重新整理網頁。

若要收到這些事件的通知,請在 對象上MediaDevices註冊 rdpClientConnectionStateChanged 事件,如下列範例所示。 這個事件包含新的狀態,可以是 connecteddisconnected

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 App 和遠端桌面應用程式。

  • mmrHostVersion:安裝在會話主機、雲端計算機或開發人員方塊上的檔案 MsMMRHost.exe 版本。

  • mmrExtensionVersion:在瀏覽器中執行的Microsoft多媒體重新導向延伸模組版本。

  • activityId:唯一標識符,Microsoft用來將遙測與特定會話建立關聯,並對應至目前的網頁多媒體重新導向正在重新導向。

  • connectionId:唯一標識符,Microsoft用來建立遙測與特定會話的關聯,並且與本機裝置與遠端會話之間的指定連線相關。

在瀏覽器擴充功能的詳細數據中,使用者可以使用上述所有資訊,但此範例提供以程式設計方式進行收集。

呼叫重新導向記錄

根據預設,多媒體重新導向不會記錄到主控台。 瀏覽器延伸模組的按鈕可供使用者收集記錄。 下列範例示範如何以程序設計方式啟用主控台記錄。 如果您正在整合或擷取需要比瀏覽器擴充功能介面中選項更長的執行記錄,您可能想要以程式設計方式啟用主控台記錄。

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

您可能也想要以程序設計方式收集多媒體重新導向記錄,以協助調查。 網頁的所有記錄也可透過在文件上註冊 mmrExtensionLog 事件來取得。

事件物件有兩個 詳細屬性:

  • 層級:表示項目的追蹤類型,並可讓您篩選特定事件。 Level 是下列其中一個值:

    • 資訊
    • 詳細
    • 警告
    • 錯誤
  • 訊息:以文字為基礎的追蹤訊息。

下列範例示範如何註冊 mmrExtensionLog 事件:

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

提交您的網站以供檢閱或要求協助

如果您代表ISV,而且想要將您的網站新增至 通話重新導向的網站清單,或如果您需要整合網站與通話重新導向的協助,請 完成並提交此表單

深入了解 遠端會話中視訊播放和呼叫的多媒體重新導向