聊天概念

Azure 通訊服務的聊天功能可協助您在跨平台應用程式中新增即時文字通訊。 此頁面將摘要說明重要的聊天概念和功能。 如需 SDK、語言、平台和詳細功能支援的清單,請參閱通訊服務聊天軟體開發套件 (SDK) 概觀

聊天 API 可提供自動縮放服務,讓您持續進行預存文字和資料通訊。 其他主要功能包括:

  • 自訂身分識別和定址 - Azure 通訊服務提供用來定址通訊端點的一般身分識別。 用戶端會使用這些身分識別向 Azure 服務進行驗證,並在您控制的 chat threads 中互相通訊。
  • 加密 - 聊天 SDK 會加密流量,防止流量在網路上遭到竄改。
  • Microsoft Teams 會議 - 聊天 SDK 可以加入 Teams 會議,並使用 Teams 聊天訊息來通訊。
  • 即時通知 - 聊天 SDK 會使用有效率的持續性連線能力 (WebSocket) 來接收即時通知,例如在遠端使用者輸入文字時。 當應用程式在背景中執行時,有內建功能會引發快顯通知,以通知終端使用者有新的執行緒和訊息。
  • Bot 擴充性 - 使用 Azure Bot 整合,輕鬆地將 Azure Bot 新增至聊天服務。

聊天概觀

聊天交談會在聊天對話內進行。 聊天對話具有下列屬性:

  • 聊天對話身分識別是其 ChatThreadId
  • 聊天對話會有 0 到 250 位使用者,參與者可在其中傳送訊息。
  • 使用者可以參與數量不限的聊天對話。
  • 只有對話參與者能夠傳送或接收訊息、新增參與者或移除參與者。
  • 系統會將建立聊天對話的使用者新增為對話參與者。

使用者存取

Azure 通訊服務支援三個層級的使用者存取控制,使用聊天權杖。 如需詳細資訊,請參閱身分識別和權杖。 參與者沒有其他參與者所傳送訊息的寫入權限,這表示只有訊息傳送者可以更新或刪除其傳送的訊息。 如果其他參與者嘗試這麼做,便會收到錯誤。

聊天資料

Azure 通訊服務 根據建立線程時生效的數據保留原則來儲存聊天線程。 您可以在設定的保留期間內視需要更新保留原則。 刪除聊天對話之後(依原則或刪除 API 要求),就無法擷取。

重要

本文所述的功能目前處於公開預覽狀態。 此預覽版本沒有服務等級協定,不建議用於處理生產工作負載。 可能不支援特定功能,或可能已經限制功能。 如需詳細資訊,請參閱 Microsoft Azure 預覽版增補使用條款

您可以選擇無限期線程保留、透過建立聊天對話 API 上的保留原則自動刪除 30 到 90 天,或使用 API 刪除聊天訊息或刪除聊天對話立即刪除。

除非您特別變更該線程的原則,否則在新的保留原則之前建立的任何線程不會受到影響。 如果您在保留原則刪除該線程 30 天后提交已刪除聊天對話的支援要求,就無法再擷取該線程,也無法取得該線程的相關信息。 如有需要,請在建立線程之後,儘快在 30 天內開啟支援票證,以便我們協助您。

聊天對話參與者可使用 ListMessages 來檢視特定對話的訊息記錄。 ListMessages如果刪除線程,API 就無法傳回線程的歷程記錄。 從聊天對話中移除的使用者能夠檢視先前的訊息記錄,但無法傳送或接收新訊息。 系統無法復原意外刪除的訊息。 若要深入了解 Azure 通訊服務聊天服務所儲存的資料,請參閱資料落地和隱私權頁面

對於使用虛擬約會的客戶,請參閱 Teams 互通性使用者隱私權,以了解儲存 Teams 會議中的聊天訊息。

服務限制

  • 聊天對話中允許的參與者數目上限是 250 人。
  • 允許的訊息大小上限大約是 28 KB。
  • 對於具有20多名參與者的聊天線程,不支援讀取收據和輸入指標功能。
  • 針對 Teams Interop 案例,這是 Azure 通訊服務 用戶的數目,而不是 Teams 使用者,必須低於 20,才能支援輸入指標功能。
  • 建立聊天對話時,您可以設定 30 到 90 天的保留原則。
  • 針對 Teams Interop 案例,輸入指標事件可能會在從 Teams 使用者傳送時包含空白顯示名稱。
  • 針對 Teams Interop 案例,不支援 Teams 使用者的讀取回條。

聊天架構

聊天架構有兩個核心部分:1) 受信任的服務和 2) 用戶端應用程式。

此圖顯示通訊服務的聊天架構。

  • 信任的服務:若要正確管理聊天工作階段,您需要可協助您使用資源連接字串來連線到通訊服務的服務。 此服務負責建立聊天對話、新增和移除參與者,以及對使用者發出存取權杖。 如需詳細資訊,請參閱 快速入門:建立和管理存取令牌 快速入門。
  • 用戶端應用程式: 用戶端應用程式會連線到您信任的服務,並接收使用者直接連線至通訊服務所需的存取令牌。 建立聊天對話並新增參與者之後,他們可以使用用戶端應用程式來連線到聊天對話並傳送訊息。 參與者可以在用戶端應用程式中使用即時通知,訂閱來自其他成員的訊息和線程更新。

建置由 AI 支援的智慧型聊天體驗

您可以使用 Azure AI 服務搭配聊天服務來建置如下的使用案例:

  • 藉由偵測客戶所傳入訊息的負面情緒,協助支援專員安排票證的優先順序。
  • 在交談結束時產生摘要,透過電子郵件傳送給客戶,其中包含後續步驟或稍後日期的後續操作。
  • 在具有 Azure Bot 和轉送 Bot 的 Azure 通訊服務聊天頻道中新增 Power Virtual Agent (PVA)。
  • 設定 Bot 連同聊天頻道一起執行一或多個社交頻道。

顯示 Azure 通訊服務 可與 Azure AI 服務配對的圖表。

訊息類型

聊天會在訊息記錄中分享使用者產生的訊息以及系統產生的訊息。

系統訊息產生時機

  • 已更新聊天對話
  • 已新增或已移除參與者
  • 已更新聊天對話主題。

當您在聊天對話上呼叫 List MessagesGet Messages 時,結果中會同時包含這兩種訊息 (依時間順序排列)。 針對使用者產生的訊息,您可以在傳送訊息至聊天對話時,於 SendMessageOptions 中設定訊息類型。 如果未提供任何值,通訊服務會預設為 text 類型。 在傳送 HTML 時,設定此值是很重要的工作。 若指定 html,通訊服務會清理內容,以確保內容會安全地轉譯到用戶端裝置上。

  • text:使用者在聊天對話中撰寫及傳送的純文字訊息。
  • html:使用者在聊天對話中撰寫及傳送的 html 格式化訊息。

系統訊息的類型:

  • participantAdded:表示一或多個參與者在聊天對話中的系統訊息。
  • participantRemoved:指出聊天對話中有參與者遭到移除的系統訊息。
  • topicUpdated:指出線程主題已更新的系統訊息。

即時通知

JavaScript 聊天 SDK 支援即時通知。 此功能可讓用戶端接聽通訊服務,以得知聊天對話的即時更新和傳入訊息,而不需要輪詢 API。

用戶端應用程式可以訂閱下列事件:

  • chatMessageReceived - 有參與者傳送新訊息至聊天對話時。
  • chatMessageEdited - 有人編輯聊天對話中的訊息時。
  • chatMessageDeleted - 有人刪除聊天對話中的訊息時。
  • typingIndicatorReceived - 其他參與者將輸入指標傳送至聊天對話時。
  • readReceiptReceived - 其他參與者傳送其已讀訊息的讀取回條時。
  • chatThreadCreated - 通訊服務使用者建立聊天對話時。
  • chatThreadDeleted - 通訊服務使用者刪除聊天對話時。
  • chatThreadPropertiesUpdated - 聊天對話屬性有所更新時;目前僅支援更新對話主題。
  • participantsAdded - 有使用者新增為聊天對話參與者時。
  • participantsRemoved - 現有參與者從聊天對話中遭到移除時。
  • realTimeNotificationConnected - 即時通知連線時。
  • realTimeNotificationDisconnected - 即時通知中斷連線時。

注意

即時通知不會與伺服器應用程式搭配使用。

伺服器事件

此功能可讓伺服器應用程式接聽事件,例如傳送訊息時,以及參與者加入或離開聊天時。 伺服器應用程式可以回應這些事件,在聊天中新增/移除參與者、封存聊天、執行分析,以及其他許多協調流程案例。 若要查看開發人員可以使用哪些類型的聊天事件,請參閱伺服器事件

推播通知

Android 和 iOS 聊天 SDK 支援推播通知。 若要在參與者離開時傳送訊息的推播通知,請連接通知中樞資源與通訊服務資源以傳送推播通知。 這樣做會通知應用程式參與者在行動應用程式未在前景執行時傳入的聊天和訊息。

iOS 和 Android SDK 支援下列事件:

  • chatMessageReceived - 當參與者將新訊息傳送至聊天對話時。

Android SDK 支援額外的事件:

  • chatMessageEdited - 當參與者在聊天對話中編輯訊息時。
  • chatMessageDeleted - 當參與者刪除聊天對話中的訊息時。
  • chatThreadCreated - 通訊服務使用者建立聊天對話時。
  • chatThreadDeleted - 通訊服務使用者刪除聊天對話時。
  • chatThreadPropertiesUpdated - 當您更新聊天對話屬性時;目前僅支援更新線程的主題。
  • participantsAdded - 當您將參與者新增至聊天對話時。
  • participantsRemoved - 當您從聊天對話中移除現有的參與者時。

如需詳細資訊,請參閱推播通知

注意

使用通知中樞來傳送聊天推播通知的功能,目前已在 Android 1.1.0 版和 IOS 1.3.0 版中正式推出。

下一步