Z tego artykułu dowiesz się, jak skonfigurować aplikację Google Chat i odpowiadać na polecenia.
Polecenia pomagają użytkownikom odkrywać i korzystać z kluczowych funkcji aplikacji do obsługi czatu. Tylko aplikacje do obsługi czatu mogą wyświetlać treść polecenia. Jeśli na przykład użytkownik wyśle wiadomość z poleceniem zaczynającym się od ukośnika, będzie ona widoczna tylko dla niego i aplikacji Chat.
Aby zdecydować, czy chcesz tworzyć polecenia, i dowiedzieć się, jak projektować interakcje z użytkownikami, zapoznaj się z artykułem Określanie wszystkich ścieżek użytkownika.
Typy poleceń aplikacji do obsługi Google Chat
Polecenia aplikacji Google Chat możesz tworzyć jako polecenia po ukośniku, polecenia szybkie lub działania dotyczące wiadomości. Aby użyć każdego typu polecenia, użytkownicy mogą wykonać te czynności:-
Polecenia po ukośniku: użytkownicy mogą wybrać polecenie po ukośniku z menu lub wpisać ukośnik (
/), a następnie zdefiniowany tekst, np./about. Aplikacje do obsługi czatu zwykle wymagają tekstu argumentu polecenia po ukośniku.Utwórz polecenie po ukośniku, jeśli aplikacja do obsługi czatu wymaga dodatkowych danych wejściowych od użytkownika. Możesz na przykład utworzyć polecenie po ukośniku o nazwie
/search, które będzie uruchamiane po wpisaniu przez użytkownika frazy do wyszukania, np./search receipts. -
Szybkie polecenia: użytkownicy używają poleceń, otwierając menu w obszarze odpowiedzi wiadomości na czacie. Aby użyć polecenia, klikają Dodaj
i wybierają polecenie z menu.
Utwórz szybkie polecenie, jeśli aplikacja do czatu może od razu odpowiedzieć użytkownikowi bez czekania na dodatkowe dane wejściowe. Możesz na przykład utworzyć szybkie polecenie o nazwie Losowy obraz, które od razu odpowie obrazem.
-
Działania związane z wiadomościami: użytkownicy mogą korzystać z działań związanych z wiadomościami, najeżdżając kursorem na wiadomość i klikając menu z 3 kropkami. Aby użyć polecenia, otwórz menu z 3 kropkami i wybierz polecenie z menu.
Utwórz sugerowane działanie, jeśli aplikacja do obsługi czatu może wykonywać działania na podstawie kontekstu wiadomości.
Na poniższych obrazach pokazujemy, jak użytkownicy odkrywają menu poleceń po ukośniku i szybkich oraz działań związanych z wiadomościami:
Wymagania wstępne
HTTP
Aplikacja Google Chat, która odbiera i odpowiada na interakcje użytkowników. Aby go utworzyć, wykonaj czynności opisane w krótkim wprowadzeniu do HTTP.
Google Apps Script
Aplikacja Google Chat, która odbiera i odpowiada na interakcje użytkowników. Aby utworzyć taki skrypt, wykonaj czynności opisane w krótkim wprowadzeniu do Apps Script.
Konfigurowanie polecenia
W tej sekcji dowiesz się, jak wykonać te czynności, aby skonfigurować polecenie:
- Utwórz nazwę i opis polecenia.
- Skonfiguruj polecenie w konsoli Google Cloud.
- Opcjonalnie: przypisz polecenia do promptów początkowych.
Nazwij i opisz polecenie
Nazwa polecenia to tekst, który użytkownicy wpisują lub wybierają, aby wywołać aplikację Chat. Pod nazwą wyświetla się też krótki opis, który podpowiada użytkownikom, jak używać polecenia:
Wybierając nazwę i opis polecenia, weź pod uwagę te rekomendacje:
Aby nazwać polecenie:
- Używaj krótkich, opisowych i zachęcających do działania słów lub zwrotów, aby polecenia były jasne dla użytkownika. Na przykład zamiast nazwy
Create a reminderużyjRemind me. - Użyj unikalnej lub powszechnie znanej nazwy polecenia. Jeśli polecenie opisuje typową interakcję lub funkcję, możesz użyć powszechnie znanej nazwy, której użytkownicy oczekują, np.
SettingslubFeedback. W przeciwnym razie staraj się używać unikalnych nazw poleceń, ponieważ jeśli nazwa polecenia jest taka sama jak w przypadku innych aplikacji do obsługi czatu, użytkownik musi filtrować podobne polecenia, aby znaleźć i użyć Twojego.
Aby opisać polecenie:
- Opis powinien być krótki i jasny, aby użytkownicy wiedzieli, czego mogą się spodziewać po użyciu polecenia.
- Poinformuj użytkowników, czy polecenie ma jakieś wymagania dotyczące formatowania. Jeśli na przykład utworzysz polecenie po ukośniku, które wymaga tekstu argumentu, ustaw opis na coś w rodzaju
Remind me to do [something] at [time]. - Poinformuj użytkowników, czy aplikacja na czacie odpowiada wszystkim osobom w pokoju, czy prywatnie użytkownikowi, który wywołał polecenie. Na przykład w przypadku szybkiego polecenia
Aboutmożesz podać opisLearn about this app (Only visible to you).
Konfigurowanie polecenia w konsoli Google Cloud
Aby utworzyć polecenie po ukośniku, szybkie polecenie lub sugerowane działanie, musisz podać informacje o poleceniu lub działaniu w konfiguracji aplikacji do Google Chat dla interfejsu Google Chat API.
Aby skonfigurować polecenie w interfejsie Google Chat API, wykonaj te czynności:
W konsoli Google Cloud kliknij Menu > Interfejsy API i usługi > Włączone interfejsy API i usługi > Google Chat API.
Kliknij Konfiguracja.
W sekcji Ustawienia połączenia otwórz Aktywatory i podaj szczegóły punktu końcowego. W następnej sekcji musisz użyć tego aktywatora, aby odpowiedzieć na polecenie.
- Adres URL punktu końcowego HTTP: możesz tutaj określić jeden wspólny adres URL punktu końcowego HTTP. Możesz też użyć różnych punktów końcowych HTTP dla różnych wyzwalaczy, określając punkt końcowy bezpośrednio w polu Polecenie aplikacji.
- Apps Script: wpisz identyfikator wdrożenia Apps Script. Domyślnie wywoływana jest funkcja
onAppCommand. Aby użyć innej funkcji Apps Script, w polu Polecenie aplikacji wpisz nazwę funkcji niestandardowej.
W sekcji Polecenia kliknij Dodaj polecenie.
Podaj te informacje o poleceniu:
- Identyfikator polecenia: liczba z zakresu od 1 do 1000, której aplikacja do obsługi czatu używa do rozpoznawania polecenia i zwracania odpowiedzi.
- Opis: tekst opisujący sposób używania i formatowania polecenia. Opis może zawierać maksymalnie 50 znaków.
- Typ polecenia: wybierz Szybkie polecenie, Polecenie po ukośniku lub Działanie związane z wiadomością.
- Podaj nazwę polecenia:
- Nazwa szybkiego polecenia: wyświetlana nazwa, którą użytkownicy wybierają z menu, aby wywołać polecenie. Może zawierać do 50 znaków, w tym znaki specjalne. Na przykład:
Remind me. - Nazwa polecenia po ukośniku: tekst, który użytkownicy wpisują, aby wywołać polecenie w wiadomości. Musi zaczynać się od ukośnika, zawierać tylko tekst i może mieć maksymalnie 50 znaków. Na przykład:
/remindMe. - Nazwa sugerowanego działania: nazwa wyświetlana, którą użytkownicy wybierają z menu, aby wywołać sugerowane działanie. Może zawierać do 50 znaków, w tym znaki specjalne. Na przykład:
Remind me.
- Nazwa szybkiego polecenia: wyświetlana nazwa, którą użytkownicy wybierają z menu, aby wywołać polecenie. Może zawierać do 50 znaków, w tym znaki specjalne. Na przykład:
Opcjonalnie: Komunikat powiadomienia o wczytywaniu: komunikat powiadomienia w formie wyskakującego okienka, który ma być wyświetlany użytkownikowi podczas wykonywania sugerowanego działania. Dostępne tylko w przypadku działań związanych z wiadomościami, które nie otwierają okien.
Opcjonalnie: jeśli chcesz, aby aplikacja Google Chat odpowiadała na polecenie za pomocą okna, zaznacz pole wyboru Otwórz okno.
Kliknij Zapisz.
Polecenie jest teraz skonfigurowane dla aplikacji Google Chat.
Mapowanie poleceń na prompty początkowe
Możesz wyróżnić polecenia jako prompty początkowe, aby użytkownicy widzieli je jako interaktywne elementy po rozpoczęciu pustej wiadomości na czacie z aplikacją w Google Chat.
Aby przypisać polecenie do prompta początkowego:
- Upewnij się, że polecenie nie wymaga dodatkowych argumentów niestandardowych (jako promptów początkowych obsługiwane są tylko polecenia z opcjami Brak argumentów i Podstawowe argumenty).
- W konsoli Google Cloud otwórz stronę Konfiguracja interfejsu Chat API.
- W sekcji Funkcje interaktywne > Sugestie na początek kliknij Dodaj sugestię.
- Ustaw pozycję (1–3) w kolejności wyświetlania.
- W sekcji Wybór typu kliknij Wiersz poleceń i wybierz polecenie z menu.
- Kliknij kolejno Gotowe i Zapisz.
Odpowiadanie na polecenie
Gdy użytkownicy używają polecenia, aplikacja do obsługi czatu otrzymuje obiekt zdarzenia.
Ładunek zdarzenia (event.chat.appCommandPayload) zawiera obiekt appCommandPayload ze szczegółami wywołanego polecenia (w tym identyfikatorem i typem polecenia), dzięki czemu możesz zwrócić odpowiednią odpowiedź.
Obiekt zdarzenia jest wysyłany do punktu końcowego HTTP lub funkcji Apps Script, które zostały określone podczas konfigurowania wyzwalacza polecenia aplikacji.
/help, aby wyjaśnić, jak uzyskać pomoc.Odpowiadanie na polecenie po ukośniku lub szybkie polecenie
Poniższy kod przedstawia przykład aplikacji w Google Chat, która odpowiada na polecenie po ukośniku /about wiadomością tekstową. Aby odpowiadać na polecenia po ukośniku lub szybkie polecenia, aplikacja do Google Chat obsługuje obiekty zdarzeń (event.chat.appCommandPayload) z wyzwalacza Polecenie aplikacji.
Gdy ładunek obiektu zdarzenia zawiera pasujący identyfikator polecenia, aplikacja Google Chat zwraca działanie DataActions z obiektem createMessageAction (hostAppDataAction.chatDataAction.createMessageAction):
Node.js
Python
Java
Google Apps Script
Aby użyć tego przykładowego kodu, zastąp symbol ABOUT_COMMAND_ID identyfikatorem polecenia, który został podany podczas konfigurowania polecenia w interfejsie Chat API.
Odpowiadanie na sugerowane działanie
Poniższy kod pokazuje przykład aplikacji do Google Chat, która odpowiada na sugerowane działanie Przypomnij mi wiadomością tekstową. Aby odpowiadać na działania związane z wiadomościami, aplikacja Google Chat obsługuje obiekty zdarzeń z reguły Polecenie aplikacji. Gdy ładunek obiektu zdarzenia zawiera identyfikator polecenia działania wiadomości, aplikacja do obsługi czatu zwraca działanie DataActions z obiektem createMessageAction:
Node.js
/**
* Responds to an APP_COMMAND interaction event from Google Chat.
*
* @param {Object} event The interaction event from Google Chat.
* @param {Object} res The HTTP response object.
* @return {Object} The JSON response message with a confirmation.
*/
function onAppCommand(event, res) {
// Collect the command ID and type from the event metadata.
const {appCommandId, appCommandType} =
event.chat.appCommandPayload.appCommandMetadata;
if (appCommandType === 'MESSAGE_ACTION' &&
appCommandId === REMIND_ME_COMMAND_ID) {
// Message actions can access the context of the message they were
// invoked on, such as the text or sender of that message.
const messageText = event.chat.appCommandPayload.message.text;
// Return a response that includes details from the original message.
return res.json({
"hostAppDataAction": {
"chatDataAction": {
"createMessageAction": {
"message": {
"text": `Setting a reminder for message: "${messageText}"`
}
}
}
}
});
}
}
Python
def on_app_command(event):
"""Responds to an APP_COMMAND interaction event from Google Chat.
Args:
event (dict): The interaction event from Google Chat.
Returns:
dict: The JSON response message with a confirmation.
"""
# Collect the command ID and type from the event metadata.
payload = event.get('chat', {}).get('appCommandPayload', {})
metadata = payload.get('appCommandMetadata', {})
if metadata.get('appCommandType') == 'MESSAGE_ACTION' and \
metadata.get('appCommandId') == REMIND_ME_COMMAND_ID:
# Message actions can access the context of the message they were
# invoked on, such as the text or sender of that message.
message_text = payload.get('message', {}).get('text')
# Return a response that includes details from the original message.
return {
"hostAppDataAction": {
"chatDataAction": {
"createMessageAction": {
"message": {
"text": f'Setting a reminder for message: "{message_text}"'
}
}
}
}
}
Java
/**
* Responds to an APP_COMMAND interaction event from Google Chat.
*
* @param event The interaction event from Google Chat.
* @param response The HTTP response object.
*/
void onAppCommand(JsonObject event, HttpResponse response) throws Exception {
// Collect the command ID and type from the event metadata.
JsonObject payload = event.getAsJsonObject("chat").getAsJsonObject("appCommandPayload");
JsonObject metadata = payload.getAsJsonObject("appCommandMetadata");
String appCommandType = metadata.get("appCommandType").getAsString();
if (appCommandType.equals("MESSAGE_ACTION")) {
int commandId = metadata.get("appCommandId").getAsInt();
if (commandId == REMIND_ME_COMMAND_ID) {
// Message actions can access the context of the message they were
// invoked on, such as the text or sender of that message.
String messageText = payload.getAsJsonObject("message").get("text").getAsString();
// Return a response that includes details from the original message.
JsonObject responseMessage = new JsonObject();
responseMessage.addProperty("text", "Setting a reminder for message: " + messageText);
JsonObject createMessageAction = new JsonObject();
createMessageAction.add("message", responseMessage);
JsonObject chatDataAction = new JsonObject();
chatDataAction.add("createMessageAction", createMessageAction);
JsonObject hostAppDataAction = new JsonObject();
hostAppDataAction.add("chatDataAction", chatDataAction);
JsonObject finalResponse = new JsonObject();
finalResponse.add("hostAppDataAction", hostAppDataAction);
response.getWriter().write(finalResponse.toString());
}
}
}
Google Apps Script
/**
* Responds to an APP_COMMAND interaction event in Google Chat.
*
* @param {Object} event The interaction event from Google Chat.
* @return {Object} The JSON response message with a confirmation.
*/
function onAppCommand(event) {
// Collect the command ID and type from the event metadata.
const {appCommandId, appCommandType} =
event.chat.appCommandPayload.appCommandMetadata;
if (appCommandType === 'MESSAGE_ACTION' &&
appCommandId === REMIND_ME_COMMAND_ID) {
// Message actions can access the context of the message they were
// invoked on, such as the text or sender of that message.
const messageText = event.chat.appCommandPayload.message.text;
// Return a response that includes details from the original message.
return CardService.newChatResponseBuilder()
.setText("Setting a reminder for message: " + messageText)
.build();
}
}
Aby użyć tego przykładowego kodu, zastąp symbol REMIND_ME_COMMAND_ID identyfikatorem polecenia, który został określony podczas konfigurowania polecenia w interfejsie Chat API.
Testowanie polecenia
Aby przetestować polecenie i kod, zapoznaj się z artykułem Testowanie funkcji interaktywnych aplikacji Google Chat.
Aby dowiedzieć się, jak przetestować i używać polecenia w interfejsie Chat, zapoznaj się z artykułem Korzystanie z aplikacji w Google Chat w dokumentacji pomocy Google Chat.
Powiązane artykuły
- Zobacz przykłady aplikacji do Google Chat, które używają poleceń.
- Wyślij wiadomość
- Otwieranie interaktywnych okien
Aplikacje do obsługi czatu, które nie są dodatkami: odpowiadanie na polecenia
Poniższa dokumentacja dotyczy aplikacji do Google Chat, które nie są dodatkami do Google Workspace. Aby przeprowadzić migrację aplikacji do czatu, która nie jest dodatkiem, przeczytaj artykuł Przekształcanie aplikacji do Google Chat w dodatek do Google Workspace.
Gdy użytkownicy używają polecenia, aplikacja do obsługi czatu, która nie jest dodatkiem, otrzymuje zdarzenie interakcji i może odpowiedzieć, zwracając bezpośrednio obiekt Message.
Ładunek zdarzenia zawiera metadane ze szczegółami wywołanego polecenia (w tym identyfikator i typ polecenia), dzięki czemu możesz zwrócić odpowiednią odpowiedź.
Aby odpowiadać na poszczególne typy poleceń w aplikacji Google Chat, która nie jest dodatkiem, musisz obsługiwać różne typy zdarzeń i obiekty metadanych w ładunku zdarzenia:
| Typ polecenia | Typ zdarzenia | Metadane polecenia |
|---|---|---|
| Polecenie po ukośniku | MESSAGE |
message.slashCommand lub message.annotation.slashCommand |
| Szybkie polecenie | APP_COMMAND |
appCommandMetadata
|
| Działanie związane z wiadomością | APP_COMMAND |
appCommandMetadata
|
Odpowiadanie na polecenie po ukośniku
Poniższy kod pokazuje przykład aplikacji Google Chat, która nie jest dodatkiem i odpowiada na polecenie po ukośniku /about. Aplikacja Google Chat obsługuje MESSAGE zdarzenia interakcji, wykrywa, czy zdarzenie interakcji zawiera pasujący identyfikator polecenia, i zwraca prywatny obiekt Message:
Node.js
Google Apps Script
Python
Java
Zastąp ABOUT_COMMAND_ID identyfikatorem polecenia, który został określony podczas konfigurowania polecenia w konsoli Google Cloud.
Odpowiadanie na szybkie polecenie
Poniższy kod przedstawia przykład aplikacji do obsługi czatu, która nie jest dodatkiem i odpowiada na szybką komendę Pomoc. Aplikacja Google Chat obsługuje APP_COMMAND zdarzenia interakcji, wykrywa, czy zdarzenie interakcji zawiera pasujący identyfikator polecenia, i zwraca prywatny obiekt Message:
Node.js
Google Apps Script
Python
Java
Zastąp HELP_COMMAND_ID identyfikatorem polecenia, który został określony podczas konfigurowania polecenia w konsoli Google Cloud.
Odpowiadanie na sugerowane działanie
Poniższy kod przedstawia przykład aplikacji do Google Chat, która nie jest dodatkiem i odpowiada na działanie w wiadomości Przypomnij mi. Aplikacja
do obsługi czatu obsługuje APP_COMMANDzdarzenia interakcji,
wykrywa, czy zdarzenie interakcji zawiera pasujący identyfikator polecenia, i
zwraca prywatny obiekt Message:
Node.js
/**
* Responds to an APP_COMMAND interaction event from Google Chat.
*
* @param {Object} event The interaction event from Google Chat.
* @param {Object} res The HTTP response object.
* @return {Object} The JSON response message with a confirmation.
*/
function handleAppCommand(event, res) {
// Collect the command ID and type from the event metadata.
const {appCommandId, appCommandType} = event.appCommandMetadata;
// Use appCommandType to detect message actions.
if (appCommandType === 'MESSAGE_ACTION' &&
appCommandId === REMIND_ME_COMMAND_ID) {
// Message actions can access the context of the message they were
// invoked on, such as the text or sender of that message.
const messageText = event.message.text;
// Return a response that includes details from the original message.
return res.send({
text: `Setting a reminder for this message: "${messageText}"`
});
}
}
Google Apps Script
/**
* Responds to an APP_COMMAND interaction event in Google Chat.
*
* @param {Object} event The interaction event from Google Chat.
* @return {Object} The JSON response message with a confirmation.
*/
function onAppCommand(event) {
// Collect the command ID and type from the event metadata.
const {appCommandId, appCommandType} = event.appCommandMetadata;
if (appCommandType === 'MESSAGE_ACTION' &&
appCommandId === REMIND_ME_COMMAND_ID) {
// Message actions can access the context of the message they were
// invoked on, such as the text or sender of that message.
const messageText = event.message.text;
// Return a response that includes details from the original message.
return { "text": "Setting a reminder for message: " + messageText };
}
}
Python
def handle_app_command(event):
"""Responds to an APP_COMMAND interaction event from Google Chat.
Args:
event (dict): The interaction event from Google Chat.
Returns:
dict: The JSON response message with a confirmation.
"""
# Collect the command ID and type from the event metadata.
metadata = event.get('appCommandMetadata', {})
if metadata.get('appCommandType') == 'MESSAGE_ACTION' and \
metadata.get('appCommandId') == REMIND_ME_COMMAND_ID:
# Message actions can access the context of the message they were
# invoked on, such as the text or sender of that message.
message_text = event.get('message', {}).get('text')
# Return a response that includes details from the original message.
return {
"text": f'Setting a reminder for message: "{message_text}"'
}
Java
/**
* Responds to an APP_COMMAND interaction event from Google Chat.
*
* @param event The interaction event from Google Chat.
* @param response The HTTP response object.
*/
void handleAppCommand(JsonObject event, HttpResponse response) throws Exception {
// Collect the command ID and type from the event metadata.
JsonObject metadata = event.getAsJsonObject("appCommandMetadata");
String appCommandType = metadata.get("appCommandType").getAsString();
if (appCommandType.equals("MESSAGE_ACTION")) {
int commandId = metadata.get("appCommandId").getAsInt();
if (commandId == REMIND_ME_COMMAND_ID) {
// Message actions can access the context of the message they were
// invoked on, such as the text or sender of that message.
String messageText = event.getAsJsonObject("message").get("text").getAsString();
// Return a response that includes details from the original message.
JsonObject responseMessage = new JsonObject();
responseMessage.addProperty("text", "Setting a reminder for message: " + messageText);
response.getWriter().write(responseMessage.toString());
}
}
}
Zastąp REMIND_ME_COMMAND_ID identyfikatorem polecenia, który został określony podczas konfigurowania polecenia w konsoli Google Cloud.