Envoyer des messages privés aux utilisateurs de Google Chat

Cette page explique comment créer et envoyer des messages privés en tant que Application Google Chat.

Un message privé est un message de l'application Chat qui n'est visible par un utilisateur Chat donné. Vous pouvez utiliser des messages privés dans espaces regroupant plusieurs personnes afin qu'elles puissent interagir en privé Applications de chat Par exemple, votre L'application Chat peut envoyer des messages en mode privé pour effectuer l'une des tâches suivantes:

  • Répondez à une commande à barre oblique. Par exemple, si Un utilisateur appelle la barre oblique /about de votre application Chat. dans un espace, votre application Chat peut répondre avec une message privé expliquant ce que votre application Chat et comment l'utiliser.
  • Envoyer une notification ou envoyer des informations qui ne concernent qu'un seul utilisateur Pour par exemple, notifier un utilisateur qu'une tâche lui a été attribuée ou lui rappeler pour accomplir la tâche.
  • Envoyez un message d'erreur. Par exemple, si un utilisateur omet le texte d'argument requis pour une commande à barre oblique, l'application Chat peut envoyer une un message privé pour expliquer l'erreur et aider l'utilisateur à formater la commande.
  • Envoyer un message de bienvenue privé à un utilisateur lorsqu'il est ajouté à un espace explique les consignes ou explique comment utiliser l'application Chat.

Lorsqu'une application Chat envoie un message privé, le message affiche un libellé informant l'utilisateur que le message est lui seul visible:

Message privé pour le
  Application Chat Cymbal Labs. Le message indique que
  L'application Chat a été créée par Cymbal Labs et partage un lien
  vers la documentation et un lien pour contacter l'équipe d'assistance.
Figure 1: Lorsqu'une application Chat envoie une message privé, l'utilisateur voit un message portant un libellé indiquant Only visible to you.

Prérequis

Node.js

Python

Apps Script ;

Envoyer un message privé

Pour envoyer un message en mode privé en tant qu'application Chat, vous devez spécifier la privateMessageViewer dans le message lorsque vous le créez. Vous créez des messages privés tout comme vous créez un message: soit en répondant à une interaction avec un utilisateur, appeler de manière asynchrone l'API Google Chat create() sur la Message. Pour savoir comment envoyer des messages ou des cartes, consultez l'article Envoyer un message

L'exemple suivant montre le code JSON d'un message texte privé indiquant Hello private world!:

{
    "text": "Hello private world!",
    "privateMessageViewer": "USER"
}

Dans cet exemple, USER représente l'utilisateur Chat qui peut voir le message, Ressource User. Si vous répondez à un interaction avec l'utilisateur, vous pouvez spécifier l'objet User de l'événement d'interaction. Vous trouverez un exemple dans la section suivante Répondez en privé à une commande à barre oblique.

Sinon, pour spécifier le destinataire du message privé, vous pouvez utiliser la méthode Champ name de User ressource:

{
    "text": "Hello private world!",
    "privateMessageViewer": {
      "name": "users/USER_ID"
    }
}

Dans cet exemple, vous utilisez le champ name pour spécifier le User du lecteur. nom de la ressource dans Google Chat. Remplacer USER_ID avec un identifiant unique pour l'utilisateur, tel que 12345678987654321 ou hao@cymbalgroup.com

Pour en savoir plus sur la spécification des utilisateurs, consultez Identifiez et spécifiez les utilisateurs de Google Chat.

Répondre en privé à une commande à barre oblique

Le code suivant montre un exemple d'application Chat qui répond à une commande à barre oblique par un message privé.

L'application Chat traite une Événement d'interaction MESSAGE et répond à la commande à barre oblique /help par un message texte privé qui explique comment l'utiliser:

Node.js

/**
* Responds to a MESSAGE event in Google Chat.
*
* @param {!Object} req Request sent from Google Chat app
* @param {!Object} res Response to send back
*
* @return {!Object} respond to slash command
*/
exports.onMessage = function onMessage(req, res) {
  if (req.method === 'GET' || !req.body.message) {
    return res.send('Hello! This function is meant to be used in Google Chat app.');
  }

  const event = req.body;

  // Checks for the presence of event.message.slashCommand.
  // If the slash command is "/help", responds with a private text message.
  if (event.message.slashCommand) {
    switch (event.message.slashCommand.commandId) {
      case '1':  // /help
        return res.json({
          privateMessageViewer: event.user,
          text: 'This Chat app was created by Cymbal Labs. To get help with this app, <https://cymbalgroup.com/docs|see our documentation> or <https://cymbalgroup.com/support|contact our support team>.'
        });
    }
  }

  // If the Chat app doesn't detect a slash command, it responds
  // with a private text message
  return res.json({
    privateMessageViewer: event.user,
    text: 'Try a slash command.'
  });
};

Apps Script ;

/**
* Responds to a MESSAGE event in Google Chat.
*
* @param {Object} event the event object from Google Chat
*/
function onMessage(event) {
  if (event.message.slashCommand) {
    switch (event.message.slashCommand.commandId) {
      case 1: // Responds to /help
        return {
          "privateMessageViewer": event.user,
          "text": "This Chat app was created by Cymbal Labs. To get help with this app, <https://cymbalgroup.com/docs|see our documentation> or <https://cymbalgroup.com/support|contact our support team>."
        };
    }
  }
  else {
    return { "text": "Try a slash command.", "privateMessageViewer": event.user };
  }
}

Python

from typing import Any, Mapping

import flask
import functions_framework

@functions_framework.http
def main(req: flask.Request) -> Mapping[str, Any]:
  """Responds to a MESSAGE event in Google Chat.

  Args:
      req (flask.Request): the event object from Chat API.

  Returns:
      Mapping[str, Any]: open a Dialog in response to a card's button click.
  """
  if req.method == 'GET':
    return 'Hello! This function must be called from Google Chat.'

  request = req.get_json(silent=True)

  # Checks for the presence of event.message.slashCommand.
  # If the slash command is "/help", responds with a private text message.
  if request.get('message', {}).get('slashCommand'):
    command_id = request.get('message', {}).get('slashCommand').get('commandId')
    if command_id == '1':  # /help
      return {
          'privateMessageViewer': request.get('user'),
          'text': (
              'This Chat app was created by Cymbal Labs. To get help with this'
              ' app, <https://cymbalgroup.com/docs|see our documentation> or'
              ' <https://cymbalgroup.com/support|contact our support team>.'
          ),
      }

  return {
      'privateMessageViewer': request.get('user'),
      'text': 'Try a slash command.',
  }

Limites

Pour envoyer un message privé, le message ne doit pas contenir ni utiliser les suivantes:

  • Pièces jointes.
  • Actions accessoire
  • Messages partiellement privés Par exemple, une application Chat Impossible d'envoyer un message contenant du texte et une carte dont le texte n'est visible que un seul utilisateur, mais la fiche est visible par tous les membres de l'espace.
  • Authentification des utilisateurs. Seules les applications Chat peuvent envoyer des messages privés. L'application de chat ne parvient pas à s'authentifier en tant qu'utilisateur pour envoyer un message privé.

Mettre à jour ou supprimer des messages privés

Pour modifier ou supprimer les messages Google Chat, vous devez appeler la API Chat. Vous ne pouvez ni modifier le destinataire du message privé, le message public. Par conséquent, lorsque vous mettez à jour des messages privés, vous devez omettre le champ privateMessageViewer dans l'appel d'API (ce champ n'est qu'une sortie).

Pour modifier un message privé, consultez Modifier un message Pour supprimer un message privé, consultez Supprimer un message