Informacje o procesie wpisywane przez użytkowników

Z tego przewodnika dowiesz się, jak otrzymywać i czytać informacje wpisywane przez użytkowników wiadomości z kart oraz okna dialogowe. Użytkownicy mogą wprowadzać dane, które aplikacje do obsługi czatu otrzymują, odczytują i odpowiadają do. Widżety, które umożliwiają użytkownikom wpisywanie informacji:


Za pomocą kreatora kart możesz zaprojektować i wyświetlić podgląd wiadomości kart JSON przeznaczonych do aplikacji Google Chat:

Otwórz kreator kart

Odbieranie danych od użytkowników umożliwia aplikacjom Google Chat wykonywanie takich czynności jak: następujące:

  • Zaktualizuj zgłoszenia do obsługi klienta.
  • Tworzenie zamówień.
  • Uwierzytelniaj za pomocą usług internetowych.

Wymagania wstępne

Node.js

Aplikacja Google Chat, w której można korzystać z funkcji interaktywnych. Aby utworzyć interaktywna aplikacja do obsługi czatu przy użyciu usługi HTTP zapoznaj się z tym krótkim wprowadzeniem.

Google Apps Script

Aplikacja Google Chat, w której można korzystać z funkcji interaktywnych. Aby utworzyć z interaktywną aplikacją Google Chat w Apps Script, zapoznaj się z tym krótkim wprowadzeniem.

Python

Aplikacja Google Chat, w której można korzystać z funkcji interaktywnych. Aby utworzyć interaktywna aplikacja do obsługi czatu przy użyciu usługi HTTP zapoznaj się z tym krótkim wprowadzeniem.

Jak działa odbieranie danych

Aplikacja do obsługi czatu przedstawia użytkownikowi informacje w formie lub komunikat na karcie. W tym przykładzie użytkownik musi wpisać informacje o kontakcie za pomocą TextInput oraz SelectionInput widżety:

Okno z różnymi różnymi widżetami.

Gdy skończysz, aplikacja Google Chat otrzyma dane, które wprowadzonych w oknie dialogowym w formacie JSON oraz zdarzenia interakcji, gdzie:

Aby poznać dane wprowadzone przez użytkowników, użyj funkcji Event.common.formInputs w ładunku zdarzenia. Pole formInputs to mapa, w której klucze ciągi tekstowe przypisane do każdego widżetu, a wartości reprezentują dane wejściowe użytkownika dla dla każdego widżetu. Różne obiekty reprezentują różne typy danych wejściowych. Dla: przykład, Event.common.formInputs.stringInputs reprezentują dane wejściowe w postaci ciągu znaków.

Aplikacja ma dostęp do pierwszej wartości wpisanej przez użytkownika na stronie event.common.formInputs.NAME.stringInputs.value[0], gdzie NAME jest polem name elementu Widżet TextInput.

Odbieranie danych z kart

Gdy użytkownik wpisze dane w wiadomości na karcie, Aplikacja do obsługi czatu odbiera aplikację Google Chat zdarzenie interakcji, np. w tym przykładzie:

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

Odbieranie danych z okien dialogowych

Gdy użytkownik prześle dane w oknie, aplikacja Google Chat odbiera inne zdarzenie interakcji z aplikacją Google Chat, takie jak następujący przykład:

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

Reaguj na dane zebrane w komunikacie lub oknie dialogowym

Po otrzymaniu danych z komunikatu lub okna dialogowego w karcie Aplikacja do obsługi czatu odpowiada, potwierdzając odbiór lub zwraca błąd. Oba wykonywane są przez zwrócenie ActionResponse:

  • Aby potwierdzić odbiór, wyślij odpowiedź o treści ActionResponse z parametrem "actionStatus": "OK".
  • Aby zwrócić błąd, w odpowiedzi podaj ActionResponse z parametrem "actionStatus": "ERROR MESSAGE".

Przykład

W tym przykładzie sprawdzamy, czy występuje wartość name. Jeśli go nie podasz, aplikacja zwraca błąd. Jeśli ta opcja jest dostępna, aplikacja potwierdza otrzymanie danych z formularza. i zamyka okno.

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"
        }
      }
    });
  }
}

Google Apps Script

Ten przykładowy kod karty wysyła wiadomość przez zwrócenie card JSON. Możesz też użyć usługi Usługa karty 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!'
                }
              }
            }

Rozwiązywanie problemów

Gdy aplikacja Google Chat lub card zwraca błąd, Interfejs czatu wyświetla komunikat „Coś poszło nie tak”. lub „Nie można przetworzyć żądania”. Czasami interfejs Google Chat nie wyświetla się żaden komunikat o błędzie, ale aplikacja Google Chat lub zwraca nieoczekiwany wynik; na przykład wiadomość w formie karty .

Komunikat o błędzie może nie wyświetlać się w interfejsie Google Chat, opisowe komunikaty o błędach i dane dziennika, które pomogą Ci w naprawianiu błędów gdy logowanie błędów aplikacji Google Chat jest włączone. Aby uzyskać pomoc w wyświetlaniu, debugowania i naprawiania błędów, zapoznaj się z artykułem Rozwiązywanie problemów z błędami w Google Chat