Zaktualizuj wiadomość

Z tego przewodnika dowiesz się, jak używać metody patch w zasobie Message interfejsu Google Chat API w celu zaktualizowania wiadomości tekstowej lub karty w pokoju. Zaktualizuj aby zmienić atrybuty wiadomości, takie jak treść Możesz również dołączyć wiadomość tekstową na początku lub dołączyć kartę do SMS-a.

Interfejs Chat API obsługuje też metodą update, ale zdecydowanie zalecamy wywołanie funkcji Metoda patch ponieważ używa żądania HTTP PATCH, a jednocześnie update korzysta z Żądanie HTTP PUT. Aby dowiedzieć się więcej, przeczytaj Sekcja PATCH i PUT linii AIP-134.

W interfejsie Chat API wiadomość z Google Chat jest reprezentowana przez Message zasób. Użytkownicy Google Chat mogą wysyłać tylko wiadomości zawierające tekst, Aplikacje do obsługi czatu mogą korzystać z wielu innych funkcji wiadomości, w tym używające statycznych lub interaktywnych interfejsów użytkownika i zbierając informacje z użytkowników i dostarczanie wiadomości prywatnie. Aby dowiedzieć się więcej o funkcji przesyłania wiadomości funkcji dostępnych w interfejsie Chat API, zapoznaj się z Omówienie wiadomości w Google Chat

Wymagania wstępne

Python

  • Python w wersji 3.6 lub nowszej
  • narzędzie do zarządzania pakietami pip;
  • Najnowsze biblioteki klienta Google. Aby je zainstalować lub zaktualizować: uruchom następujące polecenie w interfejsie wiersza poleceń:
    pip3 install --upgrade google-api-python-client google-auth-oauthlib
    

Aktualizowanie SMS-a lub dodawanie wiadomości na początku do wiadomości w ramach karty z uwierzytelnianiem użytkownika

Aby zaktualizować SMS z uwierzytelnianie użytkownika, zaliczone następujące elementy w żądaniu:

  • Zakres autoryzacji chat.messages.
  • name wiadomości do zaktualizowania.
  • updateMask='text'
  • Pole body, które określa zaktualizowany komunikat.

Jeśli zaktualizowana wiadomość to wiadomość na karcie, wiadomość tekstowa zostanie dodana do wiadomości na karcie (która będzie nadal wyświetlana).

Aby zaktualizować SMS lub dołącz wiadomość tekstową do wiadomość na karcie z Uwierzytelnianie użytkownika:

Python

  1. W katalogu roboczym utwórz plik o nazwie chat_update_text_message_user.py
  2. Umieść w pliku chat_update_text_message_user.py ten kod:

    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. Zastąp w kodzie następujące elementy:

    • SPACE: nazwa pokoju, którą możesz uzyskać z: Metoda spaces.list w interfejsie Chat API lub z adresu URL pokoju.
    • MESSAGE: nazwa wiadomości, którą możesz uzyskać; z treści odpowiedzi zwróconej po asynchronicznym utworzeniu wiadomości za pomocą interfejsu Chat API albo nazwa niestandardowa jest przypisany do wiadomości w momencie utworzenia.
  4. W katalogu roboczym skompiluj i uruchom przykład:

    python3 chat_update_text_message_user.py
    

Aktualizowanie SMS-a lub dodawanie wiadomości na początku karty z uwierzytelnianiem w aplikacji

Aby zaktualizować SMS z uwierzytelnianie aplikacji, w swoim żądaniu:

  • Zakres autoryzacji chat.bot.
  • name wiadomości do zaktualizowania.
  • updateMask='text'
  • Pole body, które określa zaktualizowany komunikat.

Jeśli zaktualizowana wiadomość to wiadomość z karty, wiadomość tekstowa zostanie dodana do wiadomości na karcie (która będzie nadal wyświetlana).

Aby zaktualizować SMS lub dodaj wiadomość na początku wiadomość na karcie z Uwierzytelnianie aplikacji:

Python

  1. W katalogu roboczym utwórz plik o nazwie chat_update_text_message_app.py
  2. Umieść w pliku chat_update_text_message_app.py ten kod:

    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. Zastąp w kodzie następujące elementy:

    • SPACE: nazwa pokoju, którą możesz uzyskać z: Metoda spaces.list w interfejsie Chat API lub z adresu URL pokoju.
    • MESSAGE: nazwa wiadomości, którą możesz uzyskać; z treści odpowiedzi zwróconej po asynchronicznym utworzeniu wiadomości za pomocą interfejsu Chat API albo nazwa niestandardowa jest przypisany do wiadomości w momencie utworzenia.
  4. W katalogu roboczym skompiluj i uruchom przykład:

    python3 chat_update_text_message_app.py
    

Aktualizowanie wiadomości w formie karty lub dołączanie wiadomości z kartą do SMS-a

Aby zaktualizować wiadomość na karcie, w swoim żądaniu:

  • Zakres autoryzacji chat.bot. Aby zaktualizować wiadomość dotyczącą karty, uwierzytelnianie aplikacji.
  • name wiadomości do zaktualizowania.
  • updateMask='cardsV2'
  • Pole body, które określa zaktualizowany komunikat.

Jeśli zaktualizowana wiadomość to SMS, do wiadomości (która będzie dalej wyświetlana) pojawi się karta. Jeśli zaktualizowana wiadomość jest sama card, wyświetlana karta będzie Zaktualizowano.

Oto jak zaktualizować wiadomość do wiadomość na karcie:

Python

  1. W katalogu roboczym utwórz plik o nazwie chat_update_card_message.py
  2. Umieść w pliku chat_update_card_message.py ten kod:

    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. Zastąp w kodzie następujące elementy:

    • SPACE: nazwa pokoju, którą możesz uzyskać z: Metoda spaces.list w interfejsie Chat API lub z adresu URL pokoju.

    • MESSAGE: nazwa wiadomości, którą możesz uzyskać; z treści odpowiedzi zwróconej po asynchronicznym utworzeniu wiadomości za pomocą interfejsu Chat API albo nazwa niestandardowa jest przypisany do wiadomości w momencie utworzenia.

  4. W katalogu roboczym skompiluj i uruchom przykład:

    python3 chat_update_card_message.py
    

Interfejs Chat API zwraca instancję Message zawierający szczegóły zaktualizowanej wiadomości.

Aktualizowanie wiadomości z wieloma ścieżkami pól jednocześnie

Po zaktualizowaniu wiadomości możesz zaktualizować wiele ścieżek pól wiadomości w obecnie się znajdujesz. Na przykład w żądaniu wiadomości o aktualizacji możesz określić zmianę text i cardsv2 ścieżek pól jednocześnie, co aktualizuje zarówno wartości tekst i kartę wiadomości. Jeśli wiadomość zawiera tylko tekst bez karty, zostanie dodany do wiadomości. Więcej informacji o obsługiwanych ścieżkach pól znajdziesz zobacz Parametry typu updateMask.

Aby zaktualizować text oraz card wiadomości z uwierzytelnienie użytkownika. w swoim żądaniu:

  • Zakres autoryzacji chat.messages.
  • name wiadomości do zaktualizowania.
  • updateMask określający rozdzielane pola wiadomości ścieżki do zaktualizowania przecinkami: updateMask='text', 'cardsV2'.

  • body, który określa zaktualizowany komunikat, w tym wszystkie zaktualizowane pola ścieżek konwersji.

Oto jak zaktualizować ścieżki pól text i cardsV2 w wiadomość z Uwierzytelnianie użytkownika:

Python

  1. W katalogu roboczym utwórz plik o nazwie chat_update_text_message_user.py
  2. Umieść w pliku chat_update_text_message_user.py ten kod:

    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. Zastąp w kodzie następujące elementy:

    • SPACE: nazwa pokoju, którą możesz uzyskać z: Metoda spaces.list w interfejsie Chat API lub z adresu URL pokoju.
    • MESSAGE: nazwa wiadomości, którą możesz uzyskać; z treści odpowiedzi zwróconej po asynchronicznym utworzeniu wiadomości za pomocą interfejsu Chat API albo nazwa niestandardowa jest przypisany do wiadomości w momencie utworzenia.
  4. W katalogu roboczym skompiluj i uruchom przykład:

    python3 chat_update_text_message_user.py