将数据导入 Google Chat

借助 Google Chat API,您可以将其他即时通讯平台中的数据导入到 Google Chat。您可以从其他即时通讯平台导入现有消息、附件、回应、成员资格和聊天室实体,并将其导入相应的 Chat API 资源。如需导入这些数据,您可以在导入模式下创建 Chat 聊天室,并将数据导入这些聊天室。

下面概述了使用导入模式空间导入数据所涉及的步骤:

  1. 查看 API 用量限额并提前规划
  2. 为 Chat 应用配置授权
  3. 在导入模式下创建聊天室
  4. 导入资源
  5. 验证导入的资源
  6. 协调导入的资源与源数据之间的差异
  7. 完整导入模式
  8. 创建会员资源

前提条件

  • 聊天应用。如需创建 Chat 应用,请参阅创建聊天应用
  • 为 Chat 应用配置授权。必须为 Chat 应用导入内容的所有网域内的全网域授权。请参阅授权 Chat 应用

查看 API 用量限额并提前规划

将数据导入 Chat 所需的时间可能会有所不同,具体取决于要导入的 Chat 资源的数量。提前规划,方法是查看 Chat 应用的用量限额和计划从源消息传递平台导入的数据量,以确定预计时间表。

在导入模式下创建聊天室

如需在导入模式下创建聊天室,请对 Space 资源调用 create 方法,并将 importMode 设置为 true。为了保留来源消息传递平台中等效聊天室实体的创建时间,您可以设置聊天室的 createTime。此 createTime 必须设置为 2000 年 1 月 1 日到当前时间之间的值。

记下您创建的聊天室的 name,以便在后续步骤中将内容导入聊天室时引用它。

从调用 create 方法开始,Chat 应用有 30 天的时间来将不包含成员资格的资源导入聊天室、完成导入模式以及使用 chat.import 范围创建成员资格资源。聊天应用仍然可以在采用标准 Chat API 成员资格范围 30 天后创建成员资格。30 天后,如果聊天室仍处于导入模式,该聊天室将被自动删除,并且 Chat 应用将无法访问和恢复该聊天室。请提前查看 Chat 应用的用量限额,确保在此时间范围内可以将所有预定资源导入 Chat。

以下示例展示了如何在导入模式下创建聊天室:

Apps 脚本

function createSpaceInImportMode() {
  const space = Chat.Spaces.create({
      spaceType: 'SPACE',
      displayName: 'Import Mode Space',
      importMode: true,
      createTime: (new Date('January 1, 2000')).toJSON()
  });
  console.log(space.name);
}

导入资源

如需从其他即时通讯平台导入资源,您可以在导入模式聊天室中创建 Google Chat 资源(例如消息、回应和附件)。在聊天室中创建资源时,您需要指定迁移来源消息平台的相关资源中的数据。

消息

您的聊天应用可以使用自己的授权导入消息,也可以通过模拟用户代表用户导入消息。(消息作者被设置为模拟用户帐号。)如需了解详情,请参阅向 Chat 应用授权。如需在导入模式空间中导入消息,请对 Message 资源调用 create 方法。为了保留源消息传递平台的原始消息的创建时间,您可以设置消息的 createTime。此 createTime 必须设置为介于您之前设置的空间创建时间与当前时间之间的值。

同一聊天室中的消息不能包含相同的 createTime,即使之前具有该时间的消息已被删除。

在导入模式聊天室中包含第三方网址的消息无法在 Google Chat 中呈现链接预览。

在导入模式下创建消息时,聊天室不会向任何用户发送通知或发送电子邮件,包括包含用户提及的消息。

观众反应

您的 Chat 应用可以使用 Chat API 导入对消息的回应。如需了解导入模式聊天室中的资源方法和身份验证支持的类型,请参阅授权 Chat 应用

附件

您的 Chat 应用可以使用 Chat API 上传附件。如需了解导入模式聊天室中的资源方法和身份验证支持的类型,请参阅授权 Chat 应用

历史会员

历史成员资格是针对已从源消息传递平台离开原始聊天室实体,但您希望在 Chat 中保留其数据的用户创建的成员资格。如需了解如何在聊天室不再处于导入模式后添加新成员,请参阅创建成员资源

在许多情况下,如果这些历史成员受 Google 数据保留政策的约束,您需要先将历史成员资格所创建的数据(例如消息和回应)保留在聊天室中,然后再将其导入 Chat。当聊天室处于导入模式时,您可以使用 Membership 资源create 方法将这些历史成员导入到聊天室。为了保留历史成员资格的退出时间,您必须设置成员资格的 deleteTime。此离开时间必须准确,因为它会影响为这些成员资格保留哪些数据。此外,此 deleteTime 必须晚于聊天室创建时间戳,且不得是未来的时间戳。

除了 deleteTime 之外,您还可以设置 createTime 以保留历史成员资格的原始联接时间。与 deleteTime 不同,createTime 是可选的。如果未设置,系统将自动从 deleteTime 中减去 1 微秒,以自动计算 createTime。如果设置了此项,createTime 必须在 deleteTime 之前,并且不得早于聊天室创建时间。此 createTime 信息不会用于确定数据保留期限,不会显示在 Google 管理控制台和 Google 保险柜等管理工具中。

虽然用户可以在源消息平台中通过多种方式加入和退出聊天室(通过邀请、自行加入、由其他用户添加),但在 Chat 中,这些操作均通过历史成员资格 createTimedeleteTime 字段表示为添加或移除。

验证导入的资源

通过对 Message 资源调用 list 方法 ,您的 Chat 应用可以回读并验证导入模式空间的内容。您可以从任何返回消息的 emojiReactionSummariesattachment 字段中读取 ReactionAttachment 资源。聊天应用只能通过模拟用户代表用户调用此方法。如需了解详情,请参阅向 Chat 应用授权

Chat 应用还可以通过对 Message 资源调用 get 方法来读取单条消息以供验证。聊天应用只能调用此方法,使用自己的权限来读取自己的消息。如需了解详情,请参阅向 Chat 应用授权

聊天应用还可以对 Membership 资源调用 list 方法,以列出历史成员资格。聊天室退出导入模式后,list 方法将不再公开历史成员资格。聊天应用只能通过模拟用户来代表用户调用此方法。如需了解详情,请参阅向 Chat 应用授权

您可以通过对 Space 资源调用 get 方法来读取导入模式空间的属性。聊天应用只能使用自己的授权调用此方法。 如需了解详情,请参阅向 Chat 应用授权

调和导入的资源差异与源数据

如果由于导入期间原始实体发生变更,任何导入的资源不再与源即时通讯平台中的原始实体匹配,Chat 应用可以调用 Chat API 来修改导入的聊天资源。例如,如果用户在 Chat 中创建消息后在源消息传递平台上修改了该消息,Chat 应用可以更新导入的消息,使其反映原始消息的当前内容。

消息

如需在导入模式空间中更新消息的受支持字段,请对 Message 资源调用 update 方法。聊天应用调用此方法的权限只能使用最初创建消息时所使用的权限。如果您在初始消息创建期间使用了用户模拟,则必须使用同一模拟用户更新该消息。

如需在导入模式空间中删除消息,请对 Message 资源调用 delete 方法。导入模式聊天室中的消息不需要由原始消息创建者删除,您可以通过模拟网域中的任何用户来将其删除。聊天应用只能使用自己的授权删除自己的消息。如需了解详情,请参阅向 Chat 应用授权

观众反应

如需在导入模式聊天室中删除消息的回应,请对 reactions 资源使用 delete 方法。如需了解导入模式聊天室中的资源方法和身份验证支持的类型,请参阅授权 Chat 应用

附件

如需在导入模式聊天室中更新消息的附件,请对 media 资源使用 upload 方法。如需了解导入模式聊天室中的资源方法和身份验证支持类型,请参阅授权 Chat 应用

历史会员

如需删除导入模式空间中的历史成员资格,请针对 Membership 资源使用 delete 方法。聊天室退出导入模式后,delete 方法将不再允许您删除历史成员资格。

您无法在导入模式聊天室中更新历史成员资格。如果要更正错误导入的历史成员资格,您需要先将其删除,然后在空间仍处于导入模式时重新创建。

聊天室

如需更新导入模式空间中支持的字段,请针对 spaces 资源使用 patch 方法

如需删除导入模式空间,请对 spaces 资源使用 delete 方法

如需了解导入模式聊天室中的资源方法和身份验证支持类型,请参阅授权 Chat 应用

完成导入模式

在调用 completeImport 方法之前,您应确保完成验证资源差异协调。退出导入模式空间是一个不可逆的过程,它会将导入模式空间转换为常规空间。Chat 中没有任何指示器可将这些聊天室归因于数据导入操作。

为了完成导入模式并允许用户访问聊天室,Chat 应用可以对 Space 资源调用 completeImport 方法。聊天应用只能通过模拟用户代表用户调用此方法。如需了解详情,请参阅向 Chat 应用授权。此方法完成后,系统会将模拟用户作为聊天室管理员添加到聊天室。必须在首次调用 create.space 方法后的 30 天内调用此方法。如果您在 30 天期限过后尝试调用此方法,调用会导致失败,因为导入模式空间已被删除,且不再可供 Chat 应用访问。

completeImport 方法中的模拟用户不必是聊天室创建者。

创建会员资源

如需为已完成导入模式的聊天室添加用户成员资格,请对 Membership 资源调用 create 方法。在初始 create.space 方法调用后的 30 天内,聊天应用可继续使用 chat.import 范围和用户模拟调用此方法。模拟用户必须是聊天室管理员。

30 天期限过后,Chat 应用需要额外的成员资格范围才能调用此方法。

我们建议 Chat 应用在导入完成后立即创建成员资格资源,以便 Chat 应用可以继续使用 chat.import 范围创建成员资格,并向所有成员提供对导入的聊天室的访问权限。