Traiter les informations saisies par les utilisateurs

Ce guide explique comment recevoir et lire les informations saisies par les utilisateurs messages des fiches et boîtes de dialogue. Les utilisateurs peuvent saisir des données que les applications Chat reçoivent, lisent et répondent auxquelles vous souhaitez vous connecter. Voici quelques widgets qui permettent aux utilisateurs de saisir des informations:

  • TextInput pour saisir du texte au format libre qui accepte également les suggestions.
  • SelectionInput pour les éléments de liste et les menus, tels que les cases à cocher, les cases d'option et les menus déroulants.
  • DateTimePicker pour les entrées de date et d'heure.


Utilisez le générateur de cartes pour concevoir et prévisualiser des messages de cartes JSON pour les applications Chat:

Ouvrir Card Builder

La réception des données saisies par les utilisateurs permet aux applications Chat d'effectuer différentes opérations : les éléments suivants:

  • Mettre à jour les demandes adressées au service client
  • Créer des bons de travail
  • S'authentifier auprès de services Web

Prérequis

Node.js

Une application Google Chat avec des fonctionnalités interactives. Pour créer un une application Chat interactive utilisant un service HTTP, suivez ce guide de démarrage rapide.

Apps Script ;

Une application Google Chat avec des fonctionnalités interactives. Pour créer un application Chat interactive dans Apps Script, suivez ce guide de démarrage rapide.

Python

Une application Google Chat avec des fonctionnalités interactives. Pour créer un une application Chat interactive utilisant un service HTTP, suivez ce guide de démarrage rapide.

Fonctionnement de la réception de données

Une application Chat présente des informations à l'utilisateur sous la forme une boîte de dialogue ou un message de fiche. Dans cet exemple, une boîte de dialogue demande à l'utilisateur de saisir les informations d'un contact à l'aide du TextInput et SelectionInput widgets:

Boîte de dialogue présentant différents widgets.

Une fois l'opération terminée, l'application Chat reçoit les données les utilisateurs sont entrés dans la boîte de dialogue au format JSON et un événement d'interaction où:

Pour obtenir des données sur ce que les utilisateurs ont saisi, utilisez le Event.common.formInputs dans la charge utile de l'événement. Le champ formInputs est un mappage dans lequel les clés sont les identifiants de chaîne attribués à chaque widget et les valeurs représentent les entrées utilisateur pour chaque widget. Différents objets représentent différents types de données d'entrée. Pour exemple : Event.common.formInputs.stringInputs représentent des entrées de chaîne.

Votre application peut accéder à la première valeur saisie par l'utilisateur à event.common.formInputs.NAME.stringInputs.value[0], où NAME est le champ name d'une Widget TextInput

Recevoir des données à partir de cartes

Lorsqu'un utilisateur saisit des données dans un message sous forme de fiche, votre L'application Chat reçoit une application Chat d'interaction, comme dans l'exemple suivant:

JSON

{
  "type": enum (EventType),
  "eventTime": string,
  "threadKey": string,
  "message": {
    object (Message)
  },
  "user": {
    object (User)
  },
  "space": {
    object (Space)
  },
  "action": {
    object (FormAction)
  },
  "configCompleteRedirectUrl": string,
  "common": {

    // Represents user data entered in a card.
    "formInputs": {

      // Represents user data entered for a specific field in a card.
      "NAME": {

        // Represents string data entered in a card, like text input fields
        // and check boxes.
        "stringInputs": {

          // An array of strings entered by the user in a card.
          "value": [
            string
          ]
        }
      }
    },
    "parameters": {
      string: string,
      ...
    },
    "invokedFunction": string
  }
}

Recevoir des données à partir des boîtes de dialogue

Lorsqu'un utilisateur envoie des données dans une boîte de dialogue, votre application Chat reçoit un autre événement d'interaction avec l'application Chat, tel que l'exemple suivant:

JSON

{
  "type": enum (EventType),
  "eventTime": string,
  "threadKey": string,
  "message": {
    object (Message)
  },
  "user": {
    object (User)
  },
  "space": {
    object (Space)
  },
  "action": {
    object (FormAction)
  },
  "configCompleteRedirectUrl": string,

  // Indicates that this event is dialog-related.
  "isDialogEvent": true,

  // Indicates that a user clicked a button, and all data
  // they entered in the dialog is included in Event.common.formInputs.
  "dialogEventType": "SUBMIT_DIALOG",
  "common": {
    "userLocale": string,
    "hostApp": enum (HostApp),
    "platform": enum (Platform),
    "timeZone": {
      object (TimeZone)
    },

    // Represents user data entered in a dialog.
    "formInputs": {

      // Represents user data entered for a specific field in a dialog.
      "NAME": {

        // Represents string data entered in a dialog, like text input fields
        // and check boxes.
        "stringInputs": {

          // An array of strings entered by the user in a dialog.
          "value": [
            string
          ]
        }
      }
    },
    "parameters": {
      string: string,
      ...
    },
    "invokedFunction": string
  }
}

Répondre aux données collectées à partir d'un message avec carte ou d'une boîte de dialogue

Après avoir reçu les données d'un message avec fiche ou d'une boîte de dialogue, L'application de chat répond soit par un accusé de réception, soit par renvoie une erreur. Ces deux opérations se font en renvoyant une ActionResponse:

  • Pour accuser réception de votre message, répondez avec un ActionResponse contenant "actionStatus": "OK".
  • Pour renvoyer une erreur, répondez avec une ActionResponse contenant "actionStatus": "ERROR MESSAGE".

Exemple

L'exemple suivant vérifie la présence d'une valeur name. Si ce champ n'est pas renseigné, l'application renvoie une erreur. Le cas échéant, l'application accuse réception des données du formulaire et ferme la boîte de dialogue.

Node.js

/**
 * Checks for a form input error, the absence of
 * a "name" value, and returns an error if absent.
 * Otherwise, confirms successful receipt of a dialog.
 *
 * Confirms successful receipt of a dialog.
 *
 * @param {Object} event the event object from Chat API.
 *
 * @return {object} open a Dialog in Google Chat.
 */
function receiveDialog(event) {

  // Checks to make sure the user entered a name
  // in a dialog. If no name value detected, returns
  // an error message.
  if (event.common.formInputs.WIDGET_NAME.stringInputs.value[0] == "") {
    res.json({
      "actionResponse": {
        "type": "DIALOG",
        "dialogAction": {
          "actionStatus": "Don't forget to name your new contact!"
        }
      }
    });

  // Otherwise the app indicates that it received
  // form data from the dialog. Any value other than "OK"
  // gets returned as an error. "OK" is interpreted as
  // code 200, and the dialog closes.
  } else {
    res.json({
      "actionResponse": {
        "type": "DIALOG",
        "dialogAction": {
          "actionStatus": "OK"
        }
      }
    });
  }
}

Apps Script ;

Cet exemple envoie un message de carte en renvoyant fichier JSON de la carte. Vous pouvez également utiliser Service de fiches Apps Script.

/**
 * Checks for a form input error, the absence of
 * a "name" value, and returns an error if absent.
 * Otherwise, confirms successful receipt of a dialog.
 *
 * Confirms successful receipt of a dialog.
 *
 * @param {Object} event the event object from Chat API.
 *
 * @return {object} open a Dialog in Google Chat.
 */
function receiveDialog(event) {

  // Checks to make sure the user entered a name
  // in a dialog. If no name value detected, returns
  // an error message.
  if (event.common.formInputs.WIDGET_NAME[""].stringInputs.value[0] == "") {
    return {
      "actionResponse": {
        "type": "DIALOG",
        "dialogAction": {
          "actionStatus": "Don't forget to name your new contact!"
        }
      }
    };

  // Otherwise the app indicates that it received
  // form data from the dialog. Any value other than "OK"
  // gets returned as an error. "OK" is interpreted as
  // code 200, and the dialog closes.
  } else {
    return {
      "actionResponse": {
        "type": "DIALOG",
        "dialogAction": {
          "actionStatus": "OK"
        }
      }
    };
  }
}

Python

def receive_dialog(event: Mapping[str, Any]) -> Mapping[str, Any]:
  """Checks for a form input error, the absence of a "name" value, and returns
     an error if absent. Otherwise, confirms successful receipt of a dialog.

  Args:
      event (Mapping[str, Any]): the event object from Chat API.

  Returns:
      Mapping[str, Any]: the response.
  """

  if common := event.get('common'):
    if form_inputs := common.get('formInputs'):
      if contact_name := form_inputs.get('WIDGET_NAME'):
        if string_inputs := contact_name.get('stringInputs'):
          if name := string_inputs.get('value')[0]:
            return {
              'actionResponse': {
                'type': 'DIALOG',
                'dialogAction': {
                  'actionStatus': 'OK'
                }
              }
            }
          else:
            return {
              'actionResponse': {
                'type': 'DIALOG',
                'dialogAction': {
                  'actionStatus': 'Don\'t forget to name your new contact!'
                }
              }
            }

Résoudre les problèmes

Lorsqu'une application ou card renvoie une erreur, la L'interface Chat affiche le message "Une erreur s'est produite". ou "Impossible de traiter votre demande." Parfois, l'interface utilisateur de Chat n'affiche aucun message d'erreur, mais que l'application ou la carte produit un résultat inattendu. Par exemple, un message de fiche peut ne pas s'affichent.

Même s'il est possible qu'aucun message d'erreur ne s'affiche dans l'interface utilisateur de Chat, Des messages d'erreur descriptifs et des données de journaux sont disponibles pour vous aider à corriger les erreurs. Lorsque la journalisation des erreurs est activée pour les applications Chat. Pour obtenir de l'aide, le débogage et la correction des erreurs, consultez Résoudre les problèmes liés à Google Chat