במדריך הזה מוסבר איך להשתמש בשיטה download במשאב Media של Google Chat API כדי להוריד מדיה (קובץ) מהודעה ב-Google Chat.
כשמשתמש שולח הודעה לאפליקציה, מערכת Google Chat שולחת אירוע אינטראקציה מסוג MESSAGE.
אירוע האינטראקציה שמתקבל באפליקציה כולל גוף בקשה, שהוא מטען ייעודי (payload) בפורמט JSON שמייצג את אירוע האינטראקציה, כולל קבצים מצורפים. הנתונים בקובץ המצורף שונים בהתאם לסוג הקובץ המצורף: תוכן שהועלה (קובץ מקומי) או קובץ ששמור ב-Drive. המשאב Media מייצג קובץ שהועלה ל-Google Chat, כמו תמונות, סרטונים ומסמכים.
משאב Attachment מייצג מכונה של מדיה – קובץ – שמצורפת להודעה. משאב Attachment כולל את המטא-נתונים של הקובץ המצורף, כמו המיקום שבו הוא נשמר.
דרישות מוקדמות
Python
- חשבון Google Workspace במהדורת Business או Enterprise עם גישה ל-Google Chat.
- מגדירים את הסביבה:
- יוצרים פרויקט ב-Google Cloud.
- הגדרת מסך ההסכמה ל-OAuth.
- מפעילים ומגדירים את Google Chat API עם שם, סמל ותיאור לאפליקציית Chat.
- מתקינים את ספריית הלקוח של Google API ל-Python.
- יוצרים פרטי גישה בהתאם לאופן שבו רוצים לבצע אימות בבקשה של Google Chat API:
- כדי לבצע אימות כמשתמש ב-Chat, יוצרים פרטי כניסה של מזהה לקוח OAuth ושומרים אותם כקובץ JSON בשם
credentials.jsonבספרייה המקומית. - כדי לבצע אימות כאפליקציית Chat, יוצרים פרטי כניסה לחשבון שירות ושומרים אותם כקובץ JSON בשם
credentials.json.
- כדי לבצע אימות כמשתמש ב-Chat, יוצרים פרטי כניסה של מזהה לקוח OAuth ושומרים אותם כקובץ JSON בשם
- בוחרים היקף הרשאה בהתאם לאופן שבו רוצים לבצע אימות – כמשתמש או כאפליקציית Chat.
הורדה מקובץ מצורף
כדי להוריד מדיה מקובץ מצורף, צריך להעביר את הפרטים הבאים בבקשה:
- באימות משתמשים, מציינים את היקף ההרשאה
chat.messages.readonlyאוchat.messages. באימות אפליקציות, מציינים את היקף ההרשאה שלchat.bot. - מבצעים קריאה לשיטות הבאות של Google Chat:
- כדי לקבל את
attachmentDataRef, מתקשרים לאחת מהשיטות הבאות:- השיטה
getבמשאבAttachment. -
getmethod אוlistmethod ב-Messageresource.
- השיטה
- מבצעים קריאה ל-
downloadmethod ב-Mediaresource ומציינים את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( 'credentials.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 באופן ידני, צריך להפעיל את השיטה
downloadולציין את החלק בקובץ שרוצים להוריד באמצעות טווח בייטים עם הכותרתRange– לדוגמה:Range: bytes=500-999.
נושאים קשורים
- אם ההודעה היא קובץ ב-Drive, צריך להשתמש ב-Drive API כדי לקבל גישה לקובץ.
- העלאת מדיה כקובץ מצורף
- הורדת מדיה כקובץ מצורף
- אחזור מטא-נתונים של קובץ מצורף להודעה