На этой странице описано, как приложение Google Chat может получать информацию о действиях пользователей в Google Chat и реагировать на них.
Чтобы создать интерактивный интерфейс для приложения Chat, используйте следующие компоненты:
- Триггеры. Способы, которыми пользователи Google Chat могут вызвать приложение Chat, например добавить его в чат-группу или отправить ему сообщение.
- Объекты событий – данные, которые приложения Chat получают от триггеров или взаимодействий с интерфейсом.
- Действия. Способы, которыми приложения Chat могут реагировать на взаимодействия, например отправлять сообщения или возвращать пользовательский интерфейс на основе карточек.
Приложения Chat могут создавать и показывать интерфейсы следующими способами:
- Сообщения, которые могут содержать текст, статические или интерактивные карточки и дополнительные кнопки.
- Главные страницы приложений, которые появляются на вкладке Главная в прямых переписках с приложением Chat.
- Диалоговые окна – карточки, которые открываются в новом окне и обычно предлагают пользователям ввести информацию.
- Предварительный просмотр ссылок – карточки с информацией о внешнем сервисе.
Требования
- Аккаунт Google Workspace Business или Enterprise с доступом к Google Chat.
- Создайте проект Google Cloud.
- Настройте окно запроса доступа OAuth.
- Включите и настройте Google Chat API.
Как работают взаимодействия пользователей
Когда пользователь взаимодействует с приложением Chat, Google Chat вызывает настроенный триггер и отправляет объект события конечной точке или функции приложения Chat. Приложение Chat обрабатывает объект события и может либо вернуть действие синхронно в течение 30 секунд, либо ответить асинхронно с помощью Chat API.
На следующей схеме показано, как приложения Google Chat обрабатывают взаимодействия с пользователями и отвечают на них:
Триггеры
Триггеры – это определенные способы, с помощью которых пользователи вызывают приложение Chat, используя интерфейс Chat, например @упоминания или команды приложения.
В таблице ниже приведены триггеры Chat, их описание и типичные ответы приложений Chat.
| Триггер | Описание | Типичный ответ |
|---|---|---|
| Добавлено в чат-группу |
Пользователь добавляет приложение Chat в чат-группу, или администратор Google Workspace устанавливает приложение Chat в чаты для прямой переписки для пользователей в своей организации. Чтобы узнать о приложениях Chat, установленных администраторами, ознакомьтесь со статьей Как установить приложения из каталога Marketplace в своем домене в Справочном центре для администраторов Google Workspace. |
Приложение Chat отправляет приветственное сообщение, в котором объясняется, что оно делает и как пользователи в чат-группе могут с ним взаимодействовать. |
| Сообщение |
Пользователь взаимодействует с приложением Chat в сообщении одним из следующих способов:
|
Приложение Chat отвечает на основе содержимого сообщения. Например, приложение Chat отвечает сообщением, прикрепляет карточку предварительного просмотра ссылки или предлагает элементы в меню с множественным выбором. |
| Удаление из чат-группы |
Пользователь удаляет приложение Chat из чат-группы, или администратор Google Workspace удаляет приложение Chat для пользователя в своей организации. Пользователи не могут удалять приложения Chat, установленные администратором. Если пользователь ранее установил приложение Chat, оно останется установленным независимо от того, попытается ли администратор Google Workspace удалить его. |
Приложение Chat удаляет все входящие уведомления, настроенные для чат-группы (например, удаляет вебхук), и очищает внутреннее хранилище. Приложения Chat не могут отвечать на этот триггер, так как они больше не являются участниками чат-группы. |
| Команда приложения |
Пользователь вызывает команду приложения Chat (например, слеш-команду, быструю команду или действие с сообщением). |
Приложение Chat ответит на команду. Например, оно может отправить сообщение или открыть диалоговое окно. |
| Главный экран приложения |
Пользователь открывает вкладку Главная в чат-группе для прямой переписки с приложением Chat или взаимодействует с виджетом на карточке главной страницы. |
Приложение Chat возвращает объект RenderActions, который отправляет карточку главной страницы (pushCard) или обновляет отображаемую карточку главной страницы (updateCard).
|
Конечные точки или функции обратного вызова для этих триггеров настраиваются в консоли Google Cloud на странице Configuration (Конфигурация) Chat API. Пошаговые инструкции приведены в статье Как настроить Google Chat API.
Как настроить варианты запросов
Варианты запросов помогают пользователям узнать о функциях приложения Chat, когда они открывают пустую прямую переписку с ним. Вы можете настроить до трех вариантов запросов.
Чтобы добавить и настроить варианты запросов:
В консоли Google Cloud перейдите на страницу Configuration (Конфигурация) Chat API.
В разделе Интерактивные функции найдите Варианты запросов и нажмите Добавить запрос.
В поле Ранг (1–3) введите число от
1до3, чтобы указать порядок показа.В разделе Выбор типа укажите, как будет работать запрос:
- Текстовый запрос. Когда пользователь нажимает на чип запроса, в поле чата появляется заданный текст.
- Командная строка. При нажатии запускает зарегистрированную слеш-команду или быструю команду. Команды, требующие дополнительных аргументов, выбрать нельзя.
Настройте запрос в зависимости от выбранного типа:
Если вы выбрали "Текстовый запрос":
- В поле Заголовок введите заголовок запроса, который будет показываться на чипе (не более 30 символов).
- В поле Текст запроса введите текст, который будет появляться в поле чата (не более 60 символов).
- При необходимости добавьте локализованные названия и текст для пользователей, говорящих на других языках:
- В разделе Локализованные подсказки нажмите Добавить язык.
- В разделе Язык выберите поддерживаемый язык из раскрывающегося списка.
- В поле Локализованное название введите название на нужном языке (не более 30 символов).
- В поле Локализованный текст подсказки введите текст подсказки на нужном языке (не более 60 символов).
- Повторите это действие необходимое число раз.
Если вы выбрали командную строку:
- В разделе Слеш-команда/Быстрая команда выберите команду из раскрывающегося списка.
Нажмите Готово, а затем Сохранить внизу страницы.
Обработка повторных HTTP-вызовов к вашему сервису
Если HTTPS-запрос к вашему сервису не удался (например, из-за тайм-аута, временного сбоя сети или кода статуса HTTPS, отличного от 2xx), Google Chat может повторить попытку доставки несколько раз в течение нескольких минут (но это не гарантируется). В результате в некоторых ситуациях приложение Chat может получить одно и то же событие несколько раз. Если запрос выполнен успешно, но возвращает недопустимые полезные данные ответа, Google Chat не повторяет запрос.
Объекты событий
Приложения Chat получают объекты событий, когда срабатывает триггер Chat или когда пользователи Chat взаимодействуют с интерфейсом приложения Chat (например, нажимают кнопку или отправляют диалоговое окно). Объект события позволяет использовать данные о взаимодействии, чтобы ответить или обновить пользовательский интерфейс.
В 2025 году в приложениях Google Chat была добавлена поддержка событий дополнений, и с июля 2025 года это стало настройкой по умолчанию для новых приложений Chat. В документации Chat события дополнений – это стандартный тип событий, показанный в руководствах и примерах кода. Документация по событиям Chat (для приложений Chat, которые не являются дополнениями Google Workspace) разделена на свернутые разделы (например, Приложения Chat, которые не являются дополнениями: получение событий взаимодействия и ответ на них).
Определите типы событий и ответов
Когда приложение Chat получает объект события, структура полезной нагрузки и способ ответа зависят от того, настроено ли приложение Chat как дополнение Google Workspace.
Чтобы узнать, какие типы объектов событий получает ваше приложение и как оно должно на них реагировать, проверьте конфигурацию приложения с помощью следующей таблицы:
| Тип приложения | Получает события дополнений (по умолчанию для новых приложений, созданных после июля 2025 г.) |
Получает события Chat (предыдущее значение по умолчанию, до июля 2025 г.) |
|---|---|---|
| Приложения Apps Script Проверьте файл манифеста ( appsscript.json). |
Объект chat настраивается внутри addOns:
|
Объект chat настраивается в корне манифеста:
|
| Другие приложения Проверьте страницу Google Chat API Configuration (Конфигурация). |
Флажок "Создать это приложение Chat как дополнение Google Workspace" установлен. | Флажок "Создать это приложение Chat как дополнение Google Workspace" не установлен. |
| Где найти документацию | В руководствах и примерах кода. Справочная документация по событиям: объекты событий дополнений. |
Свернутые разделы (например, Приложения Chat, не являющиеся дополнениями: получение событий взаимодействия и ответ на них) Справочная документация по событиям: События взаимодействия Chat API |
| Как отвечать | Возвращает действие, например DataActions или RenderActions.Как ответить действием |
Возвращает ресурс Message.Как ответить сообщением |
Полезная нагрузка объекта события
Каждый объект события дополнения включает в себя
commonEventObject
с информацией о хосте и платформе (hostApp: "CHAT", clientPlatform,
userLocale, userTimezone, parameters и formInputs) и объект
chat,
содержащий контекст, относящийся к Chat:
- Для триггера Главная страница приложения (когда пользователь открывает вкладку Главная в прямой переписке с приложением Chat) объект
chatсодержитchat.userиchat.eventTimeбез поля объединенияpayload. Когда пользователь нажимает кнопку на карточке главной страницы, объект события включаетchat.buttonClickedPayloadвместе сcommonEventObject.parameters(иcommonEventObject.formInputs, если карточка содержит входные данные формы). - Для взаимодействий с чат-группами и сообщениями (Добавление в чат-группу, Сообщение, Удаление из чат-группы, Команда приложения или взаимодействия с кнопками и виджетами) объект
chatвключаетchat.user,chat.space,chat.eventTimeи соответствующую полезную нагрузку взаимодействия:messagePayload– содержитspace,messageиconfigCompleteRedirectUri, когда пользователь отправляет сообщение.addedToSpacePayload– содержитspace,interactionAddиconfigCompleteRedirectUri, когда приложение Chat добавляется в чат-группу.removedFromSpacePayload– содержитspace, когда приложение Chat удаляется из чат-группы.buttonClickedPayloadсодержитspace,message,isDialogEventиdialogEventType, когда пользователь нажимает кнопку на карточке или в диалоговом окне.widgetUpdatedPayload– содержитspace, когда пользователь взаимодействует с виджетом, например вводит текст в меню множественного выбора с внешним источником данных.appCommandPayload– содержитspace,message,appCommandMetadata,isDialogEvent,dialogEventTypeиconfigCompleteRedirectUri, когда пользователь вызывает команду приложения.
Подробнее об объектах событий дополнений в Chat и других приложениях Google Workspace…
Ответить
В этом разделе объясняется, как приложения Chat используют действия, чтобы синхронно отвечать на действия пользователей.
Чтобы ответить действием, приложение Chat должно ответить в течение 30 секунд, и ответ должен быть применим к чат-группе, в которой произошло взаимодействие. Для синхронных ответов не требуется аутентификация. Если приложению для Chat требуется больше 30 секунд или ему нужно выполнить действие за пределами чат-группы, настройте аутентификацию и асинхронный ответ с помощью Google Chat API.
Чтобы синхронно отвечать на действия пользователей, приложение Chat обрабатывает объект входящего события и возвращает один из следующих объектов JSON:
DataActionsсоздает или обновляет сообщения чата (CreateMessageAction,UpdateMessageAction) или прикрепляет предварительный просмотр ссылок (UpdateInlinePreviewAction) с помощьюchatDataActionMarkup.RenderActions: создает, обновляет или закрывает главную страницу или диалоговое окно (pushCard,updateCard,endNavigation: "CLOSE_DIALOG") или предоставляет динамические варианты ввода для меню с множественным выбором (modifyCard).AuthorizationError– показывает пользователям карточку базовой авторизации (basic_authorization_prompt) для входа или аутентификации во внешнем сервисе.
В таблице ниже показано, как приложения Chat могут отвечать действиями. Приложения Chat могут возвращать объекты JSON напрямую или создавать ответ с помощью AddOnResponseService и CardService в Apps Script.
| Ответ приложения Chat | Необходимое действие, которое нужно вернуть (JSON) | Необходимое действие для возврата (Apps Script) |
|---|---|---|
| Отправьте сообщение или обновите его. | DataActions (createMessageAction или updateMessageAction) |
DataActionsResponse |
| Предварительный просмотр ссылок в сообщениях, которые пользователи Chat отправляют в чат-группе. | DataActions (updateInlinePreviewAction) |
DataActionsResponse |
| Отрисовка или обновление главной страницы на вкладке Главная в прямой переписке. | RenderActions (pushCard или updateCard) |
ActionResponse |
| открывать, обновлять и закрывать диалоговые окна; | RenderActions (pushCard, updateCard или endNavigation: "CLOSE_DIALOG") |
ActionResponse |
| Чтобы собирать информацию из карточки или диалогового окна, предлагайте варианты на основе того, что пользователи вводят в меню множественного выбора. | RenderActions (modifyCard) |
ActionResponse |
| Запросите настройку или авторизацию для внешнего сервиса. | AuthorizationError (basic_authorization_prompt) |
AuthorizationException |
Отправить в ответ сообщение
Приложения Chat могут отвечать сообщением на любой из следующих триггеров или взаимодействий:
- Триггеры сообщений, например когда пользователи упоминают приложение Chat через @или отправляют ему прямое сообщение.
- Добавление в чат-группу, например когда пользователи устанавливают приложение Chat из Google Workspace Marketplace или добавляют его в чат-группу.
- Триггеры команд приложения, например когда пользователи вызывают слеш-команду или быструю команду.
- нажатия кнопок на карточках в сообщениях или диалоговых окнах; Например, когда пользователи вводят информацию и нажимают «Отправить».
Приложения Chat могут включать в сообщение:
- Текст, содержащий гиперссылки, @упоминания и эмодзи. Подробнее о том, как форматировать текст письма…
- Одна или несколько карточек, которые могут появляться в сообщении или открываться в новом окне в виде диалогового окна. Подробнее о создании карточек для приложений Google Chat…
- Один или несколько дополнительных виджетов, которые представляют собой кнопки, появляющиеся после текста или карточек в сообщении.
Чтобы отправить ответное сообщение, верните DataActions с объектом CreateMessageAction:
{
"hostAppDataAction": {
"chatDataAction": {
"createMessageAction": {
"message": <var>MESSAGE</var>
}
}
}
}
Замените MESSAGE ресурсом Message из Chat API.
В примере ниже приложение Chat создает и отправляет приветственное текстовое сообщение, когда его добавляют в чат-группу, отвечая на триггер Добавление в чат-группу с помощью DataActions:
Node.js
/**
* Sends an onboarding message when the Chat app is added to a space.
*
* @param {Object} req The request object from Google Chat.
* @param {Object} res The response object from the Chat app.
*/
exports.cymbalApp = function cymbalApp(req, res) {
const chatEvent = req.body.chat;
// Send an onboarding message when added to a Chat space
if (chatEvent.addedToSpacePayload) {
res.json({ hostAppDataAction: { chatDataAction: { createMessageAction: { message: {
text: 'Hi, Cymbal at your service. I help you manage your calendar ' +
'from Google Chat. Take a look at your schedule today by typing ' +
'`/checkCalendar`, or schedule a meeting with `/scheduleMeeting`. ' +
'To learn what else I can do, type `/help`.'
}}}}});
}
};
Python
from flask import Flask, request, json
app = Flask(__name__)
@app.route('/', methods=['POST'])
def cymbal_app():
"""Sends an onboarding message when the Chat app is added to a space.
Returns:
Mapping[str, Any]: The response object from the Chat app.
"""
chat_event = request.get_json()["chat"]
if "addedToSpacePayload" in chat_event:
return json.jsonify({ "hostAppDataAction": { "chatDataAction": {
"createMessageAction": { "message": {
"text": 'Hi, Cymbal at your service. I help you manage your calendar ' +
'from Google Chat. Take a look at your schedule today by typing ' +
'`/checkCalendar`, or schedule a meeting with `/scheduleMeeting`. ' +
'To learn what else I can do, type `/help`.'
}}
}}})
Java
@SpringBootApplication
@RestController
public class App {
public static void main(String[] args) {
SpringApplication.run(App.class, args);
}
/*
* Sends an onboarding message when the Chat app is added to a space.
*
* @return The response object from the Chat app.
*/
@PostMapping("/")
@ResponseBody
public GenericJson onEvent(@RequestBody JsonNode event) throws Exception {
JsonNode chatEvent = event.at("/chat");
if (!chatEvent.at("/addedToSpacePayload").isEmpty()) {
return new GenericJson() { {
put("hostAppDataAction", new GenericJson() { {
put("chatDataAction", new GenericJson() { {
put("createMessageAction", new GenericJson() { {
put("message", new Message().setText(
"Hi, Cymbal at your service. I help you manage your calendar " +
"from Google Chat. Take a look at your schedule today by typing " +
"`/checkCalendar`, or schedule a meeting with `/scheduleMeeting`. " +
"To learn what else I can do, type `/help`."
));
} });
} });
} });
} };
}
return new GenericJson();
}
}
Apps Script
/**
* Sends an onboarding message when the Chat app is added to a space.
*
* @param {Object} event The event object from Google Chat.
* @return {Object} Response from the Chat app.
*/
function onAddedToSpace(event) {
return { hostAppDataAction: { chatDataAction: { createMessageAction: { message: {
text: 'Hi, Cymbal at your service. I help you manage your calendar ' +
'from Google Chat. Take a look at your schedule today by typing ' +
'`/checkCalendar`, or schedule a meeting with `/scheduleMeeting`. ' +
'To learn what else I can do, type `/help`.'
}}}}};
}
Пример кода возвращает следующее текстовое сообщение:
Как изменить сообщение
Приложения Chat также могут обновлять отправленные ими сообщения. Например, приложение Chat может обновить сообщение после того, как пользователь отправит диалоговое окно или нажмет кнопку на карточке в сообщении.
Чтобы обновить сообщение приложения Chat в ответ на взаимодействие, верните DataActions с UpdateMessageAction:
{
"hostAppDataAction": {
"chatDataAction": {
"updateMessageAction": {
"message": <var>MESSAGE</var>
}
}
}
}
Замените MESSAGE ресурсом Message из Chat API.
Приложения Chat также могут обновлять отправленные пользователями сообщения, чтобы прикреплять к ним карточки предварительного просмотра ссылок с помощью updateInlinePreviewAction. Подробнее о предварительном просмотре ссылок…
Как отвечать асинхронно с помощью Google Chat API
Вместо синхронного возврата действия приложениям Chat может потребоваться вызвать Google Chat API, чтобы ответить на взаимодействие или отправить упреждающие сообщения. Например, приложения Chat должны вызывать Google Chat API, чтобы:
- Отвечать на взаимодействие через 30 секунд (например, после выполнения длительной задачи).
- Отправлять сообщения по расписанию или уведомления об изменениях внешних ресурсов.
- выполнять задачи за пределами чат-группы, в которой происходило взаимодействие.
- Выполнять в Chat задачи, которые недоступны в качестве синхронных действий, например показывать список чат-групп или добавлять участников в чат-группу.
- Выполнять задачи от имени пользователя Chat (требуется аутентификация пользователя).
Если вы отвечаете на взаимодействие по истечении 30 секунд, то, чтобы избежать появления пользовательского сообщения об ошибке, в котором говорится, что ваше приложение Chat не отвечает, вы должны подтвердить получение объекта события в течение 30 секунд, вернув пустой ответ:
Node.js
async function onEvent(req, res) {
// Trigger asynchronous job that will respond using the Google Chat API.
...
// Respond with an empty response to the Google Chat platform.
return res.send({});
};
Python
def on_event(event) -> dict:
# Trigger asynchronous job that will respond using the Google Chat API.
...
// Respond with an empty response to the Google Chat platform.
return {}
Java
public String onEvent(JsonNode event) {
// Trigger asynchronous job that will respond using the Google Chat API.
...
// Respond with an empty response to the Google Chat platform.
return "{}";
}
Apps Script
function onEvent(event) {
// Trigger asynchronous job that will respond using the Google Chat API.
...
// Respond with an empty response to the Google Chat platform.
return null;
}
Чтобы отправить сообщение с помощью Chat API, настройте аутентификацию и вызовите метод spaces.messages.create. Подробнее о том, как отправить сообщение… Инструкции по использованию дополнительных методов Chat API можно найти в обзоре Chat API.
Статьи по теме
- Как настроить Google Chat API
- Как отправить сообщение
- Реагировать на команды
- Как открыть интерактивные диалоговые окна
- Как читать данные, введенные пользователями в карточки
- Предварительный просмотр ссылок
- Как создать главную страницу для приложения Chat
- Как проверять запросы от Chat
- Как протестировать интерактивные функции приложений для Google Chat
Приложения Chat, не являющиеся дополнениями: получение взаимодействий пользователей и ответы на них
Приложения Chat, которые не являются дополнениями Google Workspace, получают
события взаимодействия Chat API (Event)
вместо
объектов событий дополнений Google Workspace (EventObject),
и отвечают, возвращая ресурс
Message
вместо действия.
Чтобы преобразовать приложение Chat, которое не является дополнением, в дополнение Google Workspace, ознакомьтесь со статьей Как преобразовать приложение Google Chat в дополнение Google Workspace.
Типы событий-взаимодействий
Для каждого типа взаимодействия с пользователем Google Chat отправляет приложению Chat, которое не является дополнением, объект Event, тип которого представлен полем eventType:
| Взаимодействие с пользователем | eventType |
Типичный ответ от приложения Chat, которое не является дополнением |
|---|---|---|
| Пользователь отправляет сообщение приложению Chat, например упоминает его с помощью символа @ или использует слеш-команду. | MESSAGE |
Приложение Chat отвечает на основе содержимого сообщения. Например, в ответ на слеш-команду /about приложение Chat отправляет сообщение с описанием задач, которые оно может выполнять. |
| Пользователь добавляет приложение Chat в чат-группу. | ADDED_TO_SPACE |
Приложение Chat отправляет приветственное сообщение, в котором объясняется, что оно делает и как пользователи в чат-группе могут с ним взаимодействовать. |
| Пользователь удаляет приложение Chat из чат-группы. | REMOVED_FROM_SPACE |
Приложение Chat удаляет все входящие уведомления, настроенные для чат-группы (например, удаляет вебхук), и очищает внутреннее хранилище. |
| Пользователь нажимает кнопку на карточке в сообщении, диалоговом окне или на главной странице приложения Chat. | CARD_CLICKED |
Приложение Chat обрабатывает и сохраняет данные, отправленные пользователем, или возвращает другую карточку. |
| Пользователь открывает главную страницу приложения Chat, нажав на вкладку Главная в переписке 1:1. | APP_HOME |
Приложение Chat возвращает статическую или интерактивную карточку с главной страницы. |
| Пользователь отправляет форму с главной страницы приложения Chat. | SUBMIT_FORM |
Приложение Chat обрабатывает и сохраняет данные, отправленные пользователем, или возвращает другую карточку. |
| Пользователь вызывает команду с помощью быстрой команды. | APP_COMMAND |
Приложение Chat отвечает на основе вызванной команды. Например, в ответ на команду About приложение Chat отправляет сообщение с описанием задач, которые оно может выполнять. |
Чтобы посмотреть все поддерживаемые события взаимодействия и примеры полезной нагрузки JSON, ознакомьтесь со статьей Типы событий взаимодействия с приложением Chat и справочной документацией по EventType.
События взаимодействия из диалоговых окон
Если приложение Chat, не являющееся дополнением, открывает диалоговые окна, событие взаимодействия содержит следующую дополнительную информацию, которую можно использовать для обработки ответа:
- В поле
isDialogEventзадано значениеtrue. DialogEventType(REQUEST_DIALOG,SUBMIT_DIALOGилиCANCEL_DIALOG) уточняет, открывает ли взаимодействие диалоговое окно, отправляет ли информацию из него или закрывает его.
Как настроить приложение Chat, которое не является дополнением, для получения событий взаимодействия
В консоли Google Cloud перейдите на страницу Configuration (Конфигурация) Chat API.
В разделе Интерактивные функции снимите флажок Создать это приложение Chat как дополнение Google Workspace и настройте Функциональность, одну конечную точку Настройки подключения (URL конечной точки HTTP, Apps Script, название темы Cloud Pub/Sub или Dialogflow), Команды, Варианты запросов, Предварительный просмотр ссылок и Видимость.
Нажмите Сохранить.
Как ответить сообщением в приложении Chat, которое не является дополнением
Чтобы ответить синхронно в приложении Chat, которое не является дополнением, верните объект Message напрямую. В примере ниже показано, как ответить на событие взаимодействия ADDED_TO_SPACE текстовым сообщением.
Node.js
/**
* Sends an onboarding message when the Chat app is added to a space.
*
* @param {Object} req The event object from Chat API.
* @param {Object} res The response object from the Chat app.
*/
exports.cymbalApp = function cymbalApp(req, res) {
// Send an onboarding message when added to a Chat space
if (req.body.type === 'ADDED_TO_SPACE') {
res.json({
'text': 'Hi, Cymbal at your service. I help you manage your calendar ' +
'from Google Chat. Take a look at your schedule today by typing ' +
'`/checkCalendar`, or schedule a meeting with `/scheduleMeeting`. To ' +
'learn what else I can do, type `/help`.'
});
}
};
Python
from flask import Flask, request, json
app = Flask(__name__)
@app.route('/', methods=['POST'])
def cymbal_app():
"""Sends an onboarding message when the Chat app is added to a space.
Returns:
Mapping[str, Any]: The response object from the Chat app.
"""
event = request.get_json()
if event['type'] == 'ADDED_TO_SPACE':
return json.jsonify({
'text': 'Hi, Cymbal at your service. I help you manage your calendar ' +
'from Google Chat. Take a look at your schedule today by typing ' +
'`/checkCalendar`, or schedule a meeting with `/scheduleMeeting`. To ' +
'learn what else I can do, type `/help`.'
})
return json.jsonify({})
Java
@SpringBootApplication
@RestController
public class App {
public static void main(String[] args) {
SpringApplication.run(App.class, args);
}
/*
* Sends an onboarding message when the Chat app is added to a space.
*
* @return The response object from the Chat app.
*/
@PostMapping("/")
@ResponseBody
public Message onEvent(@RequestBody JsonNode event) {
switch (event.get("type").asText()) {
case "ADDED_TO_SPACE":
return new Message().setText(
"Hi, Cymbal at your service. I help you manage your calendar " +
"from Google Chat. Take a look at your schedule today by typing " +
"`/checkCalendar`, or schedule a meeting with `/scheduleMeeting`. " +
"To learn what else I can do, type `/help`.");
default:
return new Message();
}
}
}
Apps Script
/**
* Sends an onboarding message when the Chat app is added to a space.
*
* @param {Object} event The event object from Chat API.
* @return {Object} Response from the Chat app.
*/
function onAddToSpace(event) {
return {
'text': 'Hi, Cymbal at your service. I help you manage your calendar ' +
'from Google Chat. Take a look at your schedule today by typing ' +
'`/checkCalendar`, or schedule a meeting with `/scheduleMeeting`. To learn ' +
'what else I can do, type `/help`.'
};
}