Bu kılavuzda, kullanıcıların kart mesajlarına ve iletişim kutularına girdiği bilgilerin nasıl alınıp okunacağı açıklanmaktadır. 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 aşağıdakileri içerir:
- Önerileri de destekleyen serbest biçimli metin girişi için
TextInput
. - Onay kutuları, radyo düğmeleri ve açılır menüler gibi liste öğeleri ve menüler için
SelectionInput
. - Tarih ve saat girişleri için
DateTimePicker
.
Kullanıcılardan veri girişi alınması, Chat uygulamalarının aşağıdakiler gibi işlemleri gerçekleştirmesine olanak tanır:
- Müşteri hizmetleri destek kayıtlarını güncelleme.
- İş siparişleri oluşturma
- Web hizmetleriyle kimlik doğrulayın.
Veri almanın işleyiş şekli
Chat uygulamaları, bilgileri kullanıcıya iletişim kutusu veya kart mesajı olarak sunar. Bu örnekte, bir iletişim kutusunda kullanıcıdan TextInput
ve SelectionInput
widget'larını kullanarak kişi hakkında bilgi girmesi istenir:
İşlem tamamlandığında Chat uygulaması, kullanıcıların iletişim kutusuna girdikleri verileri JSON biçiminde ve bir etkileşim etkinliği alır. Bu etkinliklerde:
EventType
değeri:CARD_CLICKED
.DialogEventType
,SUBMIT_DIALOG
değerine eşittir (yalnızca iletişim kutuları için).
Kullanıcıların girdileri hakkında veri almak için etkinlik yükündeki Event.common.formInputs
alanını kullanın. formInputs
alanı, anahtarların her bir widget'a atanan dize kimlikleri olduğu ve değerlerin her widget için kullanıcı girişini temsil ettiği bir haritadır. Farklı nesneler farklı giriş verisi türlerini temsil eder. Örneğin, Event.common.formInputs.stringInputs
dize girişlerini temsil eder.
Uygulamanız, kullanıcı tarafından girilen ilk değere event.common.formInputs.NAME.stringInputs.value[0]
adresinden erişebilir. Burada NAME
, bir TextInput
widget'ının name
alanıdır.
Kartlardan veri alma
Bir kullanıcı kart mesajına veri girdiğinde Chat uygulamanız aşağıdaki örneğe benzer bir Chat uygulaması etkileşim etkinliği alır:
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
Bir kullanıcı iletişim kutusunda veri gönderdiğinde Chat uygulamanız aşağıdaki örnekteki gibi başka bir Chat uygulaması etkileşim etkinliği alır:
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 mesajlarından veya iletişim kutusundan toplanan verilere yanıt verme
Chat uygulaması, bir kart mesajından veya iletişim kutusundan verileri aldıktan sonra makbuzu onaylayarak veya bir hata döndürerek yanıt verir. Her iki işlem de ActionResponse
döndürülerek yapılır:
- Alındı başarılı olduğunu onaylamak için
"actionStatus": "OK"
içeren birActionResponse
parametresiyle yanıt verin. - Hata döndürmek için
"actionStatus": "ERROR MESSAGE"
içeren birActionResponse
parametresiyle yanıt verin.
Örnek
Aşağıdaki örnekte name
değerinin olup olmadığı kontrol edilir. Görünmüyorsa uygulama
bir hata döndürür. 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ı
/**
* 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 kart hata döndürdüğünde Chat arayüzünde "Bir sorun oluştu" veya "İsteğiniz işleme alınamıyor" mesajı gösterilir. Bazen Chat kullanıcı arayüzünde hata mesajı gösterilmez ancak Chat uygulaması veya kartı beklenmedik bir sonuç üretir. Örneğin, bir kart mesajı görünmeyebilir.
Chat kullanıcı arayüzünde bir hata mesajı gösterilmese de, Chat uygulamaları için hata günlük kaydı etkinken hataları düzeltmenize yardımcı olmak üzere açıklayıcı hata mesajları ve günlük verileri kullanılabilir. Hataları görüntüleme, hata ayıklama ve düzeltme konusunda yardım almak için Google Chat hatalarını giderme ve düzeltme başlıklı makaleyi inceleyin.