Отправлять сообщения в Google Chat

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

  • Форма обратной связи, созданная с помощью команды слэш.
    Рисунок 1. Приложение чата отвечает на команду с косой чертой текстовым сообщением и кнопкой.
  • Форма обратной связи в диалоговом окне.
    Рисунок 2. Приложение чата открывает диалоговое окно, в котором пользователи могут вводить информацию.
  • Карточка с сообщением, содержащим виджеты для ввода данных в форму.
    Рисунок 5. Приложение для чата отправляет сообщение, содержащее текст и интерактивную карточку.

Предварительные требования

HTTP

Дополнение для Google Workspace, расширяющее функциональность Google Chat. Чтобы создать его, выполните краткое руководство по HTTP .

Apps Script

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

Оформите сообщение

В сообщениях чат-приложений можно использовать любой из следующих элементов:

  • Текст, содержащий гиперссылки, упоминания (@) и эмодзи.
  • Одна или несколько карточек, которые могут отображаться в сообщении или открываться в новом окне в виде диалогового окна.
  • Один или несколько дополнительных виджетов, представляющих собой кнопки, которые появляются после любого текста или карточек в сообщении.

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

Ответьте сообщением

Приложения для чата могут отвечать сообщениями на любые из следующих триггеров или взаимодействий:

  • Триггеры сообщений , например, когда пользователи упоминают пользователя с помощью символа @ или отправляют ему личное сообщение в чат-приложении.
  • Добавляется к триггерам пространства , например, когда пользователи устанавливают приложение «Чат» из Google Workspace Marketplace или добавляют его в пространство.
  • Нажатия кнопок на карточках в сообщениях или диалогах. Например, когда пользователи вводят информацию и нажимают кнопку «Отправить».

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

Чтобы ответить сообщением, верните DataActions с объектом CreateMessageAction :

{ "hostAppDataAction": { "chatDataAction": { "createMessageAction": {
  "message": MESSAGE
}}}

Замените MESSAGE на ресурс Message из API чата. Чтобы узнать больше о работе действий, см. раздел «Действия в чате» .

В следующем примере приложение чата создает и отправляет текстовое сообщение всякий раз, когда его добавляют в пространство. Чтобы отправить текстовое сообщение, когда пользователь добавляет ваше приложение чата в пространство, ваше приложение чата реагирует на триггер «Добавлено в пространство» , возвращая действие DataActions :

Node.js

/**
 * Sends an onboarding message when the Chat app is added to a space.
 *
 * @param {Object} req The request object from Google Workspace add-on.
 * @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`."
              ));
            } });
          } });
        } });
      } };
    }
  }
}

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 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`.'
  }}}}};
}

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

Пример сообщения для новых пользователей.

Дополнительные примеры того, как ответить сообщением, см. в следующих руководствах:

Обновить сообщение

Приложения для чата также могут обновлять отправленные сообщения. Например, обновлять сообщение после того, как пользователь отправил диалоговое окно или нажал кнопку в сообщении.

Для обновления сообщения в чате верните DataActions с действием UpdateMessageAction , как показано в следующем примере:

{ "hostAppDataAction": { "chatDataAction": { "updateMessageAction": {
  "message": MESSAGE
}}}}

Замените MESSAGE на ресурс Message из API чата.

Чтобы узнать больше о том, как работают действия, см. раздел «Действия в чате» .

Приложения для чата также могут обновлять сообщение пользователя, отображая предварительный просмотр отправленной им ссылки. Подробнее см. раздел «Предварительный просмотр ссылок в сообщениях Google Chat» .

Отвечайте на сообщения или отправляйте инициативные сообщения, используя API Google Chat.

Вместо возврата действия дополнения, приложениям чата может потребоваться использовать API Google Chat для ответа на взаимодействие. Например, приложениям чата необходимо вызывать API Google Chat для выполнения любого из следующих действий:

  • Отправляйте сообщения по расписанию или об изменениях во внешних ресурсах. Например, уведомления о новой проблеме или обращении.
  • Отвечайте более чем через 30 секунд после взаимодействия. Например, чтобы отправить сообщение после завершения длительной задачи.
  • Отправьте сообщение за пределы того пространства, где произошло взаимодействие.
  • Отправить сообщение от имени пользователя чата.

Для отправки сообщения с помощью API чата необходимо настроить аутентификацию и вызвать метод create() ресурса Message . Инструкции см. в разделе «Отправка сообщения с помощью Google Chat API» .