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

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

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

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

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

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

Предпосылки

HTTP

Надстройка для Google Workspace, расширяющая возможности Google Chat. Чтобы создать её, выполните краткое руководство по HTTP .

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

Надстройка для Google Workspace, расширяющая возможности Google Chat. Чтобы создать её, выполните краткое руководство по Apps Script .

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

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

  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.

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

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

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

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

  3. В разделе «Настройки подключения» перейдите в раздел «Триггеры» и укажите данные вашей конечной точки. Этот триггер необходимо использовать в следующем разделе для ответа на команду.

    1. URL конечной точки HTTP : вы можете указать здесь один общий URL конечной точки HTTP. Кроме того, чтобы использовать разные конечные точки HTTP для разных триггеров, укажите конечную точку непосредственно в поле «Команда приложения» .
    2. Apps Script : введите идентификатор развертывания Apps Script. По умолчанию будет вызвана функция onAppCommand . Чтобы использовать другую функцию Apps Script, укажите имя пользовательской функции в поле «Команда приложения» .
  4. В разделе «Команды» нажмите «Добавить команду» .

  5. Введите следующую информацию о команде:

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

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

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

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

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

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

В следующем коде показан пример приложения Chat, которое отвечает на команду с косой чертой /about текстовым сообщением. Для ответа на команды с косой чертой приложение Chat обрабатывает объекты событий из триггера команды App . Если полезная нагрузка объекта события содержит идентификатор команды с косой чертой, приложение Chat возвращает действие DataActions с объектом createMessageAction :

Node.js

// 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 .

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

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

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