คู่มือนี้อธิบายวิธีใช้เมธอด 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
- ติดตั้ง Python ไลบรารีของไคลเอ็นต์ Google API
- สร้างข้อมูลเข้าสู่ระบบเพื่อเข้าถึงตามวิธีที่คุณต้องการตรวจสอบสิทธิ์ในคำขอ 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 ต่อไปนี้
ตัวอย่างต่อไปนี้จะดาวน์โหลดไฟล์ที่แนบมากับข้อความ
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 เพื่อรับสิทธิ์เข้าถึงไฟล์
- อัปโหลดสื่อเป็นไฟล์แนบ
- ดาวน์โหลดสื่อเป็นไฟล์แนบ
- รับข้อมูลเมตาเกี่ยวกับไฟล์แนบของข้อความ