Tải nội dung nghe nhìn lên dưới dạng tệp đính kèm

Hướng dẫn này giải thích cách sử dụng phương thức upload trên tài nguyên Media của API Google Chat để tải nội dung nghe nhìn (tệp) lên Google Chat rồi đính kèm tệp đó vào tin nhắn.

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 bao gồm một 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. Dữ liệu trong tệp đính kèm khác nhau tuỳ thuộc vào việc tệp đính kèm là nội dung được tải lên (tệp cục bộ) hay là tệp được lưu trữ trên Drive. Tài nguyên Media đại diện cho 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. Tài nguyên Attachment đại diện cho một thực thể của nội dung nghe nhìn, một tệp và được đính kèm vào một thông báo. Tài nguyên Attachment bao gồm siêu dữ liệu về tệp đính kèm, chẳng hạn như vị trí lưu tệp.

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

Python

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

    pip3 install --upgrade google-api-python-client google-auth-oauthlib
    
  • Một dự án trên Google Cloud đã bật và thiết lập API Google Chat. Để biết các bước, hãy xem bài viết Tạo ứng dụng Google Chat.
  • Đã định cấu hình hoạt động uỷ quyền cho ứng dụng Chat. Khi tải nội dung nghe nhìn lên dưới dạng tệp đính kèm, bạn cần phải Xác thực người dùng trong phạm vi uỷ quyền chat.messages.create hoặc chat.messages.

Tải lên dưới dạng tệp đính kèm

Để tải nội dung nghe nhìn lên và đính kèm nội dung đó vào tin nhắn, hãy chuyển nội dung sau đây vào yêu cầu của bạn:

  • Chỉ định phạm vi uỷ quyền chat.messages.create hoặc chat.messages.
  • Gọi các phương thức sau đây trong Google Chat:
    1. Để tải tệp lên, hãy gọi phương thức upload trên tài nguyên Media.
      • Đặt parent thành tên của không gian lưu trữ tệp.
      • Trong body (nội dung yêu cầu), hãy đặt filename thành tên của tệp đính kèm đã tải lên.
      • Đặt media_body làm bản sao của tệp sẽ được tải lên.
    2. Để tạo một thông báo có đính kèm tệp đã tải lên, hãy gọi phương thức create trên tài nguyên Messages.
      • Đặt attachment làm phản hồi khi gọi phương thức upload trên tài nguyên Media. Trường attachment chấp nhận danh sách.

Ví dụ sau đây tải một tệp hình ảnh PNG lên và đính kèm tệp đó vào một tin nhắn.

Python

  1. Trong thư mục đang làm việc, hãy tạo một tệp có tên là chat_media_and_attachment_upload.py.
  2. Đưa mã sau vào chat_media_and_attachment_upload.py:

    from google_auth_oauthlib.flow import InstalledAppFlow
    from googleapiclient.discovery import build
    from googleapiclient.http import MediaFileUpload
    
    # 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.create"]
    
    def main():
        '''
        Authenticates with Chat API via user credentials,
        then uploads a file as media, creates a message, and
        attaches the file to the 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.
        service = build('chat', 'v1', credentials=creds)
    
        # Upload a file to Google Chat.
        media = MediaFileUpload('test_image.png', mimetype='image/png')
    
        # Create a message and attach the uploaded file to it.
        attachment_uploaded = service.media().upload(
    
            # The space to upload the attachment in.
            #
            # Replace SPACE with a space name.
            # Obtain the space name from the spaces resource of Chat API,
            # or from a space's URL.
            parent='spaces/SPACE',
    
            # The filename of the attachment, including the file extension.
            body={'filename': 'test_image.png'},
    
            # Media resource of the attachment.
            media_body=media
    
        ).execute()
    
        print(attachment_uploaded)
    
        # Create a Chat message with attachment.
        result = service.spaces().messages().create(
    
            # The space to create the message in.
            #
            # Replace SPACE with a space name.
            # Obtain the space name from the spaces resource of Chat API,
            # or from a space's URL.
            #
            # Must match the space name that the attachment is uploaded to.
            parent='spaces/SPACE',
    
            # The message to create.
            body={
                'text': 'Hello, world!',
                'attachment': [attachment_uploaded]
            }
    
        ).execute()
    
        print(result)
    
    if __name__ == '__main__':
        main()
    
  3. Trong mã, hãy thay thế SPACE bằng tên không gian để tải tệp đính kèm lên. Bạn có thể lấy tệp này từ phương thức spaces.list trong API Chat hoặc từ URL của một không gian.

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

    python3 chat_media_and_attachment_upload.py
    

API Chat trả về nội dung phản hồi chứa attachmentDataRef kèm theo thông tin chi tiết về tệp đã tải lên.

Giới hạn và cân nhắc

Khi bạn chuẩn bị tải tệp lên và đính kèm tệp vào thư, hãy lưu ý những giới hạn và điểm cần cân nhắc sau:

  • Bạn có thể tải lên tệp có kích thước tối đa 200 MB.
  • Một số loại tệp không được hỗ trợ và bạn không thể tải tệp lên. Để biết thông tin chi tiết, hãy xem phần Các loại tệp bị chặn trong Google Chat.