Crea una página principal para una app de Google Chat

Esta página explica cómo crear una página de inicio para tu App de Google Chat La página principal de la app es una interfaz de tarjetas personalizable que envía una app de Chat a un usuario cuando este abre un mensaje con la app de Chat.

Tarjeta de la página principal de la app con dos widgets.

Por ejemplo, puedes configurar el mensaje de la tarjeta de la página principal de la app para incluir sugerencias para interactuar con App de Chat con comandos de barra. Para los usuarios finales, la página principal de la app es solo disponible en los mensajes directos de una app de Chat desarrollador de apps habilita la función.


Usa Card Builder para diseñar mensajes de tarjetas JSON y obtener una vista previa de ellos para apps de Chat:

Abre el Creador de tarjetas

Requisitos previos

Python

Apps Script

Configurar en la consola de Google Cloud

Python

  1. En la consola de Google Cloud, ve a Menú > Más productos > Google Workspace > Biblioteca de productos > API de Google Chat.

    Ir a la API de Google Chat

  2. Haz clic en Administrar y, luego, en la pestaña Configuración.

  3. Habilita Support App Home.

  4. Selecciona la casilla de verificación Support App Home.

  5. Agrega una URL en el campo URL de la página principal de la app. Este valor suele ser el mismo de destino como la URL de la aplicación. Esta URL se llama Eventos APP_HOME.

  6. Haz clic en Guardar.

Apps Script

  1. En la consola de Google Cloud, ve a Menú > Más productos > Google Workspace > Biblioteca de productos > API de Google Chat.

    Ir a la API de Google Chat

  2. Haz clic en Administrar y, luego, en la pestaña Configuración.

  3. Selecciona la casilla de verificación Support App Home.

  4. Haz clic en Guardar.

Configura tu app de Chat

Configura tu app de Chat para la página principal de la app.

Python

Cuando un usuario abre un mensaje directo desde una app de Chat, se Se envía el evento APP_HOME a tu app de Chat. Cuando un La app de Chat recibe este evento, una instancia JSON de RenderActions se muestra con la navegación 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"
                            }
                          }
                        }
                      ]
                    }
                  }
                ]
              }
            ]
          }
        }
      ]
    }
  }

Apps Script

En este ejemplo, se envía un mensaje de tarjeta mostrando JSON de la tarjeta. También puedes usar Servicio de tarjetas de Apps Script.

Implementa una función onAppHome para mostrar una instancia JSON de RenderActions con navegación 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"
                    }
                  }
                }
              ]
            }
          }
        ]
      }
    ]
  };
}

Cómo actualizar la tarjeta de la página principal de una app

La tarjeta de la página principal de la app se puede actualizar cuando un usuario envía información o cierra . Por ejemplo, la tarjeta inicial de la página principal de la app contiene un mensaje de bienvenida que le pide a un usuario que complete un formulario con información. Una vez que el usuario completa el se actualizará la tarjeta de la página principal de la app. La actualización se debe mostrar con una instancia de RenderActions que contiene una navegación updateCard.

Python

En el caso de las apps HTTP, actualizar la tarjeta de la página principal de la app es similar a lo siguiente: Procesar la información ingresada por los usuarios, pero debes mostrar RenderActions. invokedFunction representa el nombre de la función invocada asociada con el widget Card. Para obtener más información, ver CommonEventObject En el siguiente ejemplo, submitForm muestra que el usuario envió un formulario datos:

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

Apps Script

En este ejemplo, se envía un mensaje de tarjeta mostrando JSON de la tarjeta. También puedes usar Servicio de tarjetas de 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"
                    }
                  }
                }
              ]
            }
          }
        ]
      }
    ]
  };
}

Limitaciones

En general, navigation es no disponible para apps de Chat. No puedes devolver una pila de tarjetas. Solo se permite el uso de pushCard (para la respuesta inicial) y updateCard (para las actualizaciones) disponibles para las apps de Chat.