Estensione dell'interfaccia utente dei messaggi

I componenti aggiuntivi di Google Workspace che estendono le funzionalità di Gmail a un'interfaccia utente quando l'utente legge i messaggi. Ciò consente Componenti aggiuntivi di Google Workspace per automatizzare le attività che rispondono ai contenuti dei messaggi, ad esempio la visualizzazione, il recupero o l'invio ulteriori informazioni relative al messaggio.

Accesso all'interfaccia utente dei messaggi del componente aggiuntivo

Esistono due modi per visualizzare l'interfaccia utente dei messaggi di un componente aggiuntivo. Il primo modo è aprire un messaggio mentre il componente aggiuntivo è già aperto (ad esempio, quando visualizzi alla home page del componente aggiuntivo nella finestra della Posta in arrivo di Gmail). Il secondo modo è avvia il componente aggiuntivo mentre visualizzi un messaggio.

Entrambi i casi fanno sì che il componente aggiuntivo esegua il codice La funzione di trigger contestuale, definita nel il componente aggiuntivo manifest. L'attivatore viene eseguito anche se l'utente passa a un messaggio diverso mentre è ancora aperto. La funzione di trigger contestuale crea l'interfaccia utente dei messaggi il messaggio, che Gmail mostra all'utente.

Creazione di un componente aggiuntivo per i messaggi

Puoi aggiungere la funzionalità di messaggistica a un componente aggiuntivo seguendo questa procedura generale:

  1. Aggiungi i campi appropriati al progetto di script del componente aggiuntivo manifest, che include ambiti richiesti per funzionalità di messaggistica. Assicurati di aggiungere campo attivatore condizionale al manifest, con un unconditional: pari a {}.
  2. Implementare una funzione di trigger contestuale che crea una UI per i messaggi quando l'utente seleziona il componente aggiuntivo in un messaggio.
  3. Implementare le funzioni associate necessarie per rispondere all'interfaccia utente dell'utente e interazioni.

Trigger contestuali

Per fornire assistenza agli utenti durante la lettura dei messaggi, I componenti aggiuntivi di Google Workspace possono definire un attivatore contestuale nei propri manifest. Quando l'utente apre un messaggio Gmail (con il componente aggiuntivo aperto) che soddisfa l'attivatore criteri* da cui si attiva l'attivatore. Un attivatore attivato esegue un funzione di trigger contestuale, che costruisce la del componente aggiuntivo e la restituisce per la visualizzazione in Gmail. A quel punto, l'utente possa iniziare a interagire.

Gli attivatori contestuali sono definiti nel progetto del componente aggiuntivo manifest. La definizione dell'attivatore indica a Gmail quale funzione di trigger attivare e in base alla quale le condizioni di traffico. Ad esempio, questo snippet manifest imposta un attivatore incondizionato che chiama la funzione di trigger onGmailMessageOpen() all'apertura di un messaggio:

{
  ...
  "addOns": {

    "common": {
      ...
    },
    "gmail": {
      "contextualTriggers": [
        {
          "unconditional": {},
          "onTriggerFunction": "onGmailMessageOpen"
        }
      ],
      ...
    },
    ...
  }
  ...
}

Funzione trigger contestuale

A ogni attivatore contestuale deve essere associata una funzione attivatore corrispondente che costruisce l'interfaccia utente del tuo componente aggiuntivo. Puoi specificare questa funzione onTriggerFunction del file manifest . Devi implementare questa funzione per accettare oggetto evento di azione e restituisce un singolo argomento Card o un array di Card oggetti.

Quando un attivatore contestuale si attiva per un determinato messaggio Gmail, chiama questo e le passa una funzione oggetto evento azione. Spesso le funzioni di attivazione utilizzano l'ID messaggio fornito da questo oggetto evento per ottenere il testo del messaggio e altri dettagli utilizzando Servizio Gmail. Ad esempio, il trigger può estrarre il contenuto del messaggio utilizzando queste funzioni:

  // Activate temporary Gmail scopes, in this case to allow
  // the add-on to read message metadata and content.
  var accessToken = e.gmail.accessToken;
  GmailApp.setCurrentMessageAccessToken(accessToken);

  // Read message metadata and content. This requires the Gmail scope
  // https://www.googleapis.com/auth/gmail.addons.current.message.readonly.
  var messageId = e.gmail.messageId;
  var message = GmailApp.getMessageById(messageId);
  var subject = message.getSubject();
  var sender = message.getFrom();
  var body = message.getPlainBody();
  var messageDate = message.getDate();

  // Setting the access token with a gmail.addons.current.message.readonly
  // scope also allows read access to the other messages in the thread.
  var thread = message.getThread();
  var threadMessages = thread.getMessages();

  // Using this link can avoid the need to copy message or thread content
  var threadLink = thread.getPermalink();

La funzione di trigger può quindi agire su questi dati, estraendo le informazioni che necessario per l'interfaccia. Ad esempio, un componente aggiuntivo che riassume le vendite numeri possono raccogliere i dati di vendita dal corpo del messaggio e organizzarli vengono visualizzati in una scheda.

La funzione trigger deve generare e restituire un array di Card di oggetti strutturati. Ad esempio, la query riportata di seguito crea un componente aggiuntivo con una singola scheda che indica solo l'oggetto e il mittente del messaggio:

  function onGmailMessageOpen(e) {
    // Activate temporary Gmail scopes, in this case to allow
    // message metadata to be read.
    var accessToken = e.gmail.accessToken;
    GmailApp.setCurrentMessageAccessToken(accessToken);

    var messageId = e.gmail.messageId;
    var message = GmailApp.getMessageById(messageId);
    var subject = message.getSubject();
    var sender = message.getFrom();

    // Create a card with a single card section and two widgets.
    // Be sure to execute build() to finalize the card construction.
    var exampleCard = CardService.newCardBuilder()
        .setHeader(CardService.newCardHeader()
            .setTitle('Example card'))
        .addSection(CardService.newCardSection()
            .addWidget(CardService.newKeyValue()
                .setTopLabel('Subject')
                .setContent(subject))
            .addWidget(CardService.newKeyValue()
                .setTopLabel('From')
                .setContent(sender)))
        .build();   // Don't forget to build the Card!
    return [exampleCard];
  }