이 페이지에서는 Google Chat 앱으로 명령어를 설정하고 응답하는 방법을 설명합니다.
명령어는 사용자가 Chat 앱의 주요 기능을 찾고 사용하는 데 도움이 됩니다. Chat 앱만 명령어의 콘텐츠를 볼 수 있습니다. 예를 들어 사용자가 슬래시 명령어와 함께 메시지를 보내면 메시지는 사용자와 Chat 앱에만 표시됩니다.
명령어를 빌드해야 하는지 결정하고 사용자 상호작용을 설계하는 방법을 알아보려면 모든 사용자 여정 정의를 참고하세요.
Chat 앱 명령어 유형
Chat 앱 명령어를 슬래시 명령어 또는 빠른 명령어로 빌드할 수 있습니다. 각 유형의 명령어를 찾아서 사용하려면 다음 단계를 따르세요.-
슬래시 명령어: 사용자가 슬래시(
/
)와 사전 정의된 텍스트(예:/about
)를 입력하여 명령어를 메시지로 전송합니다. 채팅 앱에서 슬래시 명령어의 인수 텍스트가 필요할 수도 있습니다. 예를 들어 슬래시 명령어/search
에는 검색어에 사용되는 인수 텍스트가 필요할 수 있습니다. -
빠른 명령어: 사용자는 Chat 메시지의 답장 영역에서 메뉴를 열어 명령어를 사용합니다. 명령어를 사용하려면 추가
를 클릭하고 메뉴에서 명령어를 선택합니다.
-
그림 1. 사용자는 답장 영역에 슬래시 /
를 입력한 후 명령어 이름을 입력하여 슬래시 명령어를 찾고 사용합니다. -
그림 2. 사용자는 Chat 메시지의 답장 영역에서 메뉴를 찾아 빠른 명령어를 사용합니다.
기본 요건
- Google Chat에 액세스할 수 있는 비즈니스 또는 엔터프라이즈 Google Workspace 계정
- Google Cloud 프로젝트를 만듭니다.
- OAuth 동의 화면 구성
- 다음 Google Workspace API를 사용 설정합니다.
- Google Chat API
- Google Workspace Add-ons API
- 채팅 앱의 서비스 아키텍처를 호스팅하는 HTTP 엔드포인트입니다.
- Google Chat에 액세스할 수 있는 비즈니스 또는 엔터프라이즈 Google Workspace 계정
- Google Cloud 프로젝트를 만듭니다.
- OAuth 동의 화면 구성
- Google Chat API를 사용 설정합니다.
- 독립형 Apps Script 프로젝트를 만들고 고급 Chat 서비스를 사용 설정합니다.
addons.chat
객체와 필요한 범위 (oauthScopes
) 또는 HTTPS URL 접두사 (urlFetchWhitelist
)를 추가하여 매니페스트에서 Chat을 구성합니다.
명령어 설정
이 섹션에서는 다음 단계를 완료하여 명령어를 설정하는 방법을 설명합니다.
- 명령어의 이름과 설명을 만듭니다.
- Google Cloud 콘솔에서 명령어를 구성합니다.
명령어 이름 지정 및 설명
명령어 이름은 사용자가 Chat 앱을 호출하기 위해 입력하거나 선택하는 이름입니다. 이름 아래에는 명령어 사용 방법을 사용자에게 자세히 안내하는 짧은 설명도 표시됩니다.

명령어의 이름과 설명을 선택할 때는 다음 권장사항을 고려하세요.
명령어에 이름을 지정하려면 다음 단계를 따르세요.
- 짧고 설명적이고 실행 가능한 단어 또는 문구를 사용하여 명령어를 사용자에게 명확하게 전달합니다. 예를 들어
Create a reminder
이름 대신Remind me
을 사용합니다. - 명령어에 고유한 이름이나 일반적인 이름을 사용하는 것이 좋습니다. 명령어가 일반적인 상호작용이나 기능을 설명하는 경우 사용자가 인식하고 예상하는 일반적인 이름(예:
Settings
또는Feedback
)을 사용할 수 있습니다. 그렇지 않은 경우 고유한 명령어 이름을 사용하세요. 다른 Chat 앱에서 명령어 이름이 동일하면 사용자가 유사한 명령어를 필터링하여 내 명령어를 찾아야 하기 때문입니다.
명령어를 설명하려면 다음 단계를 따르세요.
- 사용자가 명령어를 사용할 때 어떤 결과를 얻을 수 있는지 알 수 있도록 설명을 짧고 명확하게 작성합니다.
- 명령어에 형식 지정 요구사항이 있는지 사용자에게 알립니다. 예를 들어 인수 텍스트가 필요한 슬래시 명령어를 만드는 경우 설명을
Remind me to do [something] at [time]
과 같이 설정합니다. - Chat 앱이 스페이스의 모든 사용자에게 답장하는지 아니면 명령어를 호출한 사용자에게 비공개로 답장하는지 사용자에게 알립니다. 예를 들어 빠른 명령어
About
는Learn about this app (Only visible to you)
로 설명할 수 있습니다.
Google Cloud 콘솔에서 명령어 구성
슬래시 또는 빠른 명령어를 만들려면 Google Chat API용 Chat 앱 구성에서 명령어에 관한 정보를 지정합니다.
Google Chat API에서 명령어를 구성하려면 다음 단계를 완료하세요. o Google Chat API에서 슬래시 명령어를 구성하려면 다음 단계를 완료하세요.
Google Cloud 콘솔에서 메뉴 > API 및 서비스 > 사용 설정된 API 및 서비스 > Google Chat API를 클릭합니다.
구성을 클릭합니다.
고급 설정에서 트리거로 이동하여 앱 명령어 필드에 HTTP 엔드포인트 또는 Apps Script 함수와 같은 트리거가 포함되어 있는지 확인합니다. 명령어에 응답하려면 다음 섹션에서 이 트리거를 사용해야 합니다.
명령어에서 명령어 추가를 클릭합니다.
명령어에 관한 다음 정보를 입력합니다.
- 명령어 ID: Chat 앱에서 명령어를 인식하고 응답을 반환하는 데 사용하는 1~1,000 사이의 숫자입니다.
- 명령어 유형: 빠른 명령어 또는 슬래시 명령어를 선택합니다.
- 슬래시 명령어를 구성하는 경우 슬래시 명령어 이름 필드에 값을 입력하여 사용자가 명령어를 호출할 때 입력할 내용을 지정합니다. 슬래시로 시작해야 하며 텍스트만 포함할 수 있고 최대 50자(영문 기준)여야 합니다. 예를 들면 다음과 같습니다.
/remindMe
- 이름: 명령어의 사용자 친화적인 이름입니다. 이름은 최대 50자(영문 기준)까지 지정할 수 있으며 특수문자를 포함할 수 있습니다.
- 설명: 명령어 사용 및 형식 지정 방법을 설명하는 텍스트입니다. 설명은 최대 50자(영문 기준)까지 입력할 수 있습니다.
선택사항: 채팅 앱이 대화상자로 명령어에 응답하도록 하려면 대화상자 열기 체크박스를 선택합니다.
저장을 클릭합니다.
이제 명령어가 Chat 앱에 맞게 구성되었습니다.
명령어에 응답
사용자가 명령어를 사용하면 Chat 앱은 이벤트 객체를 수신합니다.
이벤트 페이로드에는 적절한 응답을 반환할 수 있도록 호출된 명령어에 관한 세부정보 (명령어 ID 및 명령어 유형 포함)가 포함된 appCommandPayload
객체가 포함됩니다. 이벤트 객체는 앱 명령 트리거를 구성할 때 지정한 HTTP 엔드포인트 또는 Apps Script 함수로 전송됩니다.

/help
에 비공개로 응답하여 지원을 받는 방법을 설명합니다.다음 코드는 슬래시 명령어 /about
에 텍스트 메시지로 답장하는 Chat 앱의 예를 보여줍니다. 슬래시 명령어에 응답하기 위해 Chat 앱은 앱 명령어 트리거의 이벤트 객체를 처리합니다. 이벤트 객체의 페이로드에 슬래시 명령어 ID가 포함된 경우 Chat 앱은 createMessageAction
객체와 함께 작업 DataActions
를 반환합니다.
// The ID of the slash command "/about".
// It's not enabled by default, set to the actual ID to enable it. You must
// use the same ID as set in the Google Chat API configuration.
const ABOUT_COMMAND_ID = 0;
/**
* Google Cloud Function that responds to events sent from a
* Google Chat space.
*
* @param {Object} req Request sent from Google Chat space
* @param {Object} res Response to send back
*/
exports.avatarApp = function avatarApp(req, res) {
if (req.method === 'GET' || !req.body.chat) {
return res.send('Hello! This function is meant to be used ' +
'in a Google Chat Space.');
}
// Stores the Google Chat event as a variable.
const chatEvent = req.body.chat;
// Handles events that contain payloads about commands
if (chatEvent.appCommandPayload) {
// Stores the Google Chat app command metadata as a variable.
const appCommandMetadata = chatEvent.appCommandPayload.appCommandMetadata;
// Executes the slash command logic based on its ID.
// Slash command IDs are set in the Google Chat API configuration.
switch (appCommandMetadata.appCommandId) {
case ABOUT_COMMAND_ID :
return res.send({ hostAppDataAction: { chatDataAction: { createMessageAction: { message: {
text: 'The Avatar app replies to Google Chat messages.'
}}}}});
}
// Handles MESSAGE events
} else if (chatEvent.messagePayload) {
// Stores the Google Chat event as a variable.
const chatMessage = chatEvent.messagePayload.message;
// Replies with the sender's avatar in a card otherwise.
const displayName = chatMessage.sender.displayName;
const avatarUrl = chatMessage.sender.avatarUrl;
res.send({ hostAppDataAction: { chatDataAction: { createMessageAction: { message: {
text: 'Here\'s your avatar',
cardsV2: [{
cardId: 'avatarCard',
card: {
name: 'Avatar Card',
header: {
title: `Hello ${displayName}!`,
},
sections: [{
widgets: [{
textParagraph: { text: 'Your avatar picture: ' }
}, {
image: { imageUrl: avatarUrl }
}]
}]
}
}]
}}}}});
}
};
// The ID of the slash command "/about".
// It's not enabled by default, set to the actual ID to enable it. You must
// use the same ID as set in the Google Chat API configuration.
const ABOUT_COMMAND_ID = 0;
/**
* Responds to a MESSAGE event in Google Chat.
*
* @param {Object} event the event object from Google Chat
*/
function onMessage(event) {
// Stores the Google Chat event as a variable.
const chatMessage = event.chat.messagePayload.message;
// Replies with the sender's avatar in a card otherwise.
const displayName = chatMessage.sender.displayName;
const avatarUrl = chatMessage.sender.avatarUrl;
return { hostAppDataAction: { chatDataAction: { createMessageAction: { message: {
text: 'Here\'s your avatar',
cardsV2: [{
cardId: 'avatarCard',
card: {
name: 'Avatar Card',
header: {
title: `Hello ${displayName}!`,
},
sections: [{
widgets: [{
textParagraph: { text: 'Your avatar picture: ' }
}, {
image: { imageUrl: avatarUrl }
}]
}]
}
}]
}}}}};
}
/**
* Responds to an APP_COMMAND event in Google Chat.
*
* @param {Object} event the event object from Google Chat
*/
function onAppCommand(event) {
// Stores the Google Chat app command metadata as a variable.
const appCommandMetadata = event.chat.appCommandPayload.appCommandMetadata;
// Executes the slash command logic based on its ID.
// Slash command IDs are set in the Google Chat API configuration.
switch (appCommandMetadata.appCommandId) {
case ABOUT_COMMAND_ID :
return { hostAppDataAction: { chatDataAction: { createMessageAction: { message: {
text: 'The Avatar app replies to Google Chat messages.'
}}}}};
}
}
이 코드 샘플을 사용하려면 ABOUT_COMMAND_ID
를 Chat API에서 명령어를 구성할 때 지정한 명령어 ID로 바꿉니다.
명령어 테스트
명령어와 코드를 테스트하려면 Google Chat 앱의 양방향 기능 테스트를 참고하세요.
Chat UI에서 명령어를 테스트하고 사용하는 방법을 알아보려면 Google Chat 도움말 문서의 Google Chat에서 앱 사용하기를 참고하세요.
관련 주제
- 명령어를 사용하는 Chat 앱 샘플 보기
- 메시지 보내기
- 양방향 대화상자 열기