將資料匯入 Google Chat

你可以使用 Google Chat API 從其他訊息平台匯入資料 。你可以匯入現有的郵件、附件、回應 從其他訊息平台取得 對應的 Chat API 資源。 如要匯入這類資料,請在下列位置建立 Chat 聊天室: 匯入模式 並將資料匯入這類聊天室程序順利完成後 這些聊天室會成為標準的 Chat 聊天室。

以下概述完整的匯入程序:

  1. 規劃匯入作業
  2. 為 Chat 應用程式設定授權
  3. 在匯入模式下建立聊天室
  4. 匯入資源
  5. 驗證匯入的資源
  6. 協調匯入資源與來源資料的差異
  7. 完成匯入模式
  8. 在匯入模式後授予聊天室存取權
  9. 疑難排解

先備知識

Apps Script

Python

  • Python 3.6 以上版本
  • pip 套件管理工具
  • 最新的 Python 專用 Google 用戶端程式庫。如何安裝或更新 請在指令列介面中執行下列指令:

    pip3 install --upgrade google-api-python-client google-auth
    
  • 已發布的 Chat 應用程式。如何建立並發布 Chat 擴充應用程式,請參閱 建構 Google Chat 應用程式

  • 已為 Chat 應用程式設定授權。 Chat 應用程式必須設為全網域委派授權 在應用程式匯入內容的任何網域中,請參閱 授權 Chat 擴充應用程式

規劃匯入作業

請據此規劃匯入的資料量,並瞭解如何 用量限制與配額可能會影響 匯入程序,以及瞭解 Chat 聊天室類型 。

查看 API 用量限制

將資料匯入 Chat 所需的時間可能差異很大 取決於要匯入的 Chat 資源數量。 查看 Chat 應用程式的 用量限制和排定的資料量 從來源訊息平台匯入,以確定預估時間軸。

將訊息匯入聊天室時,建議你將通話轉接至聊天室 至 messages.create() 這個方法。

找出要匯入的受支援聊天室

匯入模式僅支援 SPACESpaceType。並不支援 SpaceType/GROUP_CHATDIRECT_MESSAGE。詳情請參閱 SpaceType」的說明文件 瞭解詳情

在匯入模式中建立聊天室

如要在匯入模式中建立聊天室,請呼叫 create 方法Space 項資源 並將 importMode 設為 true

在匯入模式中建立聊天室時,請注意下列事項。

  • 日期和時間:請記得,匯入模式必須在 30 天內完成 天。如果聊天室在 30 後仍處於匯入模式 自呼叫 spaces.create() 方法以來的天數 並自動刪除,並且無法還原。
    • 請不要使用 createTime ] 欄位追蹤 30 天期限的到期。這並不是 一律與呼叫 spaces.create() 方法時相同。時間 使用匯入模式,createTime 欄位就可以設為歷史紀錄 建立聊天室的時間戳記,以便 保留原始建立時間
  • 聊天室資源名稱 (name) - 這個專屬識別碼可用來擷取 並會在後續步驟中參照 在太空中付諸實行

保留來源中同等聊天室實體的建立時間 訊息平台,您可以設定聊天室的 createTime。這個 createTime 必須設為介於 2000 年 1 月 1 日到現在時間之間的值。

如要在匯入模式中建立外部聊天室,請將 externalUserAllowed 設為 true。 匯入完成後,您就可以新增外部使用者。

以下範例說明如何在匯入模式中建立聊天室:

Apps Script

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

Python

"""Create a space in import mode."""

import datetime

from google.oauth2 import service_account
from googleapiclient.discovery import build

# Specify required scopes.
SCOPES = [
    'https://www.googleapis.com/auth/chat.import',
]

CREDENTIALS = (
    service_account.Credentials.from_service_account_file('credentials.json')
    .with_scopes(SCOPES)
    .with_subject('EMAIL')
)

# Build a service endpoint for Chat API.
service = build('chat', 'v1', credentials=CREDENTIALS)

result = (
    service.spaces()
    .create(
        body={
            'spaceType': 'SPACE',
            'displayName': 'DISPLAY_NAME',
            'importMode': True,
            'createTime': f'{datetime.datetime(2000, 1, 1).isoformat()}Z',
        }
    )
    .execute()
)

print(result)

更改下列內容:

  • EMAIL:來源使用者帳戶的電子郵件地址 是在網域層級的授權下代理。
  • DISPLAY_NAME:在當中建立的聊天室名稱 匯入模式這個屬性必須指定顯示聊天室的專屬名稱 。建議您使用與 您要匯入資料的來源空間。

匯入資源

如要從其他訊息平台匯入資源,請建立 Google Chat 資源 (例如訊息、回應、附件) 的匯入模式。 在聊天室中建立資源時,您要指定從相關 從要遷移的訊息平台存取資源

訊息

Chat 應用程式可以使用自己的授權匯入訊息,或 代表使用者訊息作者已設為 模擬使用者帳戶若需更多資訊,請參閲 授權 Chat 擴充應用程式。 如要匯入 訊息,請呼叫 create 方法Message 項資源。 保留來源訊息的原始訊息建立時間 訊息平台可以設定訊息的 createTime。這個 「createTime」必須設為聊天室建立時間之間的值 以及先前設定的時間

即使訊息屬於同一個聊天室,還是不得包含相同的createTime 系統就會刪除與該時間相關的舊訊息。

在匯入模式的聊天室中,含有第三方網址的訊息無法轉譯連結 直接在 Google Chat 中預覽

在匯入模式下建立郵件時,聊天室並未通知或傳送電子郵件 包括含有以下內容的訊息: 使用者提及的內容。

以下範例說明如何在匯入模式聊天室中建立訊息:

Python

"""Create a message in import mode space."""

import datetime

from google.oauth2 import service_account
from googleapiclient.discovery import build

# Specify required scopes.
SCOPES = [
    'https://www.googleapis.com/auth/chat.import',
]

CREDENTIALS = (
    service_account.Credentials.from_service_account_file('credentials.json')
    .with_scopes(SCOPES)
    .with_subject('EMAIL')
)

# Build a service endpoint for Chat API.
service = build('chat', 'v1', credentials=CREDENTIALS)

NAME = 'spaces/SPACE_NAME'
result = (
    service.spaces()
    .messages()
    .create(
        parent=NAME,
        body={
            'text': 'Hello, world!',
            'createTime': f'{datetime.datetime(2000, 1, 2).isoformat()}Z',
        },
    )
    .execute()
)

print(result)

更改下列內容:

回應

Chat 應用程式可匯入 回應訊息 透過 Chat API 管理如要瞭解資源方法和 匯入模式聊天室中的驗證支援類型,請參閱 授權 Chat 擴充應用程式

附件

Chat 應用程式可以 上傳附件 透過 Chat API 管理如要瞭解資源方法和 匯入模式聊天室中的驗證支援類型,請參閱 授權 Chat 擴充應用程式。不過 我們強烈建議您使用 Google Drive API 將 以 Google 雲端硬碟檔案上傳附件,並將檔案 URI 連結至 匯入模式聊天室中的個別郵件,以便從其他郵件匯入附件 避免訊息平台達到 Google Chat 內部附件數量上限 上傳。

過往會籍

過往的會員資格是為已離開會員的使用者建立 原始聊天室實體,但想擴充 在 Chat 中保留使用者資料。 說明在聊天室停止匯入後如何新增成員 模式,請參閱「建立成員資格資源」。

在許多情況下,當他們的歷史成員受制於特定人士時 Google 的資料保留政策, 您想保留由管理員建立的資料 (例如訊息和回應) 先是聊天室成員,然後再匯入 Chat。 在聊天室處於匯入模式時,你可以匯入過往成員資格 透過 create 方法Membership 項資源。 為保留舊會籍的休假,你必須 會員的 deleteTime。這個出發時間必須準確,因為這項資訊 會影響要為會員保留哪些資料。此外,這個deleteTime 必須晚於聊天室建立時間戳記,而且不得為未來的時間戳記。

除了 deleteTime 以外,您也可以設定 createTime 來保留 過往會籍的加入時間。與 deleteTime 不同, createTime 為選用項目,如未設定,createTime 會自動計算 從 deleteTime 減去 1 微秒。如果已設定,createTime必須早於 deleteTime,且不得早於聊天室建立時間。此createTime 資訊不會用於決定資料保留情況,也不會顯示在管理員中 工具,例如 Google 管理控制台和 Google 保管箱

使用者可以透過多種方式加入及離開聊天室 來源訊息平台 (透過邀請、自行加入、加入 在 Chat 中處理這些動作時, 即將新增的成員 createTimedeleteTime 欄位 或已移除

下例顯示如何在匯入時建立過往成員資格 模式空間:

Python

"""Create a historical membership in import mode space."""

import datetime

from google.oauth2 import service_account
from googleapiclient.discovery import build

# Specify required scopes.
SCOPES = [
    'https://www.googleapis.com/auth/chat.import',
]

CREDENTIALS = (
    service_account.Credentials.from_service_account_file('credentials.json')
    .with_scopes(SCOPES)
    .with_subject('EMAIL')
)

# Build a service endpoint for Chat API.
service = build('chat', 'v1', credentials=CREDENTIALS)

NAME = 'spaces/SPACE_NAME'
USER = 'users/USER_ID'
result = (
    service.spaces()
    .members()
    .create(
        parent=NAME,
        body={
            'createTime': f'{datetime.datetime(2000, 1, 3).isoformat()}Z',
            'deleteTime': f'{datetime.datetime(2000, 1, 4).isoformat()}Z',
            'member': {'name': USER, 'type': 'HUMAN'},
        },
    )
    .execute()
)

print(result)

更改下列內容:

匯入外部聊天室中的資源

你只能使用憑證建立外部聊天室的匯入模式 建立專屬於您的 Workspace 機構僅適用於這個情況 並在聊天室處於匯入模式時執行聊天室 「完成匯入模式」,外部使用者就能 受邀加入匯入的聊天室 (請參閱存取權部分) 及其憑證可用於呼叫 Chat API。

驗證匯入的資源

你的 Chat 應用程式可以讀取及驗證內容 就會呼叫匯入模式空間 上的 list 方法 Message 項資源。 您可以讀取任何傳回訊息中的 ReactionAttachment 資源 emojiReactionSummariesattachment 欄位。即時通訊應用程式可以 只透過模擬來代表使用者呼叫這個方法。如要 資訊,請參閱 授權 Chat 擴充應用程式

你的 Chat 應用程式也可以讀取個別訊息, 驗證方法是呼叫 get 方法Message 資源而言。 即時通訊應用程式只能藉由以下方式呼叫此方法來讀取自己的訊息: 發揮自身權力若需更多資訊,請參閲 授權 Chat 擴充應用程式

即時通訊應用程式也可以呼叫 list 方法Membership 項資源。 聊天室結束匯入模式後,list 方法不會顯示歷史資料 會員功能。即時通訊應用程式只能在 模擬使用者若需更多資訊,請參閲 授權 Chat 擴充應用程式

如要讀取匯入模式空間的屬性,請呼叫 get 方法Space 項資源。 即時通訊應用程式只能使用自己的授權呼叫此方法。 若需更多資訊,請參閲 授權 Chat 擴充應用程式

核對匯入的資源與來源資料的差異

如有任何匯入的資源與來源中的原始實體不符 由於匯入期間原始實體有所變更, 即時通訊應用程式可以呼叫 Chat API,修改匯入的內容 即時通訊資源例如,使用者編輯來源訊息中的訊息時 建立好訊息後 Chat 擴充應用程式可以更新匯入的訊息,反映 原始郵件的內容

訊息

更新 支援的欄位 針對匯入模式空間中的訊息,將 update 方法Message 資源。 即時通訊應用程式呼叫此方法時,必須使用 用於初次建立訊息的時間。如果您使用使用者模擬功能 初次建立訊息時,您必須使用同一個模擬使用者 更新這則訊息。

如要在匯入模式聊天室中刪除訊息,請呼叫 delete 方法Message 項資源。 處於匯入模式聊天室的郵件不需要由原始檔案刪除 訊息建立者,且可以冒用網域中任何使用者刪除。 Chat 擴充應用程式只能使用自己的訊息刪除自己的訊息 授權。若需更多資訊,請參閲 授權 Chat 擴充應用程式

回應

如要在匯入模式聊天室中刪除訊息的回應,請使用 delete 方法 reactions 資源上。如要瞭解資源方法和 匯入模式聊天室中的驗證支援類型,請參閱 授權 Chat 擴充應用程式

附件

如要在匯入模式聊天室中更新郵件附件,請使用 media 上的 upload 方法 資源。有關資源方法和驗證類型的資訊 支援匯入模式聊天室,請參閱 授權 Chat 擴充應用程式

過往會籍

如要在匯入模式聊天室中刪除過往成員資格,請使用 delete 方法Membership 項資源。執行 空格結束匯入模式,delete 方法不允許刪除歷史記錄 會員功能。

您無法在匯入模式聊天室中更新過往成員資格。如果您想 修正未正確匯入的過往成員資格,然後是刪除 ,然後在聊天室處於匯入模式時重新建立叢集。

Spaces

更新 支援的欄位 匯入模式空間,請使用 patch 方法spaces 資源上。

如要刪除匯入模式空間,請使用 delete 方法 spaces 資源上。

有關資源方法與驗證支援類型的資訊 在匯入模式的聊天室中,查看 授權 Chat 擴充應用程式

完成匯入模式

呼叫 completeImport 之前 方法,請務必確保驗證資源差異協調 狀態。退出匯入模式聊天室是無法復原的程序 會將匯入模式空間轉換為一般空格。沒有標示 將這些聊天室歸因於資料匯入的即時通訊。

記下呼叫 completeImport 的日期和時間 (資源名稱)。 以及系統傳回回應的使用者。這樣可以 如果您遇到任何問題,必須進行調查。

如要完成匯入模式並讓使用者存取聊天室, Chat 應用程式可以在以下位置呼叫 completeImport 方法: Space 資源。 即時通訊應用程式只能透過以下方式代表使用者呼叫這個方法: 假冒他人。若需更多資訊,請參閲 授權 Chat 擴充應用程式。 模擬的使用者會以下列身分新增至聊天室: 聊天室管理員 一旦此方法執行完畢您必須在首次啟用通知前 30 天內呼叫此方法, 初始 create.space 方法呼叫。如果您在 已經過 30 天,導致呼叫失敗,因為匯入作業會失敗 模式空間遭刪除,且無法再存取 Chat 應用程式。

completeImport 方法中模擬的使用者不必是 也就是太空創作者

以下範例說明如何完成匯入模式:

Python

"""Complete import."""

from google.oauth2 import service_account
from googleapiclient.discovery import build

# Specify required scopes.
SCOPES = [
    'https://www.googleapis.com/auth/chat.import',
]

CREDENTIALS = (
    service_account.Credentials.from_service_account_file('credentials.json')
    .with_scopes(SCOPES)
    .with_subject('EMAIL')
)

# Build a service endpoint for Chat API.
service = build('chat', 'v1', credentials=CREDENTIALS)

NAME = 'spaces/SPACE_NAME'
result = service.spaces().completeImport(name=NAME).execute()

print(result)

更改下列內容:

在匯入模式後授予聊天室存取權

如要將最近匯入的聊天室存取權授予 Chat 使用者,請按照下列步驟操作: 即時通訊應用程式可以繼續使用 chat.import 範圍和使用者 在初始 create.space() 方法呼叫後的 30 天內模擬 包括:

如要搭配 chat.import 範圍使用這些方法,模擬的使用者必須 擔任聊天室管理員

外部聊天室的成員資格 create() 方法 也可邀請 Workspace 機構外的使用者。請確認 您也瞭解 已知限制 外部使用者。

疑難排解

如果匯入 Chat 聊天室時發生問題,請參閱 以下問題以取得協助。如果收到錯誤回應,請 (複製文字/貼到文件中或儲存螢幕截圖),以備不時之需 以便日後參考及排解問題

成功匯入聊天室後,CompleteImportSpace 將由 「OK」的狀態。

未在 30 天期限內完成匯入作業

如先前「在匯入模式下建立聊天室」一節所述, 在建立方法的 30 天後,聊天室仍處於匯入模式 就會自動刪除,屆時即無法存取 且無法復原。

很抱歉,您無法再查看或復原已刪除的聊天室。 匯入程序就必須再次啟動。

尋找遺漏的聊天室

如果找不到新的 Chat 聊天室,請參閱 下表列出 CompleteImportSpace 傳送給您的回應 查看說明及解決問題的方法

已收到回覆 調查步驟 說明 解析度
CompleteImportSpace 會擲回例外狀況並呼叫 GetSpace 會傳回 PERMISSION_DENIED 查看記錄,找出聊天室的建立時間以及較舊的聊天室 就會自動刪除。此外,這個原則也沒有 已匯入空間的紀錄 聊天室管理工具稽核記錄 匯入程序開始後已超過 30 天 所以聊天室無法結束遷移作業 請建立新聊天室,然後再次執行匯入程序。
CompleteImportSpace 會傳回 OK 並呼叫 GetSpace 會傳回 PERMISSION_DENIED 找不到匯入空間的記錄 聊天室管理工具, 但該聊天室會顯示在 「稽核記錄」 聊天室已成功匯入,但之後會刪除。 請建立新聊天室,然後再次執行匯入程序。