Cập nhật tin nhắn

Hướng dẫn này giải thích cách sử dụng phương thức patch trên tài nguyên Message của API Google Chat để cập nhật tin nhắn văn bản hoặc tin nhắn dạng thẻ trong một không gian. Cập nhật một thông báo để thay đổi các thuộc tính của thông báo, chẳng hạn như nội dung hoặc nội dung của . Bạn cũng có thể thêm tin nhắn văn bản vào tin nhắn thẻ hoặc nối thêm thẻ vào tin nhắn văn bản.

API Chat cũng hỗ trợ phương thức update, nhưng bạn nên gọi phương thức patch vì nó sử dụng yêu cầu HTTP PATCH trong khi update sử dụng Yêu cầu HTTP PUT. Để tìm hiểu thêm, hãy xem Mục PATCHPUT của AIP-134.

Trong API Chat, tin nhắn trong Chat được biểu thị bằng Tài nguyên Message. Mặc dù người dùng Chat chỉ có thể gửi tin nhắn có chứa văn bản, Các ứng dụng nhắn tin có thể dùng nhiều tính năng nhắn tin khác, bao gồm hiển thị giao diện người dùng tĩnh hoặc tương tác, thu thập thông tin từ và gửi thư một cách riêng tư. Để tìm hiểu thêm về tính năng nhắn tin các tính năng dành cho API Chat, hãy xem Tổng quan về tin nhắn trong Google Chat.

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

Python

Cập nhật tin nhắn văn bản hoặc thêm tin nhắn văn bản vào tin nhắn thẻ, có xác thực người dùng

Để cập nhật một tin nhắn văn bản thông qua tính năng xác thực người dùng, truyền những nội dung sau trong yêu cầu của bạn:

  • Phạm vi uỷ quyền chat.messages.
  • name của thông báo cần cập nhật.
  • updateMask='text'
  • body chỉ định thông báo đã cập nhật.

Nếu thông báo cập nhật là thông báo thẻ, thì tin nhắn văn bản sẽ được thêm vào trước tin nhắn thông qua thẻ (vẫn hiển thị).

Sau đây là cách cập nhật tin nhắn văn bản, hoặc thêm tin nhắn văn bản vào thông báo thẻ thông qua tính năng xác thực người dùng:

Python

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

    from google_auth_oauthlib.flow import InstalledAppFlow
    from googleapiclient.discovery import build
    
    # 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 updates 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)
    
        # Update a Chat message.
        result = chat.spaces().messages().patch(
    
          # The message to update, and the updated message.
          #
          # Replace SPACE with a space name.
          # Obtain the space name from the spaces resource of Chat API,
          # or from a space's URL.
          #
          # Replace MESSAGE with a message name.
          # Obtain the message name from the response body returned
          # after creating a message asynchronously with Chat REST API.
          name='spaces/SPACE/messages/MESSAGE',
          updateMask='text',
          body={'text': 'Updated message!'}
    
        ).execute()
    
        # Prints details about the updated message.
        print(result)
    
    if __name__ == '__main__':
        main()
    
  3. Trong mã, thay thế các nội dung sau:

    • SPACE: tên không gian mà bạn có thể lấy từ thời gian Phương thức spaces.list trong API Chat hoặc qua URL của một không gian.
    • MESSAGE: tên thông báo mà bạn có thể lấy từ nội dung phản hồi được trả về sau khi tạo thông báo một cách không đồng bộ với API Chat hoặc bằng tên tuỳ chỉnh gán cho thư khi tạo.
  4. Trong thư mục đang làm việc, hãy tạo và chạy mẫu:

    python3 chat_update_text_message_user.py
    

Cập nhật tin nhắn văn bản hoặc thêm tin nhắn văn bản vào tin nhắn thẻ bằng tính năng xác thực ứng dụng

Để cập nhật một tin nhắn văn bản thông qua tính năng xác thực ứng dụng, chuyển nội dung sau vào yêu cầu của bạn:

  • Phạm vi uỷ quyền chat.bot.
  • name của thông báo cần cập nhật.
  • updateMask='text'
  • body chỉ định thông báo đã cập nhật.

Nếu thông báo cập nhật là thông báo thẻ, thì tin nhắn văn bản sẽ được thêm vào trước tin nhắn thông qua thẻ (vẫn hiển thị).

Sau đây là cách cập nhật tin nhắn văn bản vào tin nhắn văn bản hoặc thêm vào trước tin nhắn văn bản thông báo thẻ thông qua tính năng xác thực ứng dụng:

Python

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

    from google.oauth2 import service_account
    from apiclient.discovery import build
    
    # Specify required scopes.
    SCOPES = ['https://www.googleapis.com/auth/chat.bot']
    
    # Specify service account details.
    CREDENTIALS = (
        service_account.Credentials.from_service_account_file('credentials.json')
        .with_scopes(SCOPES)
    )
    
    # Build the URI and authenticate with the service account.
    chat = build('chat', 'v1', credentials=CREDENTIALS)
    
    # Update a Chat message.
    result = chat.spaces().messages().patch(
    
      # The message to update, and the updated message.
      #
      # Replace SPACE with a space name.
      # Obtain the space name from the spaces resource of Chat API,
      # or from a space's URL.
      #
      # Replace MESSAGE with a message name.
      # Obtain the message name from the response body returned
      # after creating a message asynchronously with Chat REST API.
      name='spaces/SPACE/messages/MESSAGE',
      updateMask='text',
      body={'text': 'Updated message!'}
    
    ).execute()
    
    # Print Chat API's response in your command line interface.
    print(result)
    
  3. Trong mã, thay thế các nội dung sau:

    • SPACE: tên không gian mà bạn có thể lấy từ thời gian Phương thức spaces.list trong API Chat hoặc qua URL của một không gian.
    • MESSAGE: tên thông báo mà bạn có thể lấy từ nội dung phản hồi được trả về sau khi tạo thông báo một cách không đồng bộ với API Chat hoặc bằng tên tuỳ chỉnh gán cho thư khi tạo.
  4. Trong thư mục đang làm việc, hãy tạo và chạy mẫu:

    python3 chat_update_text_message_app.py
    

Cập nhật thông báo thẻ hoặc thêm thông báo thẻ vào tin nhắn văn bản

Để cập nhật một thông báo thẻ, chuyển nội dung sau vào yêu cầu của bạn:

  • Phạm vi uỷ quyền chat.bot. Cần cập nhật thông báo thẻ xác thực ứng dụng.
  • name của thông báo cần cập nhật.
  • updateMask='cardsV2'
  • body chỉ định thông báo đã cập nhật.

Nếu thông báo cập nhật là tin nhắn văn bản, sau đó một thẻ sẽ được thêm vào tin nhắn văn bản (sẽ tiếp tục hiển thị). Nếu Thông báo được cập nhật cũng là một card, thì thẻ hiển thị sẽ đã cập nhật.

Sau đây là cách cập nhật một thông báo thành thông báo thẻ:

Python

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

    from google.oauth2 import service_account
    from apiclient.discovery import build
    
    # Specify required scopes.
    SCOPES = ['https://www.googleapis.com/auth/chat.bot']
    
    # Specify service account details.
    CREDENTIALS = (
        service_account.Credentials.from_service_account_file('credentials.json')
        .with_scopes(SCOPES)
    )
    
    # Build the URI and authenticate with the service account.
    chat = build('chat', 'v1', credentials=CREDENTIALS)
    
    # Update a Chat message.
    result = chat.spaces().messages().patch(
    
      # The message to update, and the updated message.
      #
      # Replace SPACE with a space name.
      # Obtain the space name from the spaces resource of Chat API,
      # or from a space's URL.
      #
      # Replace MESSAGE with a message name.
      # Obtain the message name from the response body returned
      # after creating a message asynchronously with Chat REST API.
      name='spaces/SPACE/messages/MESSAGE',
      updateMask='cardsV2',
      body=
      {
        'cardsV2': [{
          'cardId': 'updateCardMessage',
          'card': {
            'header': {
              'title': 'An Updated Card Message!',
              'subtitle': 'Updated with Chat REST API',
              'imageUrl': 'https://developers.google.com/chat/images/chat-product-icon.png',
              'imageType': 'CIRCLE'
            },
            'sections': [
              {
                'widgets': [
                  {
                    'buttonList': {
                      'buttons': [
                        {
                          'text': 'Read the docs!',
                          'onClick': {
                            'openLink': {
                              'url': 'https://developers.google.com/chat'
                            }
                          }
                        }
                      ]
                    }
                  }
                ]
              }
            ]
          }
        }]
      }
    
    ).execute()
    
    # Print Chat API's response in your command line interface.
    print(result)
    
  3. Trong mã, thay thế các nội dung sau:

    • SPACE: tên không gian mà bạn có thể lấy từ thời gian Phương thức spaces.list trong API Chat hoặc qua URL của một không gian.

    • MESSAGE: tên thông báo mà bạn có thể lấy từ nội dung phản hồi được trả về sau khi tạo thông báo một cách không đồng bộ với API Chat hoặc bằng tên tuỳ chỉnh gán cho thư khi tạo.

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

    python3 chat_update_card_message.py
    

API Chat trả về một phiên bản của Message để cho biết chi tiết về thông báo đã được cập nhật.

Cập nhật một thông báo với nhiều đường dẫn trường cùng lúc

Khi một thông báo được cập nhật, bạn có thể cập nhật nhiều đường dẫn đến trường thông báo ở bất cứ lúc nào. Ví dụ: trong yêu cầu thông báo cập nhật, bạn có thể chỉ định thay đổi đối với Đường dẫn trường textcardsv2 cùng một lúc, cập nhật cả nội dung và thẻ của tin nhắn. Nếu tin nhắn chỉ bao gồm văn bản và không có thẻ, thì thẻ sẽ được thêm vào thông báo. Để biết thêm thông tin về các đường dẫn trường được hỗ trợ, xem Tham số updateMask.

Để cập nhật cả textcard của một tin nhắn với xác thực người dùng, chuyển nội dung sau vào yêu cầu của bạn:

  • Phạm vi uỷ quyền chat.messages.
  • name của thông báo cần cập nhật.
  • updateMask chỉ định các đường dẫn của trường thông báo cần cập nhật, được phân tách bằng dấu phẩy: updateMask='text', 'cardsV2'.

  • body chỉ định thông báo đã cập nhật, bao gồm tất cả các trường đã cập nhật đường dẫn.

Sau đây là cách cập nhật đường dẫn trường textcardsV2 trong một nhắn tin với xác thực người dùng:

Python

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

    from google_auth_oauthlib.flow import InstalledAppFlow
    from googleapiclient.discovery import build
    
    # 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 updates 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)
    
        # Update a Chat message.
        result = chat.spaces().messages().patch(
    
          # The message to update, and the updated message.
          #
          # Replace SPACE with a space name.
          # Obtain the space name from the spaces resource of Chat API,
          # or from a space's URL.
          #
          # Replace MESSAGE with a message name.
          # Obtain the message name from the response body returned
          # after creating a message asynchronously with Chat REST API.
          name='spaces/SPACE/messages/MESSAGE',
          updateMask='text,cardsV2',
          body=
          {'text': 'Updated message!',
                'cardsV2': [{
                  'cardId': 'updateCardMessage',
                  'card': {
                    'header': {
                      'title': 'An Updated Card Message!',
                      'subtitle': 'Updated with Chat REST API',
                      'imageUrl': 'https://developers.google.com/chat/images/chat-product-icon.png',
                      'imageType': 'CIRCLE'
                    },
                    'sections': [
                      {
                        'widgets': [
                          {
                            'buttonList': {
                              'buttons': [
                                {
                                  'text': 'Read the docs!',
                                  'onClick': {
                                    'openLink': {
                                      'url': 'https://developers.google.com/chat'
                                    }
                                  }
                                }
                              ]
                            }
                          }
                        ]
                      }
                    ]
                  }
                }]
          }
    
        ).execute()
    
        # Prints details about the updated message.
        print(result)
    
    if __name__ == '__main__':
        main()
    
  3. Trong mã, thay thế các nội dung sau:

    • SPACE: tên không gian mà bạn có thể lấy từ thời gian Phương thức spaces.list trong API Chat hoặc qua URL của một không gian.
    • MESSAGE: tên thông báo mà bạn có thể lấy từ nội dung phản hồi được trả về sau khi tạo thông báo một cách không đồng bộ với API Chat hoặc bằng tên tuỳ chỉnh gán cho thư khi tạo.
  4. Trong thư mục đang làm việc, hãy tạo và chạy mẫu:

    python3 chat_update_text_message_user.py