Wysyłanie wiadomości na karcie głównej aplikacji w Google Chat

Z tego artykułu dowiesz się, jak utworzyć i wysłać wiadomość na karcie głównej aplikacji Google Chat.

Karta główna aplikacji z 2 wiadomościami.

Możesz na przykład skonfigurować komunikat na karcie głównej aplikacji, aby zawierał wskazówki dotyczące korzystania z aplikacji Google Chat za pomocą poleceń po ukośniku. Z punktu widzenia użytkowników strona główna aplikacji jest dostępna na czacie aplikacji do obsługi czatu tylko wtedy, gdy deweloper włączy tę funkcję.


Za pomocą Kreatora kart możesz projektować karty JSON i wyświetlać ich podgląd na potrzeby aplikacji Google Chat:

Otwórz kreator kart

Wymagania wstępne

Python

Google Apps Script

Skonfiguruj w konsoli Google Cloud

Python

  1. W konsoli Google Cloud kliknij Menu > Więcej usług > Google Workspace > Biblioteka usług > Google Chat API.

    Otwórz Google Chat API

  2. Kliknij Manage (Zarządzaj), a następnie kliknij kartę Configuration (Konfiguracja).

  3. Włącz stronę główną aplikacji pomocy.

  4. Zaznacz pole wyboru Wesprzyj stronę główną aplikacji.

  5. W polu URL strony głównej aplikacji dodaj adres URL. Ta wartość jest zwykle taka sama jak URL aplikacji. Ten adres URL jest wywoływany w przypadku APP_HOME zdarzeń.

  6. Kliknij Zapisz.

Google Apps Script

  1. W konsoli Google Cloud kliknij Menu > Więcej usług > Google Workspace > Biblioteka usług > Google Chat API.

    Otwórz Google Chat API

  2. Kliknij Manage (Zarządzaj), a następnie kliknij kartę Configuration (Konfiguracja).

  3. Zaznacz pole wyboru Wesprzyj stronę główną aplikacji.

  4. Kliknij Zapisz.

Skonfiguruj aplikację Google Chat

Skonfiguruj aplikację Google Chat, aby wysyłała nową wiadomość na karcie do strony głównej aplikacji.

Python

Gdy użytkownik otworzy wiadomość na czacie w aplikacji Google Chat, do Twojej aplikacji Google Chat zostanie wysłane zdarzenie APP_HOME. Gdy aplikacja Google Chat otrzyma to zdarzenie, z nawigacją pushCard zostanie zwrócone wystąpienie JSON obiektu RenderActions.

@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"
                            }
                          }
                        }
                      ]
                    }
                  }
                ]
              }
            ]
          }
        }
      ]
    }
  }

Google Apps Script

Ten przykład wysyła wiadomość dotyczącą karty, zwracając kod card JSON. Możesz też użyć usługi kart Apps Script.

Zaimplementuj funkcję onAppHome, która zwraca instancję JSON RenderActions z nawigacją 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"
                    }
                  }
                }
              ]
            }
          }
        ]
      }
    ]
  };
}

Zaktualizuj wiadomość na karcie głównej aplikacji

Wiadomość na karcie głównej aplikacji można zaktualizować, gdy użytkownik prześle informacje w komunikacie na karcie lub zamknie okno. Na przykład początkowy komunikat na karcie głównej aplikacji to wiadomość powitalna z prośbą o wypełnienie formularza. Po wypełnieniu formularza przez użytkownika wysyłana jest zaktualizowana wiadomość na karcie głównej aplikacji. Aktualizacja musi zostać zwrócona za pomocą instancji RenderActions zawierającej nawigację updateCard.

Python

W przypadku aplikacji HTTP aktualizowanie komunikatu na karcie głównej aplikacji przebiega podobnie jak w przypadku informacji o procesie podanych przez użytkowników, ale musisz zwrócić wartość RenderActions. invokedFunction reprezentuje nazwę wywołanej funkcji powiązanej z widżetem Card. Więcej informacji: CommonEventObject. W poniższym przykładzie wartość submitForm wskazuje, że użytkownik przesłał dane formularza:

@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"
                                      }
                                  },
                              }]
                          }
                      }]
                  }]
              }
          }]
      }
  }

Google Apps Script

Ten przykład wysyła wiadomość dotyczącą karty, zwracając kod card JSON. Możesz też użyć usługi kart 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"
                    }
                  }
                }
              ]
            }
          }
        ]
      }
    ]
  };
}

Ograniczenia

Ogólnie rzecz biorąc, usługa navigation jest niedostępna w przypadku aplikacji Google Chat. Nie możesz zwrócić stosu kart. W przypadku aplikacji Google Chat dostępne są tylko pushCard (w przypadku pierwszej odpowiedzi) i updateCard (w przypadku aktualizacji).