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