הורדת מדיה מקובץ מצורף

במדריך הזה מוסבר איך להשתמש ב-method download במשאב Media של ממשק Google Chat API כדי להוריד מדיה (קובץ) מהודעות ב-Google Chat.

כשהמשתמש שולח הודעה לאפליקציה, Google Chat שולח אירוע אינטראקציה אחד (MESSAGE). אירוע האינטראקציה שהאפליקציה שלך קיבלה כולל את גוף הבקשה, מטען ייעודי (payload) של JSON שמייצג את אירוע האינטראקציה, כולל קבצים מצורפים. הנתונים שבקובץ המצורף משתנים בהתאם למכשיר תוכן שהועלה (קובץ מקומי) או שהוא קובץ שמאוחסן ב-Drive. משאב אחד (Media) מייצג קובץ שהועלה ל-Google Chat, כמו תמונות, סרטונים ומסמכים. משאב אחד (Attachment) מייצג מופע של מדיה — קובץ — שמצורף להודעה. Attachment המשאב כולל את המטא-נתונים על הקובץ המצורף, כמו שבו הוא נשמר.

דרישות מוקדמות

Python

הורדה מקובץ מצורף

כדי להוריד מדיה מקובץ מצורף, יש להעביר את הדברים הבאים ב בקשה:

בדוגמה הבאה מתבצעת הורדה של קובץ שמצורף להודעה:

Python

  1. בספריית העבודה, יוצרים קובץ בשם chat_media_and_attachment_download.py
  2. צריך לכלול את הקוד הבא ב-chat_media_and_attachment_download.py:

    import io
    
    from google_auth_oauthlib.flow import InstalledAppFlow
    from googleapiclient.discovery import build
    from googleapiclient.http import MediaIoBaseDownload
    
    # 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"]
    
    def main():
        '''
        Authenticates with Chat API via user credentials,
        then downloads a file attached to a 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.
        chat = build('chat', 'v1', credentials=creds)
    
        # Download media resource.
        request = chat.media().download_media(
            resourceName=RESOURCE_NAME,
        )
        file = io.BytesIO()
        downloader = MediaIoBaseDownload(file, request)
    
        done = False
        while done is False:
            status, done = downloader.next_chunk()
            if status.total_size:
                print(f'Total size: {status.total_size}')
            print(f'Download {int(status.progress() * 100)}')
    
    if __name__ == '__main__':
        main()
    
  3. בקוד, מחליפים את RESOURCE_NAME ב- attachmentDataRef.resourceName, שאפשר לאחזר את אחד בדרכים הבאות:

  4. בספריית העבודה, יוצרים ומריצים את הדוגמה:

    python3 chat_media_and_attachment_download.py
    

אם הפעולה בוצעה ללא שגיאות, השיטה הזו מחזירה את תוכן הקובץ כבייטים.

כדי להוריד את תוכן הקובץ, יש לבחור באחת מהשיטות הבאות:

  • מומלץ להשתמש כיתה אחת (MediaIoBaseDownload) ב-Python, שמכילה שיטות להורדה את הקובץ במקטעים ולשמור את התוכן בזרם פלט.

  • אם צריך לבצע את בקשת ה-HTTP באופן ידני, קוראים ל-method download לציין את החלק בקובץ שברצונכם להוריד באמצעות בייט טווח עם הכותרת Range, לדוגמה: Range: bytes=500-999.