Azure 通訊服務架構設計

Azure 通訊服務
Microsoft Entra ID
Azure Functions

本指南提供Azure 通訊服務 的資料流程圖 。 使用這些圖表來瞭解您的用戶端和服務如何與 Azure 互動,以提供通訊體驗。

通訊服務是具有 REST API 和用戶端程式庫 SDK 的雲端式服務,可協助您將通訊整合到應用程式。 通訊服務支援多種通訊格式:語音和視訊通話、文字聊天、SMS 和自訂二進位資料。

您可以新增對 Web 和行動應用程式的通訊、整合自訂服務和 Bot,以及以程式設計方式存取公用交換電話語音網路 (PSTN)。 您可以直接從Azure 通訊服務 API 或Azure 入口網站取得 電話號碼 ,並將這些號碼用於簡訊或語音通話應用程式。 藉由使用 通訊服務直接路由 ,您可以透過會話初始通訊協定 (SIP) 和會話邊界控制器自備電話語音提供者。

這些資料流程圖中會使用下列元件:

  • 用戶端應用程式。 使用者用於通訊的網站或原生應用程式。 通訊服務為瀏覽器和原生應用程式提供 SDK 用戶端程式庫 建置在這些 SDK 上的開放原始碼 UI 程式庫 提供可程式化的 Web(React)、iOS 和 Android UI 元件。
  • 身分識別管理服務。 您建置以將使用者和服務對應至通訊服務身分識別的服務。 此服務也會在使用者需要存取資料平面時,為使用者建立權杖。
  • 通訊控制器服務。 您建置以控制聊天線程和語音和視訊通話的服務。
  • 通訊資料服務。 您建置的服務功能,可直接與通訊內容互動,例如傳送聊天和簡訊,或在語音通話中播放音訊。

通訊的業界標準,例如 WebRTC ,會將通訊分成 控制項和訊號平面 和資料 平面 。 藉由使用通訊服務,您可以建置通訊體驗,而不需要瞭解服務的內部 WebRTC 實作。 不過,這些概念可協助您設計應用程式:

系統 函式 通訊協定 存取模型
控制平面 控管誰溝通、時機和方式 REST Microsoft Entra 服務認證
資料平面 包含與人類和應用程式互動的通訊內容、語音、視訊、文字和資料 UDP、 RTMP 、WebSocket、REST 使用者存取權杖 和 Microsoft Entra 服務認證

當用戶端應用程式從服務控制站要求控制資訊來起始通訊時,就會發生一般資料流程:

  • 我今天有哪些會議?
  • 我用來打電話給朋友約瑟夫的電話號碼為何?
  • 我的隊友名稱為何? 我們有哪些正在進行的聊天線程?

您的控制服務會藉由為用戶端提供使用者、執行緒、電話號碼和通話的通訊服務權杖和識別碼,來完成這些要求。 用戶端接著會使用這些權杖和識別碼來與 Azure 資料平面互動。 通訊服務 API 不會限制使用者體驗的設計或控制通訊的程式。

在 WebRTC 標準中,用戶端會在稱為訊號的進程中傳送 控制訊息,以要求來自服務的控制資訊 呼叫識別碼之類的通訊服務識別碼與 WebRTC 會話描述 相當

透過使用者存取權杖驗證的使用者

通訊服務用戶端會提供使用者存取權杖以提升安全性、Azure 通話和聊天資料平面。 您應該使用受信任的服務來產生和管理使用者存取權杖。 產生權杖所需的權杖和連接字串或 Microsoft Entra 秘密必須受到保護。 無法正確管理存取權杖可能會導致額外的費用,因為資源誤用。

Diagram that shows the user access token architecture.

下載此架構的 Visio 檔案

資料流程

  1. 使用者啟動用戶端應用程式。
  2. 用戶端應用程式會連絡您的身分識別管理服務。 身分識別管理服務會維護應用程式身分識別與通訊服務身分識別之間的對應。 (應用程式身分識別包括您的使用者和其他可定址的物件,例如服務或 Bot。
  3. 身分識別管理服務會使用對應來 發行適用身分識別的使用者存取權杖

Azure App 服務或 Azure Functions 是用來操作身分識別管理服務的兩個替代方案。 這些服務可輕鬆地進行調整,並具有內建功能來 驗證 使用者。 它們已與 OpenID 和協力廠商身分識別提供者整合,例如 Facebook

資源

使用者呼叫應用程式或電話號碼

最簡單的語音和視訊通話案例牽涉到使用者在前景呼叫其他使用者,而不需要推播通知。 您可以將通訊服務語音和視訊通話整合到 Web、原生行動裝置和 Windows 傳統型應用程式。 開放原始碼 UI 連結 可協助您加速開發。

Diagram that shows Communication Services calling without push notifications.

下載此架構的 Visio 檔案

資料流程

  1. 起始的使用者會取得想要呼叫之人員的通訊服務身分識別。 在一般案例中,使用者會從 身分識別管理服務所維護的朋友清單中 取得身分識別。 此清單會整理使用者的朋友和相關聯的通訊服務身分識別。
  2. 起始的使用者會啟動通話用戶端,並呼叫遠端使用者。
  3. 接受的使用者會透過通話 SDK 收到來電通知。 若要接收來電,接受者必須已經初始化呼叫用戶端。
  4. 使用者在通話中透過語音和視訊彼此通訊。

當使用者呼叫外部電話號碼時,資料流程幾乎完全相同。 主要差異在於,若要存取傳統電話語音,起始的使用者用戶端必須向控制器服務要求來源和目的地電話號碼,而不是要求使用者身分識別。

在某些情況下,您可能想要應用程式使用 Apple 推播通知等平臺服務,在背景接受通話。 您可以整合 通訊服務與 Azure 通知中樞來 啟用此功能。

資源

使用者加入沒有邀請的群組通話

您可能希望使用者能夠在沒有明確邀請的情況下加入群組通話。 您的應用程式可能會提供持續 的社會空間 俱樂部 ,其中包含使用者可以在想要時加入的視訊通話頻道。 此資料流程顯示一開始由用戶端建立的呼叫,並允許遠端用戶端在沒有明確邀請的情況下加入:

Diagram that shows a call without an invitation.

下載此架構的 Visio 檔案

資料流程

  1. 起始的使用者會初始化 Call 用戶端,併發出群組呼叫。
  2. 起始的使用者會與通訊控制器服務共用群組通話識別碼。
  3. 通訊控制器服務會與其他使用者共用通話識別碼。 例如,如果應用程式提供使用者俱樂部,群組通話識別碼是儲存在 Azure Cosmos DB 中的俱樂部資料模型屬性。
  4. 其他使用者使用群組通話識別碼加入通話。
  5. 使用者在通話中透過語音和視訊彼此通訊。

Microsoft 365 與 Teams

許多組織都會使用 Microsoft 365 和 Teams 進行通訊。 通訊服務和 Teams 互通, 可啟用下列案例:

  • 建置自訂應用程式,以允許外部使用者加入 Teams 會議。 此案例適用于虛擬流覽案例,其中使用 Teams 的企業會為使用自訂應用程式和自訂身分識別的外部取用者主持會議。 若要深入瞭解此案例,請參閱 虛擬流覽教學課程和範例產生器
  • 使用 Teams/Microsoft Entra 認證為內部使用者建置自訂應用程式。 此案例是專為為員工建置自訂 Teams 用戶端所設計。

這些自訂應用程式案例使用 Microsoft Graph API 和通訊服務。 當您建置連線到 Teams 的外部應用程式和服務時,通常會使用 Microsoft Graph 作為 Teams 控制平面 。 您可以使用此控制平面來設定通訊的人員,以及他們何時使用 API 進行通訊:

您可以使用這些控制 API 的資訊,例如會議 URL 和執行緒識別碼,將通訊服務通話和聊天用戶端連線到 Teams 資料平面。

Teams 也有 SDK,可在 Teams 體驗內 以及透過 Teams 市 集新增自訂功能 ,例如索引標籤、Bot 和自動化。 這些案例超出本文的範圍。

通訊服務不支援直接與 Teams 頻道互動。 針對自訂應用程式,您可以使用 Microsoft Graph 聊天 頻道 API,為存取頻道的員工建置自訂用戶端。

應用程式會加入排程的 Teams 通話

通訊服務應用程式可以加入 Teams 通話。 對於外部使用者,應用程式需要 Teams 會議的連結。 連結擷取是透過 Microsoft Graph API 進行管理。 以下是資料流程:

Diagram showing Communication Services architecture for joining a Teams meeting.

下載此架構的 Visio 檔案

資料流程

  1. (1A) 通訊控制器服務會使用 Microsoft Graph API 排程群組呼叫。 在另一個使用案例中,使用者會使用 Outlook 或 Teams 排程群組通話。
  2. 通訊控制器服務會與通訊服務用戶端共用 Teams 通話的詳細資料。
  3. 一般而言,Teams 使用者必須透過 Teams UI 加入通話,並允許外部使用者通過 Teams 預先通話大廳。 不過,這項需求取決於 Teams 租使用者的設定和特定的會議設定。
  4. 通訊服務使用者會使用步驟 2 中收到的詳細資料,初始化通話用戶端並加入 Teams 會議。
  5. 使用者透過語音和視訊彼此通訊。

資源

參與者

本文由 Microsoft 維護。 原始投稿人如下。

主體作者:

其他投稿人:

若要查看非公用LinkedIn設定檔,請登入 LinkedIn。

下一步