Von Nutzern eingegebene Prozessinformationen

In diesem Leitfaden wird beschrieben, wie Sie die Informationen empfangen und lesen, die Nutzer eingeben Kartennachrichten und Dialogfelder: Nutzer können Daten eingeben, die von Chat-Apps empfangen, gelesen und beantwortet werden an. Zu den Widgets, mit denen Nutzer Informationen eingeben können, gehören:

  • TextInput zur Freitexteingabe, die auch Vorschläge unterstützt.
  • SelectionInput für Listenelemente und Menüs wie Kontrollkästchen, Optionsfelder und Dropdown-Menüs.
  • DateTimePicker für Datums- und Uhrzeiteinträge.


Mit dem Card Builder können Sie JSON-Kartennachrichten für Chat-Apps erstellen und als Vorschau ansehen:

Card Builder öffnen

Durch den Empfang von Dateneingaben von Nutzern können Chat-Apps beispielsweise Folgendes tun: Folgendes:

  • Aktualisieren Sie Kundenserviceanfragen.
  • Aufträge erstellen
  • Mit Webdiensten authentifizieren.

Vorbereitung

Node.js

Eine Google Chat App mit aktivierten interaktiven Funktionen. So erstellen Sie ein Chat-App mit einem HTTP-Dienst verwenden können, führen Sie diese Kurzanleitung aus.

Apps Script

Eine Google Chat App mit aktivierten interaktiven Funktionen. So erstellen Sie ein interaktive Chat-App in Apps Script verwenden möchten, führen Sie diese Kurzanleitung aus.

Python

Eine Google Chat App mit aktivierten interaktiven Funktionen. So erstellen Sie ein Chat-App mit einem HTTP-Dienst verwenden können, führen Sie diese Kurzanleitung aus.

So funktioniert der Empfang von Daten

In einer Chat-App werden dem Nutzer Informationen als Dialogfeld oder Kartennachricht. In diesem Beispiel wird der Nutzer in einem Dialogfeld aufgefordert, Informationen zu einem Kontakt mithilfe der TextInput und SelectionInput Widgets:

Ein Dialogfeld mit einer Vielzahl verschiedener Widgets.

Anschließend empfängt die Chat-App die Daten, die Nutzer, die im Dialogfeld im JSON-Format eingegeben wurden, und ein interaction event (Interaktionsereignis). Dabei gilt:

Um Daten über die von Nutzern eingegebenen Daten zu erhalten, verwenden Sie die Methode Event.common.formInputs in der Ereignisnutzlast. Das Feld formInputs ist eine Zuordnung, in der die Schlüssel String-IDs, die den einzelnen Widgets zugewiesen sind, und Werte stehen für die Nutzereingabe für jedes Widget. Verschiedene Objekte stellen unterschiedliche Eingabedatentypen dar. Für Beispiel: Event.common.formInputs.stringInputs Stringeingaben darstellen.

Ihre App kann unter der folgenden Adresse auf den ersten vom Nutzer eingegebenen Wert zugreifen: event.common.formInputs.NAME.stringInputs.value[0], wobei NAME das Feld name eines TextInput-Widget.

Daten von Karten erhalten

Wenn ein Nutzer Daten in eine Kartennachricht eingibt, Die Chat-App empfängt eine Chat-App wie im folgenden Beispiel gezeigt:

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
  }
}

Daten aus Dialogfeldern empfangen

Wenn ein Nutzer Daten in einem Dialogfeld sendet, wird Ihre Chat-App erhält ein anderes Chat-App-Interaktionsereignis, z. B. im folgenden Beispiel:

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
  }
}

Auf Daten reagieren, die in einer Kartennachricht oder einem Dialog erfasst wurden

Nach dem Empfang der Daten aus einer Kartennachricht oder einem Dialogfenster Die Chat-App antwortet entweder durch eine Empfangsbestätigung oder per und einen Fehler zurückgegeben. Beides geschieht durch die Rückgabe eines ActionResponse:

  • Um den erfolgreichen Erhalt zu bestätigen, antworten Sie mit einem ActionResponse mit "actionStatus": "OK".
  • Um einen Fehler zurückzugeben, antworten Sie mit einem ActionResponse mit "actionStatus": "ERROR MESSAGE".

Beispiel

Im folgenden Beispiel wird geprüft, ob ein name-Wert vorhanden ist. Fehlt diese Angabe, wird der Parameter App gibt einen Fehler zurück. Falls vorhanden, bestätigt die App den Erhalt der Formulardaten und schließt das Dialogfeld.

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

In diesem Beispiel wird eine Kartennachricht gesendet, JSON-Karte Sie können auch die Apps Script-Kartendienst

/**
 * 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!'
                }
              }
            }

Fehlerbehebung

Wenn eine Google Chat-App oder card gibt einen Fehler zurück. Der Parameter In der Chatoberfläche wird die Meldung „Ein Fehler ist aufgetreten“ angezeigt. oder „Ihre Anfrage kann nicht verarbeitet werden.“ Manchmal kann die Chat-UI Es wird zwar keine Fehlermeldung angezeigt, aber die Chat-App oder die Karte zu einem unerwarteten Ergebnis führt. z. B. wird eine Kartennachricht angezeigt werden.

Auch wenn in der Chat-Benutzeroberfläche möglicherweise keine Fehlermeldung angezeigt wird, beschreibende Fehlermeldungen und Protokolldaten stehen zur Fehlerbehebung zur Verfügung. wenn die Fehlerprotokollierung für Chat-Apps aktiviert ist. Hilfe bei der Anzeige: Debugging und Beheben von Fehlern finden Sie unter Google Chat-Fehler beheben