Kullanıcıların girdiği işlem bilgileri

Bu kılavuzda, kullanıcıların girdiği bilgilerin nasıl alınacağı ve okunacağı açıklanmaktadır. kart mesajları ve iletişim kutuları. Kullanıcılar, Chat uygulamalarının aldığı, okuduğu ve yanıt verdiği verileri girebilir . Kullanıcıların bilgi girmesine olanak tanıyan widget'lar şunlardır:

  • TextInput önerileri de destekleyen serbest biçimli metin girişi için.
  • SelectionInput liste öğeleri ve menüler için (onay kutuları, radyo düğmeleri ve açılır menüler gibi) kullanın.
  • DateTimePicker kullanabilirsiniz.


Chat uygulamaları için JSON kart mesajları tasarlayıp önizlemek üzere Kart Oluşturucu'yu kullanın:

Kart Oluşturucu'yu açın

Kullanıcılardan veri girişi alındığında Chat uygulamaları aşağıdaki gibi işlemleri yapabilir: şu:

  • Müşteri hizmetleri destek kayıtlarını güncelleme.
  • İş siparişleri oluşturabilir.
  • Web hizmetleriyle kimlik doğrulayın.

Ön koşullar

Node.js

Etkileşimli özellikler için etkinleştirilmiş bir Google Chat uygulaması. Bir HTTP hizmeti kullanarak etkileşimli Chat uygulaması için bu hızlı başlangıç kılavuzunu tamamlayın.

Apps Komut Dosyası

Etkileşimli özellikler için etkinleştirilmiş bir Google Chat uygulaması. Bir Apps Komut Dosyası'ndaki etkileşimli Chat uygulaması için bu hızlı başlangıç kılavuzunu tamamlayın.

Python

Etkileşimli özellikler için etkinleştirilmiş bir Google Chat uygulaması. Bir HTTP hizmeti kullanarak etkileşimli Chat uygulaması için bu hızlı başlangıç kılavuzunu tamamlayın.

Veri almanın işleyiş şekli

Chat uygulaması, bilgileri kullanıcıya iletişim kutusu veya kart mesajı gösterir. Bu örnekte, bir iletişim kutusunda kullanıcıdan iletişim bilgilerini kullanarak TextInput ve SelectionInput widget'lar:

Çeşitli widget'ların gösterildiği bir iletişim kutusu.

İşlem tamamlandığında Chat uygulaması, iletişim kutusuna JSON biçiminde ve etkileşim etkinliği:

Kullanıcıların yazdıklarıyla ilgili verileri almak için Event.common.formInputs alanına girin. formInputs alanı, anahtarların bulunduğu haritadır her bir widget'a atanan dize kimlikleri ve değerler, tıklayın. Farklı nesneler, farklı giriş verisi türlerini temsil eder. Örneğin, Örneğin, Event.common.formInputs.stringInputs dize girişlerini temsil eder.

Uygulamanız, kullanıcı tarafından girilen ilk değere şu adreste erişebilir: event.common.formInputs.NAME.stringInputs.value[0], burada NAME bir değeri name alanıdır TextInput widget'ı.

Kartlardan veri alma

Kullanıcı bir kart mesajına veri girdiğinde Chat uygulaması bir Chat uygulaması alır aşağıdaki örnekteki gibi bir etkileşim etkinliği oluşturun:

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

İletişim kutularından veri alma

Kullanıcı iletişim kutusunda veri gönderdiğinde Chat uygulamanız başka bir Chat uygulaması etkileşim etkinliği aldığında, aşağıdaki örneği inceleyin:

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

Kart mesajından veya iletişim kutusundan toplanan verilere yanıt verme

Bir kart mesajından veya iletişim kutusundan veri aldıktan sonra Chat uygulaması, makbuzu onaylayarak veya hatası döndürüyor. Bu işlemlerin her ikisi de bir ActionResponse:

  • Başarılı makbuzu onaylamak için ActionResponse parametresi için "actionStatus": "OK" değerine ayarlanır.
  • Hata döndürmek için ActionResponse parametresi için "actionStatus": "ERROR MESSAGE" değerine ayarlanır.

Örnek

Aşağıdaki örnekte bir name değerinin olup olmadığı kontrol edilir. Yoksa uygulama hata döndürüyor. Varsa uygulama, form verilerinin alındığını onaylar ve iletişim kutusunu kapatır.

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 Komut Dosyası

Bu örnekte, kart JSON'a ekleyin. Ayrıca şunu da kullanabilirsiniz: Apps Komut Dosyası kart hizmeti.

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

Sorun giderme

Bir Google Chat uygulaması veya card bir hata döndürürse Chat arayüzünde "Bir sorun oluştu" mesajı gösteriliyor. veya "İsteğiniz işlenemiyor." Chat kullanıcı arayüzü herhangi bir hata mesajı görüntülenmiyor ancak Chat uygulaması veya kart beklenmeyen bir sonuç veriyorsa; Örneğin karttaki bir mesajda görünür.

Chat kullanıcı arayüzünde hata mesajı görüntülenmese de Hataları düzeltmenize yardımcı olmak için açıklayıcı hata mesajları ve günlük verileri sunulur Chat uygulamaları için hata günlük kaydı etkinleştirildiğinde. Görüntüleme konusunda yardım için ve hataları düzeltme ile ilgili daha fazla bilgi edinmek için Google Chat hatalarını giderme ve düzeltme