你当前正在访问 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 通信服务无限期地存储聊天消息,直到客户将其删除。 聊天线程参与者可以使用 ListMessages 查看特定线程的消息历史记录。 从聊天线程中删除的用户可以查看以前的消息历史记录,但无法发送或接收新消息。 系统无法恢复意外删除的消息。 若要了解有关存储在Azure 通信服务聊天服务中的数据的详细信息,请参阅数据驻留和隐私页

2024 年,将引入新功能,客户必须在 90 天后在无限期邮件保留或自动删除之间进行选择。 现有消息不受影响。

对于使用虚拟约会的客户,请参阅 Teams 互操作性 用户隐私 ,以便在 Teams 会议中存储聊天消息。

服务限制

  • 聊天线程中允许的最大参与者数量为 250。
  • 允许的最大消息大小大约为 28 KB。
  • 对于包含 20 多名参与者的聊天线程,不支持阅读回执和键入指示器功能。
  • 对于 Teams 互操作方案,它是Azure 通信服务用户数,而不是 Teams 用户,必须低于 20 才能支持键入指示器功能。
  • 对于 Teams 互操作方案,键入指示器事件可能包含从 Teams 用户发送时的空白显示名称。
  • 对于 Teams 互操作方案,Teams 用户不支持已读回执。

聊天体系结构

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

Diagram showing Communication Services' chat architecture.

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

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

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

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

Diagram showing Azure Communication Services can be paired with Azure AI services.

消息类型

作为消息历史记录的一部分,聊天共享用户生成的消息和系统生成的消息。

系统消息在以下情况下生成

  • 聊天线程已更新
  • 已添加或删除参与者
  • 聊天线程主题已更新。

调用或Get Messages聊天List 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 中可用。

后续步骤

你可能会对下列文档感兴趣: