במדריך הזה מוסבר איך להשתמש ב-method download
במשאב Media
של
ממשק Google Chat API כדי להוריד מדיה (קובץ) מהודעות ב-Google Chat.
כשהמשתמש שולח הודעה לאפליקציה, Google Chat שולח
אירוע אינטראקציה אחד (MESSAGE
).
אירוע האינטראקציה שהאפליקציה שלך קיבלה כולל את גוף הבקשה,
מטען ייעודי (payload) של JSON שמייצג את אירוע האינטראקציה, כולל קבצים מצורפים.
הנתונים שבקובץ המצורף משתנים בהתאם למכשיר
תוכן שהועלה (קובץ מקומי) או שהוא קובץ שמאוחסן ב-Drive.
משאב אחד (Media
)
מייצג קובץ שהועלה ל-Google Chat, כמו תמונות, סרטונים ומסמכים.
משאב אחד (Attachment
)
מייצג מופע של מדיה — קובץ — שמצורף להודעה. Attachment
המשאב כולל את המטא-נתונים על הקובץ המצורף, כמו
שבו הוא נשמר.
דרישות מוקדמות
Python
- עסק או ארגון חשבון Google Workspace עם גישה אל Google Chat.
- מגדירים את הסביבה:
- יוצרים פרויקט ב-Google Cloud.
- מגדירים את מסך ההסכמה של OAuth.
- מפעילים ומגדירים את Google Chat API עם שם, הסמל והתיאור של אפליקציית Chat.
- להתקין את Python ספריית הלקוח של Google API.
- יוצרים פרטי כניסה לגישה בהתאם לאופן שבו רוצים לבצע אימות ב-Google Chat API
בקשה:
- כדי לבצע אימות כמשתמשי Chat:
יצירת מזהה לקוח ב-OAuth
פרטי כניסה ולשמור את פרטי הכניסה כקובץ JSON בשם
client_secrets.json
לספרייה המקומית שלך. - כדי לבצע אימות כאפליקציית Chat:
יצירת חשבון שירות
פרטי כניסה ולשמור את פרטי הכניסה כקובץ JSON בשם
credentials.json
.
- כדי לבצע אימות כמשתמשי Chat:
יצירת מזהה לקוח ב-OAuth
פרטי כניסה ולשמור את פרטי הכניסה כקובץ JSON בשם
- בוחרים את היקף ההרשאה בהתאם לאופן שבו רוצים לבצע אימות כמשתמשים או אפליקציית Chat.
הורדה מקובץ מצורף
כדי להוריד מדיה מקובץ מצורף, יש להעביר את הדברים הבאים ב בקשה:
- באמצעות אימות משתמש, מציינים את
היקף ההרשאה
chat.messages.readonly
אוchat.messages
. ב- אימות אפליקציות, לציין את היקף ההרשאהchat.bot
. - אפשר להתקשר לשיטות הבאות ב-Google Chat:
- אפשר לקבל
attachmentDataRef
באחת מהשיטות הבאות: - קריאה ל-method
download
ב משאבMedia
, וציוןattachmentDataRef.resourceName
שאוחזרו בעבר בתורmedia.download.resourceName
.
- אפשר לקבל
בדוגמה הבאה מתבצעת הורדה של קובץ שמצורף להודעה:
Python
- בספריית העבודה, יוצרים קובץ בשם
chat_media_and_attachment_download.py
צריך לכלול את הקוד הבא ב-
chat_media_and_attachment_download.py
:import io from google_auth_oauthlib.flow import InstalledAppFlow from googleapiclient.discovery import build from googleapiclient.http import MediaIoBaseDownload # 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.messages"] def main(): ''' Authenticates with Chat API via user credentials, then downloads a file attached to a message. ''' # 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) # Download media resource. request = chat.media().download_media( resourceName=RESOURCE_NAME, ) file = io.BytesIO() downloader = MediaIoBaseDownload(file, request) done = False while done is False: status, done = downloader.next_chunk() if status.total_size: print(f'Total size: {status.total_size}') print(f'Download {int(status.progress() * 100)}') if __name__ == '__main__': main()
בקוד, מחליפים את
RESOURCE_NAME
ב-attachmentDataRef.resourceName
, שאפשר לאחזר את אחד בדרכים הבאות:בספריית העבודה, יוצרים ומריצים את הדוגמה:
python3 chat_media_and_attachment_download.py
אם הפעולה בוצעה ללא שגיאות, השיטה הזו מחזירה את תוכן הקובץ כבייטים.
כדי להוריד את תוכן הקובץ, יש לבחור באחת מהשיטות הבאות:
מומלץ להשתמש כיתה אחת (
MediaIoBaseDownload
) ב-Python, שמכילה שיטות להורדה את הקובץ במקטעים ולשמור את התוכן בזרם פלט.אם צריך לבצע את בקשת ה-HTTP באופן ידני, קוראים ל-method
download
לציין את החלק בקובץ שברצונכם להוריד באמצעות בייט טווח עם הכותרתRange
, לדוגמה:Range: bytes=500-999
.
נושאים קשורים
- אם ההודעה היא קובץ ב-Drive, השתמשו Drive API לקבלת גישה לקובץ.
- העלאת מדיה כקובץ מצורף
- הורדת מדיה כקובץ מצורף
- קבלת מטא-נתונים לגבי קובץ מצורף להודעה