במדריך הזה מוסבר איך להשתמש בשיטה upload
במשאב Media
של Google Chat API כדי להעלות מדיה (קובץ) ל-Google Chat ואז לצרף אותה להודעה.
כשהמשתמש שולח הודעה לאפליקציה, מערכת Google Chat שולחת אירוע אינטראקציה MESSAGE
.
אירוע האינטראקציה שמתקבל באפליקציה כולל גוף בקשה, שהוא מטען ייעודי (payload) בפורמט JSON שמייצג את אירוע האינטראקציה, כולל קבצים מצורפים. הנתונים בקובץ המצורף שונים בהתאם לסוג הקובץ המצורף: תוכן שהועלה (קובץ מקומי) או קובץ ששמור ב-Drive. The
Media
resource
represents a file uploaded to Google Chat, like images, videos, and documents.
המשאב 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 של המרחב.בספריית העבודה, מבצעים build ומריצים את הדוגמה:
python3 chat_media_and_attachment_upload.py
Chat API מחזיר גוף תגובה שמכיל את attachmentDataRef
עם פרטים על הקובץ שהועלה.
מגבלות ושיקולים
כשמתכוננים להעלות קבצים ולצרף אותם להודעות, חשוב לשים לב למגבלות ולשיקולים הבאים:
- אפשר להעלות קבצים בגודל של עד 200MB.
- אין תמיכה בחלק מסוגי הקבצים, ואי אפשר להעלות אותם. פרטים נוספים מופיעים במאמר אילו סוגי קבצים חסומים ב-Google Chat?
- ההודעה לא יכולה לכלול ווידג'טים של אביזרים.