Créer, lire, mettre à jour et supprimer des messages

Restez organisé à l'aide des collections Enregistrez et classez les contenus selon vos préférences.

Avec l'API Google Chat, vous pouvez créer, lire, mettre à jour ou supprimer un message dans Google Chat de manière asynchrone en appelant les méthodes correspondantes. Ce guide explique comment appeler les méthodes suivantes:

Les applications de chat peuvent répondre aux événements Chat, comme les messages et leur ajout à un espace, sans appeler de manière asynchrone l'API Chat. Pour créer une application de chat qui répond de manière synchrone aux événements de chat, consultez Créer une application de chat. Une application de chat peut fonctionner avec l'API Chat de manière synchrone et asynchrone.

Pour créer un message de manière asynchrone dans un espace Chat sans application Chat, configurez un webhook.

Prérequis

Pour exécuter les exemples de ce guide, vous devez remplir les conditions préalables suivantes:

Python

Créer un message

Pour créer un message de manière asynchrone dans Google Chat, appelez la méthode create sur la ressource Message. Vous pouvez créer un message sous forme de texte ou de fiche. Pour démarrer un fil de discussion ou y répondre, spécifiez un threadKey ou un thread.name.

Notez l'élément name d'un message que vous créez afin de pouvoir le consulter ultérieurement si vous devez le lire, le mettre à jour ou le supprimer. Vous pouvez également envisager de nommer les messages.

Créer un SMS

Pour créer un message textuel, procédez comme suit:

Python

  1. Dans votre répertoire de travail, créez un fichier nommé chat_create_text_message.py.
  2. Ajoutez le code suivant dans chat_create_text_message.py:

    from httplib2 import Http
    from oauth2client.service_account import ServiceAccountCredentials
    from apiclient.discovery import build
    
    # Specify required scopes.
    SCOPES = ['https://www.googleapis.com/auth/chat.bot']
    
    # Specify service account details.
    CREDENTIALS = ServiceAccountCredentials.from_json_keyfile_name(
        'service_account.json', SCOPES)
    
    # Build the URI and authenticate with the service account.
    chat = build('chat', 'v1', http=CREDENTIALS.authorize(Http()))
    
    # Create a Chat message.
    result = chat.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.
        parent='spaces/SPACE',
    
        # The message to create.
        body={'text': 'Hello, world!'}
    
    ).execute()
    
    print(result)
    
  3. Dans le code, remplacez SPACE par un nom d'espace, que vous pouvez obtenir à l'aide de la méthode spaces.list() dans l'API Chat ou à partir de l'URL d'un espace.

  4. Dans votre répertoire de travail, créez et exécutez l'exemple:

    python3 chat_create_text_message.py
    

Créer un message de fiche

Voici comment créer un message card, comme celui présenté ci-dessous:

Message de fiche créé avec l'API REST Chat.
Figure 1: Message de fiche créé avec l'API Chat.

Python

  1. Dans votre répertoire de travail, créez un fichier nommé chat_create_card_message.py.
  2. Ajoutez le code suivant dans chat_create_card_message.py:

    from httplib2 import Http
    from oauth2client.service_account import ServiceAccountCredentials
    from apiclient.discovery import build
    
    # Specify required scopes.
    SCOPES = ['https://www.googleapis.com/auth/chat.bot']
    
    # Specify service account details.
    CREDENTIALS = ServiceAccountCredentials.from_json_keyfile_name(
        'service_account.json', SCOPES)
    
    # Build the URI and authenticate with the service account.
    chat = build('chat', 'v1', http=CREDENTIALS.authorize(Http()))
    
    # Create a Chat message.
    result = chat.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.
        parent='spaces/SPACE',
    
        # The message to create.
        body=
        {
          'cardsV2': [{
            'cardId': 'createCardMessage',
            'card': {
              'header': {
                'title': 'A Card Message!',
                'subtitle': 'Created 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(result)
    
  3. Dans le code, remplacez SPACE par un nom d'espace, que vous pouvez obtenir à l'aide de la méthode spaces.list() dans l'API Chat ou à partir de l'URL d'un espace.

  4. Dans votre répertoire de travail, créez et exécutez l'exemple:

    python3 chat_create_card_message.py
    

Démarrer un fil de discussion ou y répondre

Pour démarrer un fil de discussion, créez un message et laissez thread.name vide. Google Chat l'insérera lors de la création du fil. Pour personnaliser le nom du fil de discussion, spécifiez thread.threadKey comme nom du fil de discussion.

Pour répondre à un fil de discussion, spécifiez thread.threadKey ou thread.name comme nom du fil de discussion. Les autres messages contenant le même thread.threadKey ou thread.name sont publiés dans le même fil de discussion que les réponses.

Chaque thread.threadKey est propre à l'application Chat ou au webhook qui la définit. Si deux applications ou webhooks différents définissent le même thread.threadKey, les messages ne sont pas regroupés. Au lieu de cela, deux fils de discussion différents démarrent. Deux applications ou webhooks différents peuvent publier des réponses dans le même fil de discussion en spécifiant thread.name.

Voici comment démarrer un fil de discussion ou y répondre avec le thread.threadKey "nameOfThread":

Python

  1. Dans votre répertoire de travail, créez un fichier nommé chat_create_message_thread.py.
  2. Ajoutez le code suivant dans chat_create_message_thread.py:

    from httplib2 import Http
    from oauth2client.service_account import ServiceAccountCredentials
    from apiclient.discovery import build
    
    # Specify required scopes.
    SCOPES = ['https://www.googleapis.com/auth/chat.bot']
    
    # Specify service account details.
    CREDENTIALS = ServiceAccountCredentials.from_json_keyfile_name(
        'service_account.json', SCOPES)
    
    # Build the URI and authenticate with the service account.
    chat = build('chat', 'v1', http=CREDENTIALS.authorize(Http()))
    
    # Create a Chat message.
    result = chat.spaces().messages().create(
    
        # The space to create the message in.
        #
        # REPLY_MESSAGE_FALLBACK_TO_NEW_THREAD replies to an existing thread
        # if one exists, otherwise it starts a new one.
        #
        # 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',
    
        # Whether to start a thread or reply to an existing one.
        #
        # Required when threading is enabled in a space unless starting a
        # thread.  Ignored in other space types. Threading is enabled when
        # space.spaceThreadingState is THREADED_MESSAGES.
        messageReplyOption='REPLY_MESSAGE_FALLBACK_TO_NEW_THREAD',
    
        # The message body.
        body={
    
            # The message to create.
            'text': 'Start or reply to another message in a thread!',
    
            # The thread to start or reply to.
            'thread': {
                'threadKey': 'nameOfThread'
            }
        }
    
    ).execute()
    
    print(result)
    
  3. Dans le code, remplacez SPACE par un nom d'espace, que vous pouvez obtenir à l'aide de la méthode spaces.list() dans l'API Chat ou à partir de l'URL d'un espace.

  4. Dans votre répertoire de travail, créez et exécutez l'exemple:

    python3 chat_create_message_thread.py
    

Créer et nommer un message

Pour faciliter les opérations ultérieures sur un message créé, attribuez-lui un name personnalisé. L'attribution d'un nom personnalisé permet à une application de chat de rappeler rapidement le message sans l'enregistrer name à partir du corps de la réponse renvoyée lors de la création du message.

L'attribution d'un nom personnalisé permet à une application Chat de rappeler le message sans l'enregistrer name dans le corps de la réponse renvoyée lors de la création du message.

L'attribution d'un nom personnalisé ne remplace pas le champ name généré, à savoir le nom de ressource du message. Au lieu de cela, il définit le nom personnalisé comme champ clientAssignedMessageId, qui peut ensuite être référencé lors du traitement d'opérations ultérieures, comme la mise à jour ou la suppression du message.

La spécification d'un nom personnalisé utilisé lors de la création d'un message renvoie une erreur, mais d'autres méthodes telles que update et delete fonctionnent comme prévu.

Exigences concernant les noms personnalisés:

  • Commencez par client-. Par exemple, client-custom-name est un nom personnalisé valide, mais pas custom-name.
  • Ne contenir que des lettres minuscules, des chiffres et des traits d'union
  • Ne doit pas dépasser 63 caractères.

Pour créer et nommer un message, procédez comme suit:

Python

  1. Dans votre répertoire de travail, créez un fichier nommé chat_create_named_message.py.
  2. Ajoutez le code suivant dans chat_create_named_message.py:

    from httplib2 import Http
    from oauth2client.service_account import ServiceAccountCredentials
    from apiclient.discovery import build
    
    # Specify required scopes.
    SCOPES = ['https://www.googleapis.com/auth/chat.bot']
    
    # Specify service account details.
    CREDENTIALS = ServiceAccountCredentials.from_json_keyfile_name(
        'service_account.json', SCOPES)
    
    # Build the URI and authenticate with the service account.
    chat = build('chat', 'v1', http=CREDENTIALS.authorize(Http()))
    
    # Create a Chat message with a custom name.
    result = chat.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.
        parent='spaces/SPACE',
    
        # Custom name for the message used to facilitate later operations.
        messageId='client-custom-name',
    
        # The message to create.
        body={'text': 'Hello, world!'}
    
    ).execute()
    
    print(result)
    
  3. Dans le code, remplacez SPACE par un nom d'espace, que vous pouvez obtenir à l'aide de la méthode spaces.list() dans l'API Chat ou à partir de l'URL d'un espace.

  4. Dans votre répertoire de travail, créez et exécutez l'exemple:

    python3 chat_create_named_message.py
    

Vous avez lu un message

Pour lire un message dans Google Chat de manière asynchrone, appelez la méthode get sur la ressource Message et transmettez le name du message à lire.

Pour lire un message:

Python

  1. Dans votre répertoire de travail, créez un fichier nommé chat_read_message.py.
  2. Ajoutez le code suivant dans chat_read_message.py:

    from httplib2 import Http
    from oauth2client.service_account import ServiceAccountCredentials
    from apiclient.discovery import build
    
    # Specify required scopes.
    SCOPES = ['https://www.googleapis.com/auth/chat.bot']
    
    # Specify service account details.
    CREDENTIALS = ServiceAccountCredentials.from_json_keyfile_name(
        'service_account.json', SCOPES)
    
    # Build the URI and authenticate with the service account.
    chat = build('chat', 'v1', http=CREDENTIALS.authorize(Http()))
    
    # Get a Chat message.
    result = chat.spaces().messages().get(
    
        # The message to read.
        #
        # 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'
    
      ).execute()
    
    # Print Chat API's response in your command line interface.
    print(result)
    
  3. Dans le code, remplacez SPACE par un nom d'espace, que vous pouvez obtenir à l'aide de la méthode spaces.list() dans l'API Chat ou à partir de l'URL d'un espace.

  4. Dans le code, remplacez MESSAGE par un nom de message que vous pouvez obtenir dans le corps de la réponse renvoyé après avoir créé un message de manière asynchrone avec l'API Chat, ou par le nom personnalisé attribué au message au moment de sa création.

  5. Dans votre répertoire de travail, créez et exécutez l'exemple:

    python3 chat_read_message.py
    

Modifier un message

Pour mettre à jour un message existant de manière asynchrone dans Google Chat, appelez la méthode update sur la ressource Message, puis transmettez le name du message à mettre à jour, ainsi que les éléments updateMask et body spécifiant le message mis à jour.

Mettre à jour un SMS ou le faire précéder d'un SMS

Pour mettre à jour un message textuel, transmettez:

  • name du message à mettre à jour.
  • updateMask='text'
  • body qui spécifie le message mis à jour.

Si le message mis à jour est une fiche, celle-ci est ajoutée avant le message de la carte (qui s'affiche toujours).

Voici comment remplacer un message texte par un message texte, ou ajouter un préfixe à un message fiche.

Python

  1. Dans votre répertoire de travail, créez un fichier nommé chat_update_text_message.py.
  2. Ajoutez le code suivant dans chat_update_text_message.py:

    from httplib2 import Http
    from oauth2client.service_account import ServiceAccountCredentials
    from apiclient.discovery import build
    
    # Specify required scopes.
    SCOPES = ['https://www.googleapis.com/auth/chat.bot']
    
    # Specify service account details.
    CREDENTIALS = ServiceAccountCredentials.from_json_keyfile_name(
      'service_account.json', SCOPES)
    
    # Build the URI and authenticate with the service account.
    chat = build('chat', 'v1', http=CREDENTIALS.authorize(Http()))
    
    # Update a Chat message.
    result = chat.spaces().messages().update(
    
      # 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. Dans le code, remplacez SPACE par un nom d'espace, que vous pouvez obtenir à l'aide de la méthode spaces.list() dans l'API Chat ou à partir de l'URL d'un espace.

  4. Dans le code, remplacez MESSAGE par un nom de message que vous pouvez obtenir dans le corps de la réponse renvoyé après avoir créé un message de manière asynchrone avec l'API Chat, ou par le nom personnalisé attribué au message au moment de sa création.

  5. Dans votre répertoire de travail, créez et exécutez l'exemple:

    python3 chat_update_text_message.py
    

Mettre à jour un message de fiche ou ajouter un message de fiche à un SMS

Pour mettre à jour un message card, transmettez:

  • name du message à mettre à jour
  • updateMask='cardsV2'
  • body qui spécifie le message mis à jour.

Si le message mis à jour est un message textuel, une fiche est ajoutée au message texte (qui continue de s'afficher). Si le message mis à jour est lui-même une fiche, la fiche affichée est mise à jour.

Voici comment remplacer un message par un message card:

Python

  1. Dans votre répertoire de travail, créez un fichier nommé chat_update_card_message.py.
  2. Ajoutez le code suivant dans chat_update_card_message.py:

    from httplib2 import Http
    from oauth2client.service_account import ServiceAccountCredentials
    from apiclient.discovery import build
    
    # Specify required scopes.
    SCOPES = ['https://www.googleapis.com/auth/chat.bot']
    
    # Specify service account details.
    CREDENTIALS = ServiceAccountCredentials.from_json_keyfile_name(
      'service_account.json', SCOPES)
    
    # Build the URI and authenticate with the service account.
    chat = build('chat', 'v1', http=CREDENTIALS.authorize(Http()))
    
    # Update a Chat message.
    result = chat.spaces().messages().update(
    
      # 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. Dans le code, remplacez SPACE par un nom d'espace, que vous pouvez obtenir à l'aide de la méthode spaces.list() dans l'API Chat ou à partir de l'URL d'un espace.

  4. Dans le code, remplacez MESSAGE par un nom de message que vous pouvez obtenir dans le corps de la réponse renvoyé après avoir créé un message de manière asynchrone avec l'API Chat, ou par le nom personnalisé attribué au message au moment de sa création.

  5. Dans votre répertoire de travail, créez et exécutez l'exemple:

    python3 chat_update_card_message.py
    

Supprimer un message

Pour supprimer de manière asynchrone un message existant dans Google Chat, appelez la méthode delete sur la ressource Message et transmettez le name du message à supprimer.

Pour supprimer un message:

Python

  1. Dans votre répertoire de travail, créez un fichier nommé chat_delete_message.py.
  2. Ajoutez le code suivant dans chat_delete_message.py:

    from httplib2 import Http
    from oauth2client.service_account import ServiceAccountCredentials
    from apiclient.discovery import build
    
    # Specify required scopes.
    SCOPES = ['https://www.googleapis.com/auth/chat.bot']
    
    # Specify service account details.
    CREDENTIALS = ServiceAccountCredentials.from_json_keyfile_name(
      'service_account.json', SCOPES)
    
    # Build the URI and authenticate with the service account.
    chat = build('chat', 'v1', http=CREDENTIALS.authorize(Http()))
    
    # Delete a Chat message.
    result = chat.spaces().messages().delete(
    
      # The message to delete.
      #
      # 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'
    
    ).execute()
    
    # Print Chat API's response in your command line interface.
    # When deleting a message, the response body is empty.
    print(result)
    
  3. Dans le code, remplacez SPACE par un nom d'espace, que vous pouvez obtenir à l'aide de la méthode spaces.list() dans l'API Chat ou à partir de l'URL d'un espace.

  4. Dans le code, remplacez MESSAGE par un nom de message que vous pouvez obtenir dans le corps de la réponse renvoyé après avoir créé un message de manière asynchrone avec l'API Chat, ou par le nom personnalisé attribué au message au moment de sa création.

  5. Dans votre répertoire de travail, créez et exécutez l'exemple:

    python3 chat_delete_message.py
    

Limites et considérations

  • Le corps de la réponse renvoyé lors de la création du message est le seul moyen d'obtenir l'name d'un message dans Google Chat. N'oubliez pas de noter le champ name d'un message que vous créez afin de pouvoir le consulter ultérieurement si vous devez le lire, le mettre à jour ou le supprimer. Vous pouvez également envisager de nommer les messages.
  • Lors de l'authentification en tant qu'application avec un compte de service, les applications Chat ne peuvent lire, mettre à jour et supprimer que leurs propres messages.
  • Aperçu pour les développeurs:lorsqu'une application effectue une action avec authentification utilisateur, Google Chat peut afficher un message d'attribution indiquant aux utilisateurs le nom de l'application qui a effectué l'action au nom de l'utilisateur qui l'a autorisée.