本指南說明如何在 Google Chat API 的 ThreadReadState
資源上使用 getThreadReadState
方法,取得使用者在訊息執行緒中的讀取狀態詳細資料。如要取得聊天室中訊息的讀取狀態,請參閱「取得使用者空間讀取狀態的詳細資料」。
ThreadReadState
資源是單例資源,代表指定使用者在 Google Chat 訊息執行緒中的最後讀取訊息詳細資料。
必要條件
Python
- Python 3.6 或更高版本
- pip 套件管理工具
最新的 Python 專用 Google 用戶端程式庫。如要安裝或更新,請在指令列介面中執行下列指令:
pip3 install --upgrade google-api-python-client google-auth-oauthlib
- 已啟用並設定 Google Chat API 的 Google Cloud 專案。相關步驟請參閱「建構 Google Chat 應用程式」。
已針對 Chat 應用程式設定授權。如要取得聊天室內使用者的讀取狀態詳細資料,必須使用
chat.users.readstate
或chat.users.readstate.readonly
授權範圍的使用者驗證。
Node.js
- Node.js 與 npm
最新的 Node.js 專用 Google 用戶端程式庫。如要安裝,請在指令列介面中執行下列指令:
npm install @google-cloud/local-auth @googleapis/chat
- 已啟用並設定 Google Chat API 的 Google Cloud 專案。相關步驟請參閱「建構 Google Chat 應用程式」。
已針對 Chat 應用程式設定授權。如要取得聊天室內使用者的讀取狀態詳細資料,必須使用
chat.users.readstate
或chat.users.readstate.readonly
授權範圍的使用者驗證。
Apps Script
- 擁有可存取 Google Chat 的 Google Workspace 帳戶。
- 已發布的 Chat 應用程式。如要建構 Chat 應用程式,請按照這個quickstart操作。
- 已針對 Chat 應用程式設定授權。如要取得聊天室內使用者的讀取狀態詳細資料,必須使用
chat.users.readstate
或chat.users.readstate.readonly
授權範圍的使用者驗證。
取得呼叫使用者的執行緒讀取狀態
如要取得訊息執行緒內使用者的讀取狀態詳細資料,請在要求中加入以下內容:
- 指定
chat.users.readstate
或chat.users.readstate.readonly
授權範圍。 - 呼叫
ThreadReadState
資源上的getThreadReadState
方法。 - 傳遞執行緒讀取狀態的
name
,以便取得,其中包括使用者 ID 或別名,以及聊天室 ID。取得執行緒讀取狀態的功能只支援取得呼叫使用者的讀取狀態,您可以設定下列任一項功能來指定:me
別名。例如users/me/spaces/SPACE/threads/THREAD/threadReadState
。- 發出呼叫的使用者的 Workspace 電子郵件地址。例如
users/user@example.com/spaces/SPACEthreads/THREAD/threadReadState
。 - 發出呼叫的使用者的使用者 ID。例如
users/USER/spaces/SPACE/threads/THREAD/threadReadState
。
以下範例會取得發出呼叫的使用者執行緒讀取狀態:
Python
- 在工作目錄中,建立名為
chat_threadReadState_get.py
的檔案。 在
chat_threadReadState_get.py
中加入下列程式碼:from google_auth_oauthlib.flow import InstalledAppFlow from googleapiclient.discovery import build # Define your app's authorization scopes. # When modifying these scopes, delete the file token.json, if it exists. SCOPES = ["https://www.googleapis.com/auth/chat.users.readstate.readonly"] def main(): ''' Authenticates with Chat API via user credentials, then gets the thread read state for the calling user. ''' # Authenticate with Google Workspace # and get user authorization. flow = InstalledAppFlow.from_client_secrets_file( 'client_secrets.json', SCOPES) creds = flow.run_local_server() # Build a service endpoint for Chat API. chat = build('chat', 'v1', credentials=creds) # Use the service endpoint to call Chat API. result = chat.users().spaces().threads().getThreadReadState( # The thread read state to get. # # Replace USER with the calling user's ID, Workspace email, # or the alias me. # # Replace SPACE with a space name. # Obtain the space name from the spaces resource of Chat API, # or from a space's URL. # # Replace THREAD with a thread name. # Obtain the thread name from the messages resource of Chat API. name='users/me/spaces/SPACE/threads/THREAD/threadReadState' ).execute() # Prints the API's response. print(result) if __name__ == '__main__': main()
在程式碼中,替換以下內容:
SPACE
:聊天室名稱,您可以透過 Chat API 的spaces.list
方法或聊天室網址取得。THREAD
:執行緒名稱,您可以透過 Chat API 的spaces.messages.get
方法取得此名稱。
在工作目錄中,建構並執行範例:
python3 chat_threadReadState_get.py
Node.js
- 在工作目錄中,建立名為
chat_threadReadState_get.js
的檔案。 在
chat_threadReadState_get
中加入下列程式碼:const chat = require('@googleapis/chat'); const {authenticate} = require('@google-cloud/local-auth'); /** * Authenticates with Chat API via user credentials, * then gets the thread read state for the calling user. * @return {!Promise<!Object>} */ async function getThreadReadState() { /** * Authenticate with Google Workspace * and get user authorization. */ const scopes = [ 'https://www.googleapis.com/auth/chat.users.readstate.readonly', ]; const authClient = await authenticate({scopes, keyfilePath: 'client_secrets.json'}); /** * Build a service endpoint for Chat API. */ const chatClient = await chat.chat({version: 'v1', auth: authClient}); /** * Use the service endpoint to call Chat API. */ return await chatClient.users.spaces.threads.getThreadReadState({ /** * The thread read state to get. * * Replace USER with the calling user's ID, Workspace email, * or the alias me. * * Replace SPACE with a space name. * Obtain the space name from the spaces resource of Chat API, * or from a space's URL. */ name: 'users/me/spaces/SPACE/threads/THREADS/threadReadState' }); } /** * Use the service endpoint to call Chat API. */ getThreadReadState().then(console.log);
在程式碼中,替換以下內容:
SPACE
:聊天室名稱,您可以透過 Chat API 的spaces.list
方法或聊天室網址取得。THREAD
:執行緒名稱,您可以透過 Chat API 的spaces.messages.get
方法取得此名稱。
在工作目錄中,建構並執行範例:
node chat_threadReadState_get.js
Apps Script
本範例使用進階 Chat 服務呼叫 Chat API。
將
chat.users.readstate.readonly
授權範圍新增至 Apps Script 專案的appsscript.json
檔案:"oauthScopes": [ "https://www.googleapis.com/auth/chat.users.readstate.readonly" ]
將以下函式新增至 Apps Script 專案的程式碼:
/** * Authenticates with Chat API via user credentials, * then gets the thread read state for the calling user. * @param {string} threadReadStateName The resource name of the thread read state. */ function getThreadReadState(threadReadStateName) { try { Chat.Users.Spaces.Threads.getThreadReadState(threadReadStateName); } catch (err) { // TODO (developer) - Handle exception console.log('Failed to get read state with error %s', err.message); } }
Google Chat API 會取得指定的執行緒讀取狀態,並傳回 ThreadReadState
資源的執行個體。