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

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

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

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

Python

  • Python 3.6 ขึ้นไป
  • PIP เครื่องมือจัดการแพ็กเกจ
  • ไลบรารีของไคลเอ็นต์ Google ล่าสุดสำหรับ Python หากต้องการติดตั้งหรืออัปเดตส่วนขยาย เรียกใช้คำสั่งต่อไปนี้ในอินเทอร์เฟซบรรทัดคำสั่ง

    pip3 install --upgrade google-api-python-client google-auth-oauthlib
    
  • โปรเจ็กต์ Google Cloud ที่เปิดใช้และกำหนดค่า Google Chat API โปรดดูขั้นตอนในหัวข้อ สร้างแอป Google Chat
  • กำหนดค่าการให้สิทธิ์สำหรับแอป Chat แล้ว การดาวน์โหลดสื่อรองรับทั้ง 2 อย่างนี้

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

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

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

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