במדריך הזה מוסבר איך להשתמש בשיטה upload במשאב Media של Google Chat API כדי להעלות מדיה (קובץ) ל-Google Chat ואז לצרף אותה להודעה.
כשמשתמש שולח הודעה לאפליקציה, מערכת Google Chat שולחת אירוע אינטראקציה מסוג MESSAGE.
אירוע האינטראקציה שמתקבל באפליקציה כולל גוף בקשה, שהוא מטען ה-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:
- כדי להעלות את הקובץ, מפעילים את ה-method
uploadבמשאבMedia.- מגדירים את
parentלשם המרחב שבו הקובץ מאוחסן. - ב-
body(גוף הבקשה), מגדירים אתfilenameלשם של הקובץ המצורף שהועלה. - מגדירים את
media_bodyכמופע של הקובץ שרוצים להעלות.
- מגדירים את
- כדי ליצור הודעה עם הקובץ שהועלה, צריך להפעיל את ה-method
createבמשאבMessages.- מגדירים את
attachmentכתשובה מהתקשרות אל השיטהuploadבמשאבMedia. השדהattachmentמקבל רשימה.
- מגדירים את
- כדי להעלות את הקובץ, מפעילים את ה-method
בדוגמה הבאה מועלה קובץ תמונה בפורמט 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?
- ההודעה לא יכולה לכלול ווידג'טים של אביזרים.