Tải nội dung nghe nhìn xuống từ một tệp đính kèm

Hướng dẫn này giải thích cách sử dụng phương thức download trên tài nguyên Media của API Google Chat để tải nội dung nghe nhìn (tệp) từ tin nhắn trong Google Chat xuống.

Khi người dùng gửi tin nhắn đến ứng dụng của bạn, Google Chat sẽ gửi một Sự kiện tương tác MESSAGE. Sự kiện tương tác mà ứng dụng của bạn nhận được có chứa nội dung yêu cầu, đó là Tải trọng JSON đại diện cho sự kiện tương tác, bao gồm cả mọi tệp đính kèm. Chiến lược phát hành đĩa đơn dữ liệu trong tệp đính kèm sẽ khác nhau tuỳ thuộc vào việc tệp đính kèm đó nội dung được tải lên (tệp cục bộ) hoặc là tệp được lưu trữ trên Drive. Chiến lược phát hành đĩa đơn Tài nguyên Media biểu thị một tệp được tải lên Google Chat (chẳng hạn như hình ảnh, video và tài liệu). Chiến lược phát hành đĩa đơn Tài nguyên Attachment thể hiện một bản sao của nội dung nghe nhìn (một tệp) được đính kèm vào thư. Attachment tài nguyên bao gồm siêu dữ liệu về tệp đính kèm, chẳng hạn như tại nơi lưu mật khẩu.

Điều kiện tiên quyết

Python

  • Python 3.6 trở lên
  • pip công cụ quản lý gói
  • Các thư viện ứng dụng mới nhất của Google dành cho Python. Cách cài đặt hoặc cập nhật các tính năng này: chạy lệnh sau trong giao diện dòng lệnh:

    pip3 install --upgrade google-api-python-client google-auth-oauthlib
    
  • Một dự án trên Google Cloud đã bật và định cấu hình API Google Chat. Để biết các bước thực hiện, hãy xem Tạo ứng dụng Google Chat.
  • Đã định cấu hình uỷ quyền cho ứng dụng Chat. Việc tải nội dung nghe nhìn xuống hỗ trợ cả hai loại sau:

Tải xuống từ tệp đính kèm

Để tải xuống nội dung nghe nhìn từ tệp đính kèm, hãy chuyển nội dung sau vào yêu cầu:

Ví dụ sau đây tải xuống một tệp đính kèm với một thư:

Python

  1. Trong thư mục đang làm việc, hãy tạo một tệp có tên chat_media_and_attachment_download.py.
  2. Đưa mã sau vào 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. Trong mã, thay thế RESOURCE_NAME bằng attachmentDataRef.resourceName, bạn có thể truy xuất một trong những các cách sau:

  4. Trong thư mục đang làm việc, hãy tạo và chạy mẫu:

    python3 chat_media_and_attachment_download.py
    

Nếu thành công, phương thức này sẽ trả về nội dung tệp dưới dạng byte.

Để tải nội dung tệp xuống, hãy chọn một trong những cách sau:

  • Bạn nên sử dụng Lớp MediaIoBaseDownload bằng Python, có chứa các phương thức để tải xuống tệp theo các phần và lưu nội dung vào luồng đầu ra.

  • Nếu bạn phải gửi yêu cầu HTTP theo cách thủ công, hãy gọi phương thức download và chỉ định phần tệp mà bạn muốn tải xuống bằng cách sử dụng byte dải ô có tiêu đề Range (ví dụ: Range: bytes=500-999).