이 가이드에서는 Google Chat 앱에서 정보를 수집하고 처리하는 방법을 설명합니다. 사용자로부터 유용한 정보를 얻을 수 있습니다.
채팅 앱은 Google 계정에서 작업을 수행하기 위해 사용자에게 다음과 같은 방법을 사용합니다.
- 설정을 구성합니다. 예를 들어 사용자가 알림 설정을 맞춤설정할 수 있습니다. 또는 하나 이상의 채팅 앱을 구성하고 추가 합니다.
- 다른 Google Workspace 애플리케이션에서 정보를 만들거나 업데이트합니다. 대상 예를 들어 사용자가 Google Calendar 일정을 만들도록 허용합니다.
- 사용자가 다른 앱 또는 웹 서비스의 리소스에 액세스하고 이를 업데이트하도록 허용합니다. 대상 예를 들어 채팅 앱을 사용하면 사용자가 지원 티켓 상태를 Chat 스페이스에서 바로 확인할 수 있습니다.
기본 요건
양방향 기능이 사용 설정된 Google Chat 앱 대화식 채팅 앱에서 대화식 채팅 앱을 사용하려면 다음 빠른 시작 중 하나를 완료하세요. 앱 아키텍처에 따라 다음을 수행합니다.- Google Cloud Functions를 사용한 HTTP 서비스
- Google Apps Script
- Google Cloud Dialogflow CX
- Google Cloud Pub/Sub
카드를 사용하여 양식 만들기
정보를 수집하기 위해 채팅 앱은 양식과 입력을 설계합니다. 카드로 만들 수 있습니다. 사용자에게 카드를 표시하기 위해 Chat 앱은 다음 Chat 인터페이스를 사용할 수 있습니다.
채팅 앱은 다음 위젯을 사용하여 카드를 빌드할 수 있습니다.
사용자에게 정보를 요청하는 입력 위젯을 작성합니다. 원하는 경우 유효성 검사를 입력 위젯을 형성하고 사용자가 있습니다. 채팅 앱은 다음과 같은 양식 입력 위젯을 사용할 수 있습니다.
사용자가 카드에 입력한 값을 제출할 수 있는 버튼 위젯입니다. 사용자가 버튼을 클릭하면 채팅 앱에서 수신하는 정보를 처리합니다.
다음은 세 가지 유형의 날짜 및 시간 입력으로 구성된 카드를 보여줍니다.
정보를 수집하는 데 사용할 수 있는 대화형 위젯의 더 많은 예는 대화형 카드 또는 대화상자 디자인을 참고하세요.
대화형 위젯에서 데이터 수신
<ph type="x-smartling-placeholder">
사용자가 버튼을 클릭할 때마다 채팅 앱에서
CARD_CLICKED
상호작용 이벤트
상호작용 정보를 포함합니다. CARD_CLICKED
상호작용 이벤트의 페이로드에는 사용자가 입력한 값이 포함된 common.formInputs
객체가 포함됩니다.
객체에서 값을 가져올 수 있으며
common.formInputs.WIDGET_NAME
, 각 항목의 의미는 다음과 같습니다.
WIDGET_NAME는 위젯에 지정한 name
필드입니다.
값은 위젯의 특정 데이터 유형(Inputs
객체로 표시됨)으로 반환됩니다.
다음 예에서는 카드가 텍스트 입력란, 날짜 시간 선택 도구, 선택 입력 위젯을 사용하여 연락처 정보를 수집합니다.
{
"textInput": {
"name": "contactName",
"label": "First and last name",
"type": "SINGLE_LINE"
}
}, {
"dateTimePicker": {
"name": "contactBirthdate",
"label": "Birthdate",
"type": "DATE_ONLY"
}
}, {
"selectionInput": {
"name": "contactType",
"label": "Contact type",
"type": "RADIO_BUTTON",
"items": [
{
"text": "Work",
"value": "Work",
"selected": false
},
{
"text": "Personal",
"value": "Personal",
"selected": false
}
]
}
}
상호작용 이벤트 처리
사용자가 카드나 대화상자에 데이터를 입력하면
채팅 앱이 채팅 앱을 수신함
사용자가 입력한 값이 포함된 CARD_CLICKED
상호작용 이벤트입니다.
다음은 CARD_CLICKED
상호작용 이벤트의 일부를 보여줍니다.
사용자가 각 위젯에 입력한 값
HTTP
{
"type": "CARD_CLICKED",
"common": { "formInputs": {
"contactName": { "stringInputs": {
"value": ["Kai 0"]
}},
"contactBirthdate": { "dateInput": {
"msSinceEpoch": 1000425600000
}},
"contactType": { "stringInputs": {
"value": ["Personal"]
}}
}}
}
Apps Script
{
"type": "CARD_CLICKED",
"common": { "formInputs": {
"contactName": { "": { "stringInputs": {
"value": ["Kai 0"]
}}},
"contactBirthdate": { "": { "dateInput": {
"msSinceEpoch": 1000425600000
}}},
"contactType": { "": { "stringInputs": {
"value": ["Personal"]
}}}
}}
}
채팅 앱에서는 데이터를 수신하기 위해 상호작용 이벤트를 사용하여 사용자가 위젯에 입력하는 값을 가져올 수 있습니다. 다음 표는 지정된 양식 입력 위젯의 값을 가져오는 방법을 보여줍니다. 각 위젯의 경우 위젯이 허용하는 데이터 유형, 값이 상호작용 이벤트에 저장되는 위치, 예시 값이 표에 표시됩니다.
양식 입력 위젯 | 입력 데이터 유형 | 상호작용 이벤트의 입력 값 | 예시 값 |
---|---|---|---|
textInput |
stringInputs |
events.common.formInputs.contactName.stringInputs.value[0] |
Kai O |
selectionInput |
stringInputs |
첫 번째 또는 유일한 값을 가져오려면 events.common.formInputs.contactType.stringInputs.value[0] 를 사용합니다. |
Personal |
날짜만 허용하는 dateTimePicker 입니다. |
dateInput |
events.common.formInputs.contactBirthdate.dateInput.msSinceEpoch . |
1000425600000 |
다른 카드로 데이터 전송하기
사용자가 카드의 정보를 제출한 후 추가 카드를 사용하여 다음 작업을 수행할 수 있습니다.
- 구분된 섹션을 만들어 사용자가 긴 양식을 작성할 수 있도록 지원합니다.
- 사용자가 초기 카드의 정보를 미리 보고 확인할 수 있도록 하여 답변을 검토할 수 있습니다.
- 양식의 나머지 부분을 동적으로 채웁니다. 예를 들어 사용자가 예약을 하도록 유도하려는 경우 채팅 앱은 예약 이유를 요청하는 첫 번째 카드를 표시합니다. 이렇게 하면 각 시간대의 예약 가능 시간을 표시하는 다른 카드를 채울 수 있습니다 약속 유형
초기 카드에서 데이터 입력을 전송하려면 button
를 빌드하면 됩니다.
actionParameters
위젯
다음과 같이 위젯의 name
및 사용자가 입력한 값이 포함된
예를 들면 다음과 같습니다.
{
"buttonList": {
"buttons": [{
"text": "Submit",
"onClick": {
"action": {
"function": "openNextCard",
"parameters": [{
"key": "WIDGET_NAME",
"value": "USER_INPUT_VALUE"
}]
}
}
}]
}
}
여기서 WIDGET_NAME는 위젯의 name
이며
USER_INPUT_VALUE는 사용자가 입력하는 내용입니다. 예를 들어 텍스트의 경우
입력으로 정의되고 위젯 이름은 contactName
이며
예시 값은 Kai O
입니다.
사용자가 버튼을 클릭하면 Chat 앱은 CARD_CLICKED
상호작용 이벤트를 수신합니다. 값을 검색하려면 event.common.parameters
객체를 사용하면 됩니다.
다음은 사용자 입력 데이터가 포함된 매개변수를 다음 카드를 여는 함수에 전달하는 방법의 예를 보여줍니다.
Node.js
// Respond to button clicks on cards or dialogs
if (event.type === "CARD_CLICKED") {
// Open another card.
if (event.common.invokedFunction === "openNextCard") {
const parameters = event.common.parameters;
openNextCard(event);
}
}
Python
# Respond to button clicks on cards or dialogs
if request.get('type') == 'CARD_CLICKED':
if invoked_function := request.get('common', dict()).get('invokedFunction'):
if invoked_function == 'open_next_card':
parameters = request.get('common', dict()).get('parameters'),
return open_next_card(parameters)
Apps Script
// Respond to button clicks on cards or dialogs
function onCardClick(event) {
if (event.common.invokedFunction === "openNextCard") {
const parameters = event.common.parameters;
return openNextCard(parameters);
}
}
양식 제출에 응답하기
카드 메시지 또는 대화상자에서 데이터를 수신한 후 Chat 앱은 수신 확인 또는 오류 반환으로 응답합니다.
다음 예에서는 채팅 앱이 확인 메시지가 표시됩니다. 있습니다.
Apps Script
function submitCardForm(contactName, contactBirthdate, contactType) {
return {
"text": "You entered the following contact information:\n\n" +
"*Name:* " + contactName + "\n" +
"*Birthdate:* " + contactBirthdate + "\n" +
"*Type:* " + contactType
}
}
대화상자를 처리하고 닫으려면
ActionResponse
이 객체를 통해 확인 메시지 전송, 업데이트 가능 여부 또는
원본 메시지 또는 카드를 삭제하거나 대화상자를 닫을 수 있습니다. 단계는 대화상자 닫기를 참고하세요.
문제 해결
Google Chat 앱 또는 카드가 오류를 반환하면 Chat 인터페이스에 '문제가 발생했습니다'라는 메시지가 표시됩니다. 또는 '요청을 처리할 수 없습니다.' 채팅 UI가 오류 메시지가 표시되지 않지만 채팅 앱 또는 카드에서 예기치 않은 결과가 발생합니다. 예를 들어 카드 메시지가 나타납니다.
Chat UI에 오류 메시지가 표시되지 않을 수 있지만 Chat 앱의 오류 로깅이 사용 설정된 경우 오류를 수정하는 데 도움이 되는 설명 오류 메시지와 로그 데이터를 사용할 수 있습니다. 보는 데 도움이 필요한 경우 오류를 수정하는 방법에 대한 자세한 내용은 Google Chat 오류 문제 해결하기
관련 주제
- 연락처 관리자 샘플 보기 이 앱은 사용자에게 대화를 완료하라는 메시지를 표시하는 채팅 앱입니다 문의 양식을 생성할 수 있습니다.
- 대화형 대화상자 열기