借助 Google Chat API,您可以将其他即时通讯平台中的数据导入到 Google Chat。您可以从其他即时通讯平台导入现有消息、附件、回应、成员资格和聊天室实体,并将其导入相应的 Chat API 资源。如需导入这些数据,您可以在导入模式下创建 Chat 聊天室,并将数据导入这些聊天室。
下面概述了使用导入模式空间导入数据所涉及的步骤:
前提条件
- 聊天应用。如需创建 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 中,这些操作均通过历史成员资格 createTime
和 deleteTime
字段表示为添加或移除。
验证导入的资源
通过对 Message
资源调用 list
方法 ,您的 Chat 应用可以回读并验证导入模式空间的内容。您可以从任何返回消息的 emojiReactionSummaries
和 attachment
字段中读取 Reaction
和 Attachment
资源。聊天应用只能通过模拟用户代表用户调用此方法。如需了解详情,请参阅向 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
范围创建成员资格,并向所有成员提供对导入的聊天室的访问权限。