คู่มือนี้อธิบายวิธีใช้เมธอด 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 ต่อไปนี้
- รับ
attachmentDataRef
โดยเรียกใช้เมธอดใดเมธอดหนึ่งต่อไปนี้get
เมธอด ในAttachment
ทรัพยากร- เมธอด
get
หรือเมธอดlist
ในMessage
- เรียกใช้เมธอด
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( '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 เพื่อรับสิทธิ์เข้าถึงไฟล์
- อัปโหลดสื่อเป็นไฟล์แนบ
- ดาวน์โหลดสื่อเป็นไฟล์แนบ
- รับข้อมูลเมตาเกี่ยวกับไฟล์แนบของข้อความ