你当前正在访问 Microsoft Azure Global Edition 技术文档网站。 如果需要访问由世纪互联运营的 Microsoft Azure 中国技术文档网站,请访问 https://docs.azure.cn

聊天概念

Azure 通信服务聊天可以帮助你向跨平台应用程序添加实时文本通信。 此页汇总了重要的聊天概念和功能。 有关 SDK、语言、平台和详细功能支持的列表,请参阅通信服务聊天软件开发工具包 (SDK) 概述

聊天 API 为持久存储的文本和数据通信提供自动缩放服务。 其他关键功能包括:

  • 自定义标识和寻址 - Azure 通信服务提供通用标识来对通信终结点进行寻址。 客户端使用这些标识向 Azure 服务进行身份验证,并且与 chat threads 中由你控制的其他服务彼此通信。
  • 加密 - 聊天 SDK 加密流量并防止篡改线路。
  • Microsoft Teams 会议 - 聊天 SDK 可以加入 Teams 会议并通过 Teams 聊天消息进行交流。
  • 实时通知 - 聊天 SDK 使用高效的持久连接 (WebSockets) 来接收实时通知,例如远程用户输入内容时。 当应用在后台运行时,内置功能可用于触发弹出通知(“toast”)以通知最终用户新线程和消息。
  • 机器人扩展性 - 使用 Azure 机器人集成轻松地将 Azure 机器人添加到聊天服务。

聊天概述

聊天对话在聊天线程中进行。 聊天线程具有以下属性:

  • 聊天会话标识是它的 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 互操作方案,Azure 通信服务用户(不是 Teams 用户)的数量必须低于 20,这样才能支持键入指示器功能。
  • 创建聊天会话时,可以设置 30 到 90 天之间的保留策略。
  • 对于 Teams 互操作方案,键入指示器事件可能在从 Teams 用户发送时包含空白的显示名称。
  • 对于 Teams 互操作方案,Teams 用户不支持已读回执。

聊天体系结构

聊天体系结构有两个核心部分:1) 受信任的服务和 2) 客户端应用程序。

显示通信服务聊天体系结构的关系图。

  • 受信任服务:若要正确管理聊天会话,需要一种服务,可帮助你使用资源连接字符串连接到通信服务。 此服务负责创建聊天线程、添加和删除参与者,并为用户颁发访问令牌。 有关详细信息,请参阅快速入门:创建和管理访问令牌
  • 客户端应用:客户端应用程序连接到你的受信任服务,并接收用户直接连接到通信服务所需的访问令牌。 创建聊天会话并添加参与者后,他们可以使用客户端应用程序连接到聊天会话并发送消息。 参与者可以在你的客户端应用程序中使用实时通知来订阅来自其他成员的消息和会话更新。

构建 AI 支持的智能聊天体验

可以将 Azure AI 服务与聊天服务配合使用来生成用例,例如:

  • 通过检测来自客户的传入消息的负面情绪,帮助支持代理设置票证优先级。
  • 在对话结束时生成摘要,通过电子邮件向客户发送后续步骤或在之后跟进。
  • 使用 Azure 机器人和中继机器人在 Azure 通信服务聊天频道中添加 Power Virtual Agent (PVA)。
  • 将机器人配置为与聊天频道一起在一个或多个社交频道上运行。

显示 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 中可用。

后续步骤