במדריך הזה מוסבר איך להשתמש בשיטה upload במשאב 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.
-
יצירת פרטי כניסה של מזהה לקוח OAuth לאפליקציה למחשב. כדי להריץ את הדוגמה במדריך הזה, שומרים את פרטי הכניסה כקובץ JSON בשם
credentials.jsonבספרייה המקומית.
- בוחרים היקף הרשאה שתומך באימות משתמשים.
העלאה כקובץ מצורף
כדי להעלות מדיה ולצרף אותה להודעה, מעבירים את הפרטים הבאים בבקשה::
- מציינים את היקף ההרשאות של
chat.messages.createאוchat.messages. - מבצעים קריאה לשיטות הבאות של Google Chat:
- כדי להעלות את הקובץ, מבצעים קריאה ל-
uploadmethod במשאבMedia.- מגדירים את
parentלשם המרחב שבו מאוחסן הקובץ. - ב-
body(גוף הבקשה), מגדירים אתfilenameלשם של הקובץ המצורף שהועלה. - מגדירים את
media_bodyכמופע של הקובץ שרוצים להעלות.
- מגדירים את
- כדי ליצור הודעה עם הקובץ שהועלה, צריך להפעיל את ה-method
createבמשאבMessages.- מגדירים את
attachmentכתשובה לקריאה של השיטהuploadבמשאבMedia. השדהattachmentמקבל רשימה.
- מגדירים את
- כדי להעלות את הקובץ, מבצעים קריאה ל-
בדוגמה הבאה מועלה קובץ תמונה בפורמט PNG ומצורף להודעה.
Python
- בספריית העבודה, יוצרים קובץ בשם
chat_media_and_attachment_upload.py. מוסיפים את הקוד הבא ב-
chat_media_and_attachment_upload.py:from google_auth_oauthlib.flow import InstalledAppFlow from googleapiclient.discovery import build from googleapiclient.http import MediaFileUpload # 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.create"] def main(): ''' Authenticates with Chat API via user credentials, then uploads a file as media, creates a message, and attaches the file to the 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. service = build('chat', 'v1', credentials=creds) # Upload a file to Google Chat. media = MediaFileUpload('test_image.png', mimetype='image/png') # Create a message and attach the uploaded file to it. attachment_uploaded = service.media().upload( # The space to upload the attachment in. # # Replace SPACE with a space name. # Obtain the space name from the spaces resource of Chat API, # or from a space's URL. parent='spaces/SPACE', # The filename of the attachment, including the file extension. body={'filename': 'test_image.png'}, # Media resource of the attachment. media_body=media ).execute() print(attachment_uploaded) # Create a Chat message with attachment. result = service.spaces().messages().create( # The space to create the message in. # # Replace SPACE with a space name. # Obtain the space name from the spaces resource of Chat API, # or from a space's URL. # # Must match the space name that the attachment is uploaded to. parent='spaces/SPACE', # The message to create. body={ 'text': 'Hello, world!', 'attachment': [attachment_uploaded] } ).execute() print(result) if __name__ == '__main__': main()בקוד, מחליפים את
SPACEבשם המרחב שאליו רוצים להעלות את הקובץ המצורף. אפשר לקבל את השם באמצעות השיטהspaces.listב-Chat API או מכתובת ה-URL של המרחב.בספריית העבודה, מפתחים ומריצים את הדוגמה:
python3 chat_media_and_attachment_upload.py
Chat API מחזיר גוף תגובה שמכיל את attachmentDataRef עם פרטים על הקובץ שהועלה.
מגבלות ושיקולים
כשמתכוננים להעלות קבצים ולצרף אותם להודעות, חשוב לשים לב למגבלות ולשיקולים הבאים:
- אפשר להעלות קבצים בגודל של עד 200MB.
- חלק מסוגי הקבצים לא נתמכים, ואי אפשר להעלות אותם. פרטים נוספים מופיעים במאמר בנושא סוגי קבצים שנחסמים ב-Google Chat.
- ההודעה לא יכולה לכלול ווידג'טים של אביזרים.