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