במדריך הזה מוסבר איך משתמשים ב-method download
במשאב Media
של Google Chat API כדי להוריד מדיה (קובץ) מהודעות ב-Google Chat.
כשמשתמש שולח הודעה לאפליקציה שלכם, Google Chat שולח אירוע אינטראקציה MESSAGE
.
אירוע האינטראקציה שהאפליקציה שלכם מקבלת כולל גוף בקשה, שהוא המטען הייעודי (payload) בפורמט JSON שמייצג את אירוע האינטראקציה, כולל קבצים מצורפים. הנתונים שבקובץ המצורף משתנים בהתאם למכשיר שבו מעלים את התוכן (קובץ מקומי) או לקובץ שמאוחסן ב-Drive. המשאב Media
מייצג קובץ שהועלה ל-Google Chat, כמו תמונות, סרטונים ומסמכים.
המשאב Attachment
מייצג מופע של מדיה (קובץ) שמצורף להודעה. המשאב Attachment
כולל את המטא-נתונים של הקובץ המצורף, למשל המקום שבו הוא נשמר.
דרישות מוקדמות
Python
- Python 3.6 ומעלה
- הכלי pip לניהול חבילות
ספריות הלקוח העדכניות של Google ל-Python. כדי להתקין או לעדכן אותם, מריצים את הפקודה הבאה בממשק שורת הפקודה:
pip3 install --upgrade google-api-python-client google-auth-oauthlib
- פרויקט ב-Google Cloud שמופעל ומוגדר בו Google Chat API. במאמר איך מפתחים אפליקציות ב-Google Chat מוסבר איך עושים את זה.
הוגדרה הרשאה לאפליקציית Chat. הורדת מדיה תומכת בשני הדברים הבאים:
- אימות משתמשים עם היקף ההרשאות
chat.messages.readonly
אוchat.messages
. - אימות אפליקציות עם היקף ההרשאה
chat.bot
.
- אימות משתמשים עם היקף ההרשאות
הורדה מקובץ מצורף
כדי להוריד מדיה מקובץ מצורף, מעבירים את הפרטים הבאים בבקשה:
- באמצעות אימות משתמש, מציינים את היקף ההרשאה
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 כדי לקבל גישה לקובץ.
- העלאת מדיה כקובץ מצורף
- הורדת מדיה כקובץ מצורף
- קבלת מטא-נתונים לגבי קובץ מצורף להודעה