Отправка сообщения на главной карточке приложения Google Chat

На этой странице объясняется, как создать и отправить сообщение на главной карточке приложения Chat. Домашняя страница приложения — это настраиваемое сообщение-карточка, которое приложение Chat отправляет пользователю, когда он открывает прямое сообщение в приложении Chat.

Домашняя карточка приложения с двумя сообщениями.

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


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

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

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

Питон

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

Настройте в консоли Google Cloud

Питон

  1. В консоли Google Cloud выберите Меню > продукты > Google Workspace > Библиотека продуктов > Google Chat API .

    Перейти к API чата Google

  2. Нажмите «Управление» , а затем перейдите на вкладку «Конфигурация» .

  3. Включите главную страницу приложения поддержки .

  4. Установите флажок «Домашняя страница приложения поддержки» .

  5. В поле «Домашний URL-адрес приложения» добавьте URL-адрес. Обычно это значение совпадает с URL-адресом приложения . Этот URL-адрес вызывается для событий APP_HOME .

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

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

  1. В консоли Google Cloud выберите Меню > продукты > Google Workspace > Библиотека продуктов > Google Chat API .

    Перейти к API чата Google

  2. Нажмите «Управление» , а затем перейдите на вкладку «Конфигурация» .

  3. Установите флажок «Домашняя страница приложения поддержки» .

  4. Нажмите Сохранить .

Настройте приложение чата

Настройте приложение чата для отправки нового карточного сообщения на главную страницу приложения.

Питон

Когда пользователь открывает прямое сообщение из приложения Chat, в ваше приложение Chat отправляется событие APP_HOME . Когда приложение чата получает это событие, JSON-экземпляр RenderActions возвращается с навигацией pushCard .

@app.route('/', methods=['POST'])
def on_event():
  event = request.get_json()
  chat = event.get('chat')
  if chat is not None:
    return handle_chat_event(event)

def handle_chat_event(event):
  if event['chat'].get('type') == 'APP_HOME':
    return get_app_home_card()

def get_app_home_card():
  return {
    "action": {
      "navigations": [
        {
          "pushCard": {
            "sections": [
              {
                "widgets": [
                  {
                    "buttonList": {
                      "buttons": [
                        {
                          "text": "Open documentation",
                          "onClick": {
                            "openLink": {
                              "url": "https://developers.google.com/chat"
                            }
                          }
                        }
                      ]
                    }
                  }
                ]
              }
            ]
          }
        }
      ]
    }
  }

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

В этом примере отправляется карточное сообщение, возвращая card JSON . Вы также можете использовать сервис карточек Apps Script .

Реализуйте функцию onAppHome для возврата экземпляра JSON RenderActions с навигацией pushCard :

// "onAppHome" is the pre-defined name of the callback that the Chat servers
// execute.
function onAppHome() {
  return {
    action: {
      navigations: [
        {
          pushCard: getCard()
        }
      ]
    }
  };
}

function getCard() {
  return {
    sections: [
      {
        widgets: [
          {
            buttonList: {
              buttons: [
                {
                  text: "Open documentation",
                  onClick: {
                    openLink: {
                      url: "https://developers.google.com/chat"
                    }
                  }
                }
              ]
            }
          }
        ]
      }
    ]
  };
}

Обновление сообщения на главной карточке приложения

Сообщение домашней карточки приложения может быть обновлено, когда пользователь отправляет информацию в сообщении карточки или закрывает диалоговое окно. Например, исходное сообщение с домашней карточкой приложения представляет собой приветственное сообщение, в котором пользователю предлагается заполнить форму с информацией. После того как пользователь заполнит форму, будет отправлено обновленное сообщение с главной карточкой приложения. Обновление должно быть возвращено с экземпляром RenderActions , содержащим навигацию updateCard .

Питон

Для HTTP-приложений обновление сообщения домашней карточки приложения похоже на обработку информации, введенной пользователями , но вы должны вернуть RenderActions . invokedFunction представляет имя вызванной функции, связанной с виджетом Card . Дополнительные сведения см. в CommonEventObject . В следующем примере submitForm показывает, что пользователь отправил данные формы:

@app.route('/', methods=['POST'])
def on_event():
  event = request.get_json()
  chat = event.get('chat')
  if chat is not None:
    return handle_chat_event(event)

def handle_chat_event(event):
  if event['chat'].get('type') == 'SUBMIT_FORM':
    event_object = event.get('commonEventObject')
    if event_object is not None:
      // Forms
      if 'submitForm' == event_object.get('invokedFunction'):
        return {
          'render_actions': {
            'action': {
              'navigations': [{
                'updateCard': get_update_card()
              }]
            }
          }
        }

def get_update_card():
  return {
      "action": {
          "navigations": [{
              "pushCard": {
                  "sections": [{
                      "widgets": [{
                          "buttonList": {
                              "buttons": [{
                                  "text": "Open documentation",
                                  "onClick": {
                                      "openLink": {
                                          "url": "https://developers.google.com/chat"
                                      }
                                  },
                              }]
                          }
                      }]
                  }]
              }
          }]
      }
  }

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

В этом примере отправляется карточное сообщение, возвращая card JSON . Вы также можете использовать сервис карточек Apps Script .

// Called from elsewhere (i.e. on button press).
function updateAppHomeCard(event) {
  return {
    render_actions: {
      action: {
        navigations: [
          {
            updateCard: getCard()
          }
        ]
      }
    }
  }
}

function getCard() {
  return {
    sections: [
      {
        widgets: [
          {
            buttonList: {
              buttons: [
                {
                  text: "Open documentation",
                  onClick: {
                    openLink: {
                      url: "https://developers.google.com/chat"
                    }
                  }
                }
              ]
            }
          }
        ]
      }
    ]
  };
}

Ограничения

Как правило, navigation недоступна для приложений чата. Вы не можете вернуть стопку карт. Для приложений чата доступны только pushCard (для первоначального ответа) и updateCard (для обновлений).