คำแนะนำนี้จะอธิบายวิธีใช้เมธอด download
ในแหล่งข้อมูล Media
ของ
Google Chat API เพื่อดาวน์โหลดสื่อ (ไฟล์) จากข้อความใน Google Chat
เมื่อผู้ใช้ส่งข้อความถึงแอปของคุณ Google Chat จะส่ง
เหตุการณ์การโต้ตอบ MESSAGE
เหตุการณ์
เหตุการณ์การโต้ตอบที่แอปของคุณได้รับจะมีเนื้อหาของคำขอ ซึ่งก็คือ
เพย์โหลด JSON ที่แสดงเหตุการณ์การโต้ตอบ รวมถึงไฟล์แนบอื่นๆ
ข้อมูลในไฟล์แนบจะแตกต่างกันไป ขึ้นอยู่กับว่าไฟล์แนบนั้น
เนื้อหาที่อัปโหลด (ไฟล์ในเครื่อง) หรือไฟล์ที่เก็บไว้ในไดรฟ์
แหล่งข้อมูล Media
รายการ
แสดงไฟล์ที่อัปโหลดไปยัง Google Chat เช่น รูปภาพ วิดีโอ และเอกสาร
แหล่งข้อมูล Attachment
รายการ
หมายถึงอินสแตนซ์ของสื่อ ซึ่งก็คือไฟล์ที่แนบมากับข้อความ Attachment
จะมีข้อมูลเมตาเกี่ยวกับไฟล์แนบ เช่น
ตำแหน่งที่บันทึกไว้
ข้อกำหนดเบื้องต้น
Python
- ธุรกิจหรือองค์กร บัญชี Google Workspace ที่มีสิทธิ์เข้าถึง Google Chat
- ตั้งค่าสภาพแวดล้อมโดยทำดังนี้
- สร้างโปรเจ็กต์ Google Cloud
- กำหนดค่าหน้าจอขอความยินยอม OAuth
- เปิดใช้และกำหนดค่า Google Chat API โดยใช้ชื่อ ไอคอนและคำอธิบายสำหรับแอป Chat ของคุณ
- ติดตั้ง งูหลาม ไลบรารีของไคลเอ็นต์ Google API
- สร้างข้อมูลเข้าสู่ระบบโดยอิงตามวิธีที่คุณต้องการตรวจสอบสิทธิ์ใน Google Chat API
คำขอ:
- วิธีตรวจสอบสิทธิ์ในฐานะผู้ใช้ Chat
สร้างรหัสไคลเอ็นต์ OAuth
ข้อมูลเข้าสู่ระบบและบันทึกข้อมูลเข้าสู่ระบบเป็นไฟล์ JSON ชื่อ
client_secrets.json
ไปยังไดเรกทอรีในเครื่อง - วิธีตรวจสอบสิทธิ์ว่าเป็นแอป Chat
สร้างบัญชีบริการ
ข้อมูลเข้าสู่ระบบและบันทึกข้อมูลเข้าสู่ระบบเป็นไฟล์ JSON ชื่อ
credentials.json
- วิธีตรวจสอบสิทธิ์ในฐานะผู้ใช้ Chat
สร้างรหัสไคลเอ็นต์ OAuth
ข้อมูลเข้าสู่ระบบและบันทึกข้อมูลเข้าสู่ระบบเป็นไฟล์ JSON ชื่อ
- เลือกขอบเขตการให้สิทธิ์โดยพิจารณาว่าคุณต้องการตรวจสอบสิทธิ์เป็นผู้ใช้หรือ แอป Chat
ดาวน์โหลดจากไฟล์แนบ
หากต้องการดาวน์โหลดสื่อจากไฟล์แนบ ให้ส่งข้อมูลต่อไปนี้ใน คำขอ:
- เมื่อใช้การตรวจสอบสิทธิ์ผู้ใช้ ให้ระบุ
ขอบเขตการให้สิทธิ์
chat.messages.readonly
หรือchat.messages
ด้วย การตรวจสอบสิทธิ์แอป ระบุขอบเขตการให้สิทธิ์chat.bot
- เรียกใช้ Google Chat ด้วยวิธีต่อไปนี้
- รับ
attachmentDataRef
โดยโทรหาวิธีใดวิธีหนึ่งต่อไปนี้ - เรียกใช้เมธอด
download
ใน แหล่งข้อมูลMedia
รายการ และระบุattachmentDataRef.resourceName
ที่ดึงข้อมูลก่อนหน้านี้เป็นmedia.download.resourceName
- รับ
ตัวอย่างต่อไปนี้จะดาวน์โหลดไฟล์ที่แนบมากับข้อความ
Python
- ในไดเรกทอรีการทำงาน ให้สร้างไฟล์ชื่อ
chat_media_and_attachment_download.py
รวมรหัสต่อไปนี้ใน
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()
ในโค้ด ให้แทนที่
RESOURCE_NAME
ด้วยattachmentDataRef.resourceName
ซึ่งคุณสามารถเรียกข้อมูล วิธีต่อไปนี้ในไดเรกทอรีการทำงาน ให้สร้างและเรียกใช้ตัวอย่างด้วยคำสั่งต่อไปนี้
python3 chat_media_and_attachment_download.py
หากสำเร็จ เมธอดนี้จะแสดงเนื้อหาไฟล์เป็นไบต์
หากต้องการดาวน์โหลดเนื้อหาของไฟล์ ให้เลือกวิธีใดวิธีหนึ่งต่อไปนี้
เราขอแนะนำให้ใช้
MediaIoBaseDownload
ใน Python ซึ่งมีวิธีดาวน์โหลด ไฟล์ในส่วนต่างๆ และบันทึกเนื้อหาไปยังสตรีมเอาต์พุตหากคุณต้องส่งคำขอ HTTP ด้วยตนเอง ให้เรียกเมธอด
download
และ ระบุส่วนของไฟล์ที่คุณต้องการดาวน์โหลดโดยใช้ ไบต์ ช่วงที่มีส่วนหัวRange
เช่นRange: bytes=500-999
หัวข้อที่เกี่ยวข้อง
- ถ้าข้อความเป็นไฟล์ในไดรฟ์ ให้ใช้ Drive API เพื่อรับสิทธิ์เข้าถึงไฟล์
- อัปโหลดสื่อเป็นไฟล์แนบ
- ดาวน์โหลดสื่อเป็นไฟล์แนบ
- รับข้อมูลเมตาเกี่ยวกับไฟล์แนบของข้อความ