ดาวน์โหลดสื่อจากไฟล์แนบ

คู่มือนี้อธิบายวิธีใช้เมธอด download ในทรัพยากร Media ของ Google Chat API เพื่อดาวน์โหลดสื่อ (ไฟล์) จากข้อความใน Google Chat

เมื่อผู้ใช้ส่งข้อความไปยังแอปของคุณ Google Chat จะส่งMESSAGEเหตุการณ์การโต้ตอบ เหตุการณ์การโต้ตอบที่แอปได้รับจะมีเนื้อความของคำขอ ซึ่งเป็น เพย์โหลด JSON ที่แสดงเหตุการณ์การโต้ตอบ รวมถึงไฟล์แนบ ข้อมูลในไฟล์แนบจะแตกต่างกันไปตามว่าไฟล์แนบเป็น เนื้อหาที่อัปโหลด (ไฟล์ในเครื่อง) หรือเป็นไฟล์ที่จัดเก็บไว้ในไดรฟ์ Mediaทรัพยากร แสดงถึงไฟล์ที่อัปโหลดไปยัง Google Chat เช่น รูปภาพ วิดีโอ และเอกสาร Attachmentทรัพยากร แสดงถึงอินสแตนซ์ของสื่อ ซึ่งเป็นไฟล์ที่แนบกับข้อความ Attachment ทรัพยากรรวมถึงข้อมูลเมตาเกี่ยวกับไฟล์แนบ เช่น ตำแหน่งที่บันทึกไฟล์

ข้อกำหนดเบื้องต้น

Python

  • บัญชี Google Workspace สำหรับธุรกิจหรือองค์กร ที่มีสิทธิ์เข้าถึง Google Chat

ดาวน์โหลดจากไฟล์แนบ

หากต้องการดาวน์โหลดสื่อจากไฟล์แนบ ให้ส่งข้อมูลต่อไปนี้ในคำขอ

ตัวอย่างต่อไปนี้จะดาวน์โหลดไฟล์ที่แนบมากับข้อความ

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(
                    'credentials.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 ด้วยตนเอง ให้เรียกใช้เมธอด download และ ระบุส่วนของไฟล์ที่ต้องการดาวน์โหลดโดยใช้ช่วง ไบต์กับส่วนหัว Range เช่น Range: bytes=500-999