במדריך הזה מוסבר איך להשתמש בשיטה 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 בשם
client_secrets.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( 'client_secrets.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?
- אסור לכלול בהודעה ווידג'טים נלווים.