Отвечать на команды приложения Google Chat

На этой странице объясняется, как настроить и отвечать на команды в приложении Google Chat.

Команды помогают пользователям находить и использовать ключевые функции приложения Chat. Только приложения Chat могут видеть содержимое команды. Например, если пользователь отправляет сообщение с командой с косой чертой, сообщение видно только пользователю и приложению Chat.

Чтобы решить, следует ли вам создавать команды, и понять, как проектировать взаимодействия с пользователем, см. раздел Определение всех путей пользователя .

Типы команд приложения чата

Вы можете создавать команды приложения Chat как слэш-команды или быстрые команды. Чтобы обнаружить и использовать каждый тип команды, пользователи делают следующее:
  1. Команды с косой чертой: пользователи отправляют команды в виде сообщений, вводя косую черту ( / ), а затем предопределенный текст, например /about . Чат-приложения также могут требовать текст аргумента для команды с косой чертой. Например, команда с косой чертой /search может требовать текст аргумента, который используется для поискового запроса.
  2. Быстрые команды: пользователи используют команды, открывая меню из области ответа сообщения чата. Чтобы использовать команду, они нажимают «Добавить» и выберите команду из меню.
На следующих изображениях показано, как пользователи находят меню слеш-команд и быстрых команд:
  • Пользователь обнаруживает слэш-команды.
    Рисунок 1. Пользователи находят и используют слэш-команды, вводя слэш / в поле ответа, а затем имя команды.
  • Пользователь просматривает быстрые команды из меню.
    Рисунок 2. Пользователи находят и используют быстрые команды из меню в области ответа на сообщение чата.

Предпосылки

Node.js

Приложение Google Chat, которое получает и отвечает на события взаимодействия . Чтобы создать интерактивное приложение Chat с использованием HTTP-сервиса, выполните это краткое руководство .

Скрипт приложений

Приложение Google Chat, которое получает и отвечает на события взаимодействия . Чтобы создать интерактивное приложение Chat в Apps Script, выполните это краткое руководство .

Питон

Приложение Google Chat, которое получает и отвечает на события взаимодействия . Чтобы создать интерактивное приложение Chat с использованием HTTP-сервиса, выполните это краткое руководство .

Ява

Приложение Google Chat, которое получает и отвечает на события взаимодействия . Чтобы создать интерактивное приложение Chat с использованием HTTP-сервиса, выполните это краткое руководство .

Настройте команду

В этом разделе объясняется, как выполнить следующие шаги для настройки команды:

  1. Создайте имя и описание для команды.
  2. Настройте команду в консоли Google Cloud.

Назовите и опишите команду

Имя команды — это то, что пользователи вводят или выбирают для вызова приложения Chat. Под именем также отображается краткое описание, чтобы подсказать пользователям, как использовать команду:

Имя и описание команды Slash
Рисунок 3 : Имя и описание команды с косой чертой.

При выборе названия и описания вашей команды примите во внимание следующие рекомендации:

Чтобы назвать команду:

  • Используйте короткие, описательные и действенные слова или фразы, чтобы сделать команды понятными пользователю. Например, вместо имени 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

Чтобы создать косую черту или быструю команду, необходимо указать информацию о команде в конфигурации приложения Chat для API Google Chat.

Чтобы настроить команду в Google Chat API, выполните следующие действия:

  1. В консоли Google Cloud нажмите > API и службы > Включенные API и службы > API Google Chat.

    Перейти на страницу API чата Google

  2. Нажмите Конфигурация .

  3. В разделе «Команды» нажмите «Добавить команду» .

  4. Введите идентификатор команды, описание, тип команды и имя команды:

    • Идентификатор команды: число от 1 до 1000, которое ваше приложение чата использует для распознавания команды и возврата ответа.
    • Описание: текст, описывающий, что делает команда. Описания могут содержать до 50 символов и могут включать специальные символы.
    • Тип команды: выберите Быстрая команда или Косая черта .
    • Укажите имя для быстрой команды или косой черты:
      • Имя быстрой команды: Отображаемое имя, которое пользователи выбирают из меню для вызова команды. Может содержать до 50 символов и включать специальные символы. Например, Remind me .
      • Имя команды с косой чертой: Текст, который пользователи вводят для вызова команды в сообщении. Должно начинаться со слеша, содержать только текст и может быть длиной до 50 символов. Например, /remindMe .
  5. Необязательно: если вы хотите, чтобы ваше приложение Chat отвечало на команду диалоговым окном, установите флажок Открыть диалоговое окно.

  6. Нажмите «Сохранить» .

Теперь команда настроена для приложения «Чат».

Ответить на команду

Когда пользователи используют команду, ваше приложение Chat получает событие взаимодействия . Полезная нагрузка события содержит метаданные с подробностями о вызванной команде (включая идентификатор команды и тип команды), чтобы вы могли вернуть соответствующий ответ.

Личное сообщение для приложения Cymbal Labs Chat. В сообщении говорится, что приложение Chat создано Cymbal Labs и содержит ссылку на документацию и ссылку для связи со службой поддержки.
Приложение чата отвечает в частном порядке на команду /help чтобы объяснить, как получить поддержку.

Чтобы отреагировать на каждый тип команды, необходимо обрабатывать различные типы событий и объекты метаданных в полезной нагрузке события:

Тип команды Тип события Метаданные команды
Команда «слэш» MESSAGE message.slashCommand или message.annotation.slashCommand
Быстрая команда APP_COMMAND appCommandMetadata

Чтобы узнать, как ответить на команду сообщением, смотрите следующие разделы.

Ответ на команду с косой чертой

Следующий код показывает пример приложения Chat, которое отвечает на команду с косой чертой /about . Приложение Chat обрабатывает события взаимодействия MESSAGE , определяет, содержит ли событие взаимодействия соответствующий идентификатор команды, и возвращает личное сообщение:

Node.js

узел/аватар-приложение/index.js
/**
 * Handles slash and quick commands.
 *
 * @param {Object} event - The Google Chat event.
 * @param {Object} res - The HTTP response object.
 */
function handleAppCommands(event, res) {
  const {appCommandId, appCommandType} = event.appCommandMetadata;

  switch (appCommandId) {
    case ABOUT_COMMAND_ID:
      return res.send({
        privateMessageViewer: event.user,
        text: 'The Avatar app replies to Google Chat messages.'
      });
    case HELP_COMMAND_ID:
      return res.send({
        privateMessageViewer: event.user,
        text: 'The Avatar app replies to Google Chat messages.'
      });
  }
}

Скрипт приложений

приложения-скрипт/аватар-приложение/аватар-приложение.gs
// Checks for the presence of a slash command in the message.
if (event.message.slashCommand) {
  // Executes the slash command logic based on its ID.
  // Slash command IDs are set in the Google Chat API configuration.
  switch (event.message.slashCommand.commandId) {
    case ABOUT_COMMAND_ID:
      return {
        privateMessageViewer: event.user,
        text: 'The Avatar app replies to Google Chat messages.'
      };
  }
}

Питон

python/avatar-app/main.py
def handle_app_commands(event: Mapping[str, Any]) -> Mapping[str, Any]:
    """Handles slash and quick commands.

    Args:
        Mapping[str, Any] event: The Google Chat event.

    Returns:
        Mapping[str, Any]: the response
    """
    app_command_id = event["appCommandMetadata"]["appCommandId"]

    if app_command_id == ABOUT_COMMAND_ID:
        return {
            "privateMessageViewer": event["user"],
            "text": "The Avatar app replies to Google Chat messages.",
        }
    elif app_command_id == HELP_COMMAND_ID:
        return {
            "privateMessageViewer": event["user"],
            "text": "The Avatar app replies to Google Chat messages.",
        }
    return {}

Ява

java/avatar-app/src/main/java/AvatarApp.java
/**
 * Handles slash and quick commands.
 *
 * @param event    The Google Chat event.
 * @param response The HTTP response object.
 */
private void handleAppCommands(JsonObject event, HttpResponse response) throws Exception {
  int appCommandId = event.getAsJsonObject("appCommandMetadata").get("appCommandId").getAsInt();

  switch (appCommandId) {
    case ABOUT_COMMAND_ID:
      Message aboutMessage = new Message();
      aboutMessage.setText("The Avatar app replies to Google Chat messages.");
      aboutMessage.setPrivateMessageViewer(new User()
          .setName(event.getAsJsonObject("user").get("name").getAsString()));
      response.getWriter().write(gson.toJson(aboutMessage));
      return;
    case HELP_COMMAND_ID:
      Message helpMessage = new Message();
      helpMessage.setText("The Avatar app replies to Google Chat messages.");
      helpMessage.setPrivateMessageViewer(new User()
          .setName(event.getAsJsonObject("user").get("name").getAsString()));
      response.getWriter().write(gson.toJson(helpMessage));
      return;
  }
}

Замените ABOUT_COMMAND_ID на идентификатор команды, который вы указали при настройке команды в консоли Google Cloud.

Ответить на быструю команду

Следующий код показывает пример приложения Chat, которое отвечает на быструю команду Help . Приложение Chat обрабатывает события взаимодействия APP_COMMAND , определяет, содержит ли событие взаимодействия соответствующий идентификатор команды, и возвращает личное сообщение:

Node.js

узел/аватар-приложение/index.js
/**
 * Handles slash and quick commands.
 *
 * @param {Object} event - The Google Chat event.
 * @param {Object} res - The HTTP response object.
 */
function handleAppCommands(event, res) {
  const {appCommandId, appCommandType} = event.appCommandMetadata;

  switch (appCommandId) {
    case ABOUT_COMMAND_ID:
      return res.send({
        privateMessageViewer: event.user,
        text: 'The Avatar app replies to Google Chat messages.'
      });
    case HELP_COMMAND_ID:
      return res.send({
        privateMessageViewer: event.user,
        text: 'The Avatar app replies to Google Chat messages.'
      });
  }
}

Скрипт приложений

приложения-скрипт/аватар-приложение/аватар-приложение.gs
/**
 * Handles the APP_COMMAND event type. This function is triggered when a user
 * interacts with a quick command within the Google Chat app.  It responds
 * based on the command ID.
 *
 * @param {Object} event The event object from Google Chat, containing details
 *     about the app command interaction.  It includes information like the
 *     command ID and the user who triggered it.
 */
function onAppCommand(event) {
  // Executes the quick command logic based on its ID.
  // Command IDs are set in the Google Chat API configuration.
  switch (event.appCommandMetadata.appCommandId) {
    case HELP_COMMAND_ID:
      return {
        privateMessageViewer: event.user,
        text: 'The Avatar app replies to Google Chat messages.'
      };
  }
}

Питон

python/avatar-app/main.py
def handle_app_commands(event: Mapping[str, Any]) -> Mapping[str, Any]:
    """Handles slash and quick commands.

    Args:
        Mapping[str, Any] event: The Google Chat event.

    Returns:
        Mapping[str, Any]: the response
    """
    app_command_id = event["appCommandMetadata"]["appCommandId"]

    if app_command_id == ABOUT_COMMAND_ID:
        return {
            "privateMessageViewer": event["user"],
            "text": "The Avatar app replies to Google Chat messages.",
        }
    elif app_command_id == HELP_COMMAND_ID:
        return {
            "privateMessageViewer": event["user"],
            "text": "The Avatar app replies to Google Chat messages.",
        }
    return {}

Ява

java/avatar-app/src/main/java/AvatarApp.java
/**
 * Handles slash and quick commands.
 *
 * @param event    The Google Chat event.
 * @param response The HTTP response object.
 */
private void handleAppCommands(JsonObject event, HttpResponse response) throws Exception {
  int appCommandId = event.getAsJsonObject("appCommandMetadata").get("appCommandId").getAsInt();

  switch (appCommandId) {
    case ABOUT_COMMAND_ID:
      Message aboutMessage = new Message();
      aboutMessage.setText("The Avatar app replies to Google Chat messages.");
      aboutMessage.setPrivateMessageViewer(new User()
          .setName(event.getAsJsonObject("user").get("name").getAsString()));
      response.getWriter().write(gson.toJson(aboutMessage));
      return;
    case HELP_COMMAND_ID:
      Message helpMessage = new Message();
      helpMessage.setText("The Avatar app replies to Google Chat messages.");
      helpMessage.setPrivateMessageViewer(new User()
          .setName(event.getAsJsonObject("user").get("name").getAsString()));
      response.getWriter().write(gson.toJson(helpMessage));
      return;
  }
}

Замените HELP_COMMAND_ID на идентификатор команды, который вы указали при настройке команды в консоли Google Cloud.

Проверьте команду

Чтобы протестировать команду и код, см. раздел Тестирование интерактивных функций для приложений Google Chat .

Чтобы узнать, как протестировать и использовать команду в пользовательском интерфейсе чата, см. раздел Использование приложений в Google Chat в справочной документации Google Chat.