Hướng dẫn này mô tả cách nhận và đọc thông tin mà người dùng nhập vào thông báo thẻ và hộp thoại. Người dùng có thể nhập dữ liệu mà ứng dụng Chat nhận được, đọc và trả lời sang. Các tiện ích cho phép người dùng nhập thông tin bao gồm:
TextInput
để nhập văn bản dạng tự do cũng hỗ trợ đề xuất.SelectionInput
cho các mục và trình đơn trong danh sách, chẳng hạn như hộp đánh dấu, nút chọn và trình đơn thả xuống.DateTimePicker
cho các mục nhập ngày và giờ.
Sử dụng Trình tạo thẻ để thiết kế và xem trước thông báo trên thẻ JSON cho các ứng dụng trong Chat:
Mở Trình tạo thẻViệc nhận dữ liệu nhập vào từ người dùng cho phép các ứng dụng trong Chat làm những việc như như sau:
- Cập nhật các trường hợp dịch vụ khách hàng.
- Tạo đơn đặt hàng công việc.
- Xác thực bằng các dịch vụ web.
Điều kiện tiên quyết
Node.js
Một ứng dụng Google Chat đã bật các tính năng tương tác. Để tạo một ứng dụng Chat tương tác bằng dịch vụ HTTP, hãy hoàn thành phần bắt đầu nhanh này.
Apps Script
Một ứng dụng Google Chat đã bật các tính năng tương tác. Để tạo một ứng dụng Chat tương tác trong Apps Script, hãy hoàn thành phần bắt đầu nhanh này.
Python
Một ứng dụng Google Chat đã bật các tính năng tương tác. Để tạo một ứng dụng Chat tương tác bằng dịch vụ HTTP, hãy hoàn thành phần bắt đầu nhanh này.
Cách hoạt động của tính năng nhận dữ liệu
Ứng dụng Chat trình bày thông tin cho người dùng dưới dạng
hoặc thông báo thẻ. Trong ví dụ này, một hộp thoại yêu cầu người dùng nhập
về một người liên hệ bằng cách sử dụng
TextInput
và
SelectionInput
tiện ích:
Khi hoàn tất, ứng dụng Chat sẽ nhận được dữ liệu người dùng đã nhập vào hộp thoại ở định dạng JSON và sự kiện tương tác trong đó:
EventType
làCARD_CLICKED
.DialogEventType
làSUBMIT_DIALOG
(chỉ dành cho hộp thoại).
Để xem dữ liệu về nội dung người dùng đã nhập, hãy sử dụng
Event.common.formInputs
trong tải trọng sự kiện. Trường formInputs
là một bản đồ nơi các khoá là
các mã nhận dạng chuỗi được gán cho từng tiện ích và các giá trị đại diện cho hoạt động đầu vào của người dùng
từng tiện ích. Các đối tượng khác nhau biểu thị các kiểu dữ liệu đầu vào khác nhau. Cho
ví dụ:
Event.common.formInputs.stringInputs
đại diện cho đầu vào chuỗi.
Ứng dụng của bạn có thể truy cập vào giá trị do người dùng nhập đầu tiên tại
event.common.formInputs.NAME.stringInputs.value[0]
,
trong đó NAME
là trường name
của
Tiện ích TextInput
.
Nhận dữ liệu từ các thẻ
Khi người dùng nhập dữ liệu vào thông báo trên thẻ, Ứng dụng Chat nhận được một ứng dụng Chat sự kiện tương tác, chẳng hạn như ví dụ sau:
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
}
}
Nhận dữ liệu từ hộp thoại
Khi người dùng gửi dữ liệu trong hộp thoại, ứng dụng Chat nhận được một sự kiện tương tác khác với ứng dụng Chat, chẳng hạn như ví dụ sau:
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
}
}
Phản hồi dữ liệu đã thu thập từ tin nhắn thẻ hoặc hộp thoại
Sau khi nhận được dữ liệu từ thông báo thẻ hoặc hộp thoại,
Ứng dụng Chat sẽ phản hồi bằng cách xác nhận đã nhận được thông tin hoặc bằng cách
trả về một lỗi, cả hai đều được thực hiện bằng cách trả về một
ActionResponse
:
- Để xác nhận đã nhận thành công, hãy trả lời bằng
ActionResponse
có"actionStatus": "OK"
. - Để trả về lỗi, hãy phản hồi bằng
ActionResponse
có"actionStatus": "ERROR MESSAGE"
.
Ví dụ:
Ví dụ sau đây sẽ kiểm tra sự hiện diện của giá trị name
. Nếu không có,
ứng dụng trả về một lỗi. Nếu có, ứng dụng xác nhận đã nhận được dữ liệu biểu mẫu
và đóng hộp thoại này.
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
Ví dụ này gửi thông báo thẻ bằng cách quay lại tệp JSON của thẻ. Bạn cũng có thể sử dụng Dịch vụ thẻ 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!'
}
}
}
Khắc phục sự cố
Khi một ứng dụng Google Chat hoặc card trả về một lỗi, thì phương thức Giao diện Chat hiển thị một thông báo với nội dung "Đã xảy ra lỗi". hoặc "Không thể xử lý yêu cầu của bạn". Đôi khi, giao diện người dùng của Chat không hiện thông báo lỗi nào ngoài ứng dụng Chat hoặc thẻ tạo ra kết quả không mong muốn; ví dụ: thông báo thẻ có thể không xuất hiện.
Mặc dù thông báo lỗi có thể không xuất hiện trong giao diện người dùng Chat, thông báo lỗi mô tả và dữ liệu nhật ký luôn có sẵn để giúp bạn sửa lỗi khi tính năng ghi nhật ký lỗi cho các ứng dụng trong Chat được bật. Để được trợ giúp xem, gỡ lỗi và sửa lỗi, hãy xem Khắc phục lỗi và khắc phục lỗi của Google Chat.
Chủ đề có liên quan
- Xem các ứng dụng mẫu trong Chat có xử lý thông tin của người dùng.
- Mở hộp thoại tương tác