Scegliere un'architettura per l'app Google Chat

Questa pagina descrive gli approcci comuni all'architettura di servizio utilizzati per creare app Google Chat. Se hai già un'app che vuoi integrare in Google Chat, puoi utilizzare o adattare l'implementazione esistente. Se stai creando una nuova app di chat, questa pagina presenta informazioni simili in diversi modi per aiutarti a scegliere l'architettura più adatta al tuo caso d'uso:

Panoramica per funzionalità e capacità

La tabella seguente mette in evidenza le funzionalità e le caratteristiche principali delle app di chat e lo stile di architettura di servizio consigliato (). In alcuni casi, potrebbe essere possibile sviluppare un altro stile di architettura con queste funzionalità, ma non è adatto al caso d'uso quanto altri stili ().

Caratteristiche e funzionalità

Servizio web o HTTP

Pub/Sub

Webhook

Apps Script

AppSheet

Dialogflow

Script

Pubblico di destinazione

Il tuo team

La tua organizzazione

Il pubblico

Interattività utente

Utilizza l'elaborazione del linguaggio naturale

Pattern di messaggistica

Inviare e ricevere messaggi sincroni

Inviare e ricevere messaggi sincroni e inviare messaggi asincroni

Invia solo messaggi asincroni

Inviare messaggi da un sistema esterno a un singolo spazio di Chat

Accedere ad altri servizi e sistemi

Integra altri servizi Google

Comunicare dietro un firewall

Eseguire query o iscriversi agli eventi di Chat

Stili di codifica e deployment

Sviluppo senza codice

Sviluppo con low code

Sviluppo in un linguaggio di programmazione a tua scelta

DevOps semplificata

Gestione completa di DevOps e CI/CD

Stili di architettura dei servizi

Questa sezione descrive alcuni degli approcci di architettura più comuni utilizzati per creare app di chat.

Servizio web o HTTP

Un servizio web o HTTP è l'architettura più comunemente implementata perché offre agli sviluppatori la massima flessibilità per creare app di Chat pubbliche. Questa architettura è consigliata per i seguenti scenari di utilizzo:

  • L'app di Chat viene implementata per il pubblico su Google Workspace Marketplace.
  • L'app Chat può inviare e ricevere tutti i pattern di messaggistica: inviare e ricevere messaggi sincroni, inviare messaggi asincroni e inviare messaggi da un sistema esterno.
  • L'app Chat è sviluppata in qualsiasi linguaggio di programmazione.
  • L'app Chat richiede una gestione completa di DevOps e CI/CD.
  • Il servizio dell'app Chat è implementato in server cloud o on-premise.

In questo progetto, configuri Chat per l'integrazione con un servizio remoto utilizzando HTTP, come mostrato nel seguente diagramma:

Architettura di un'app di Chat che utilizza un servizio web in un server on-premise.

Nel diagramma precedente, un utente che interagisce con un'app HTTP Chat ha il seguente flusso di informazioni:

  1. Un utente invia un messaggio in uno spazio di Chat a un'app Chat.
  2. Una richiesta HTTP viene inviata a un server web che è un sistema cloud o on-premise contenente la logica dell'app Chat.
  3. Facoltativamente, la logica dell'app Chat può interagire con servizi esterni di terze parti, come un sistema di gestione dei progetti o uno strumento per la gestione dei ticket.
  4. Il server web invia una risposta HTTP al servizio dell'app Chat in Chat.
  5. La risposta viene inviata all'utente.
  6. Se vuoi, l'app Chat può chiamare l'API Chat per pubblicare messaggi in modo asincrono o eseguire altre operazioni.

Questa architettura ti offre la flessibilità di utilizzare librerie e componenti esistenti nel tuo sistema perché queste app di chat possono essere progettate utilizzando diversi linguaggi di programmazione. Esistono diversi modi per implementare questa architettura. Su Google Cloud, puoi utilizzare Cloud Functions, Cloud Run e App Engine. Per iniziare, consulta la sezione Creare un'app Google Chat.

Pub/Sub

Se l'app Chat è implementata dietro un firewall, Chat non è in grado di effettuare chiamate HTTP. Un approccio è utilizzare Pub/Sub per consentire all'implementazione dell'app Chat di abbonarsi a un argomento che trasmette i messaggi di Chat. Pub/Sub è un servizio di messaggistica asincrono che disaccoppia i servizi che producono messaggi dai servizi che li elaborano. Questa architettura è consigliata per i seguenti scenari di utilizzo:

  • L'app Chat è creata dietro un firewall.
  • L'app Chat riceve eventi relativi a uno spazio di Chat.
  • L'app Chat viene dispiattata nella tua organizzazione.
  • L'app Chat può inviare e ricevere messaggi sincroni e asincroni.
  • L'app Chat è sviluppata in qualsiasi linguaggio di programmazione.
  • L'app Chat richiede una gestione completa di DevOps e CI/CD.

Il seguente diagramma mostra l'architettura di un'app di chat creata con Pub/Sub:

Architettura di un'app di chat implementata con Pub/Sub.

Nel diagramma precedente, un utente che interagisce con un'app Chat Pub/Sub ha il seguente flusso di informazioni:

  1. Un utente invia un messaggio in Chat a un'app di Chat, in un messaggio diretto o in uno spazio di Chat oppure si verifica un evento in uno spazio di Chat per il quale l'app di Chat ha un'iscrizione attiva.

  2. Chat invia il messaggio a un argomento Pub/Sub.

  3. Un server applicazioni, ovvero un sistema cloud o on-premise che contiene la logica dell'app Chat, si iscrive all'argomento Pub/Sub per ricevere il messaggio tramite il firewall.

  4. Se vuoi, l'app Chat può chiamare l'API Chat per pubblicare messaggi in modo asincrono o eseguire altre operazioni.

Per iniziare, consulta Utilizzare Pub/Sub come endpoint per l'app Chat.

Webhook

Puoi creare un'app Chat che può inviare messaggi solo a uno spazio Chat specifico utilizzando chiamate a un URL di webhook di Chat. Questa architettura è consigliata per i seguenti casi d'uso:

  • L'app Chat viene dispiattata per il tuo team.
  • L'app Chat invia messaggi da un sistema esterno a un singolo spazio di Chat.

Con questa architettura, l'app Chat è limitata a un determinato spazio di Chat e non consente l'interazione degli utenti, come mostrato nel seguente diagramma:

Architettura per i webhook in arrivo per inviare messaggi asincroni a Chat.

Nel diagramma precedente, un'app Chat ha il seguente flusso di informazioni:

  1. La logica dell'app Chat riceve informazioni da servizi di terze parti esterni, come un sistema di gestione dei progetti o uno strumento per la gestione dei ticket.
  2. La logica dell'app Chat è ospitata in un sistema cloud o on-premise che può inviare messaggi utilizzando un URL webhook a uno spazio Chat specifico.
  3. Gli utenti possono ricevere messaggi dall'app Chat in quel determinato spazio Chat, ma non sono in grado di interagire con l'app.

Questo tipo di app di Chat non può essere condiviso in altri spazi di Chat o con altri team e non può essere pubblicato su Google Workspace Marketplace. I webhook in entrata sono consigliati per le app di chat per segnalare avvisi o stato o per alcuni tipi di prototipazione di app di chat.

Per iniziare, consulta la sezione Inviare messaggi a Chat con webhook.

Apps Script

Puoi creare la logica dell'app Chat interamente in JavaScript. Google Apps Script è una piattaforma di sviluppo low-code per le app di Chat. Apps Script gestisce il flusso di autorizzazione e i token OAuth 2.0 per l'autenticazione utente. Puoi utilizzare Apps Script per creare app di Chat pubbliche, ma questa opzione non è consigliata a causa di quote e limiti giornalieri.

Questa architettura è consigliata per i seguenti casi d'uso:

  • L'app Chat viene dispiattata per il tuo team o la tua organizzazione.
  • L'app Chat può inviare e ricevere tutti i pattern di messaggistica: inviare e ricevere messaggi sincroni, inviare messaggi asincroni e inviare messaggi da un sistema esterno.
  • L'app Chat richiede una gestione DevOps semplificata.

Questa architettura è utile per le app di chat che si integrano anche con altri servizi Google e Google Workspace, come Fogli Google, Presentazioni Google, Google Calendar, Google Drive, Google Maps e YouTube, come mostrato nel seguente diagramma:

Architettura di un'app di Chat implementata con Apps Script.

Nel diagramma precedente, un utente che interagisce con un'app Chat di Apps Script ha il seguente flusso di informazioni:

  1. Un utente invia un messaggio a un'app Chat, in un messaggio diretto o in uno spazio di Chat.
  2. La logica dell'app Chat implementata in Apps Script, che si trova in Google Cloud, riceve il messaggio.
  3. Facoltativamente, la logica dell'app Chat può essere integrata con i servizi Google Workspace, come Calendar o Fogli, o con altri servizi Google, come Google Maps o YouTube.
  4. La logica dell'app Chat invia una risposta al servizio dell'app Chat in Chat.
  5. La risposta viene inviata all'utente.

Per iniziare, consulta Creare un'app di Chat con Apps Script.

AppSheet

Puoi creare un'app di Chat condivisa a livello di dominio senza codice utilizzando AppSheet. Puoi semplificare il processo di sviluppo utilizzando la modalità di configurazione automatica e i modelli seguenti per creare azioni comuni per le app di chat. Tuttavia, alcune funzionalità dell'app web AppSheet non sono disponibili nelle app di Chat.

Questa architettura è consigliata per i seguenti casi d'uso:

  • L'app Chat viene implementata per te e il tuo team.
  • L'app Chat può inviare e ricevere messaggi sincronizzati e asincroni.
  • L'app Chat richiede una gestione DevOps semplificata.

Il seguente diagramma mostra l'architettura di un'app di chat creata con AppSheet:

Architettura di un'app di Chat implementata con AppSheet.

Nel diagramma precedente, un utente che interagisce con un'app Chat di AppSheet ha il seguente flusso di informazioni:

  1. Un utente invia un messaggio in Chat a un'app Chat, in un messaggio diretto o in uno spazio Chat.
  2. La logica dell'app Chat implementata in AppSheet, che si trova in Google Cloud, riceve il messaggio.
  3. Se vuoi, la logica dell'app Chat può essere integrata con i servizi Google Workspace, ad esempio Apps Script o Google Fogli.
  4. La logica dell'app Chat invia una risposta al servizio dell'app Chat in Chat.
  5. La risposta viene inviata all'utente.

Per iniziare, consulta Creare un'app di Chat con AppSheet.

Dialogflow

Puoi creare un'app di Chat con Dialogflow, una piattaforma di linguaggio naturale per conversazioni automatiche e risposte dinamiche. Questa architettura è consigliata per i seguenti casi d'uso:

  • L'app Chat può inviare e ricevere messaggi sincroni.
  • L'app Chat utilizza l'elaborazione del linguaggio naturale per rispondere e interagire con gli utenti.

Il seguente diagramma mostra l'architettura di un'app di chat creata con Dialogflow:

Architettura di un'app di chat implementata con Dialogflow.

Nel diagramma precedente, un utente che interagisce con un'app Dialogflow Chat ha il seguente flusso di informazioni:

  1. Un utente invia un messaggio in Chat a un'app Chat, in un messaggio diretto o in uno spazio Chat.
  2. Un agente virtuale Dialogflow, che si trova in Google Cloud, riceve e elabora il messaggio per produrre una risposta.
  3. Se vuoi, puoi utilizzare un webhook Dialogflow per consentire all'agente Dialogflow di interagire con servizi esterni di terze parti, come un sistema di gestione dei progetti o uno strumento per la creazione di ticket.
  4. L'agente Dialogflow invia una risposta al servizio dell'app Chat in Chat.
  5. La risposta viene inviata allo spazio di Chat.

Per iniziare, consulta la sezione Creare un'app Google Chat Dialogflow.

Applicazione o script a riga di comando

Puoi creare un'applicazione a riga di comando o uno script che invii messaggi a Chat o esegua altre operazioni, ad esempio la creazione di uno spazio o la gestione dei membri di uno spazio, senza consentire agli utenti di invocare o rispondere direttamente all'app Chat in Chat. Questa architettura è consigliata per i seguenti casi d'uso:

  • L'app Chat è sviluppata in qualsiasi linguaggio di programmazione.
  • L'app Chat può inviare solo messaggi asincroni.

Il seguente diagramma mostra l'architettura:

Architettura di un'app Chat implementata con un'applicazione a riga di comando o uno script.

Nel diagramma precedente, l'app Chat ha il seguente flusso di informazioni:

  1. L'app Chat chiama l'API Chat per inviare un messaggio o eseguire un'altra operazione.
  2. La chat esegue l'operazione richiesta.
  3. Se vuoi, l'app Chat stampa una conferma nella CLI.

Implementazione della logica dell'app di chat

Chat non limita il modo in cui implementi la logica dell'app Chat. Puoi creare un parser di comandi con sintassi fissa, utilizzare servizi o librerie di IA e elaborazione del linguaggio avanzate, iscriverti e rispondere a eventi o qualsiasi altro elemento appropriato per i tuoi obiettivi specifici.

Gestire le interazioni degli utenti

L'app Chat può ricevere e rispondere alle interazioni degli utenti in diversi modi. Un'interazione utente è qualsiasi azione intrapresa da un utente per invocare o interagire con un'app di chat.

Analizzatore dei comandi

Le app di chat basate su comandi esaminano il payload degli eventi di interazione con le app di chat, poi estraggono comandi e parametri da questi contenuti. Ad esempio, consulta Configurare i comandi con barra per interagire con gli utenti di Chat.

Un altro approccio consiste nel tokenizzare il messaggio, estrarre il comando e poi fare riferimento a un dizionario che mappa i comandi alle funzioni di gestore per ciascun comando.

Interfaccia utente basata su dialogo

Le app basate su dialoghi rispondono ai eventi di interazione con l'app Chat mostrando dialoghi basati su schede in cui l'utente può interagire con l'app Chat, ad esempio compilare moduli o richiedere azioni.

Ogni volta che l'utente esegue un'azione in una finestra di dialogo, viene inviato un nuovo evento di interazione all'app Chat, che può rispondere aggiornando la finestra di dialogo o inviando un messaggio.

Elaborazione del linguaggio naturale

Molte implementazioni di app di chat utilizzano l'elaborazione del linguaggio naturale (NLP) per determinare ciò che l'utente sta chiedendo. Esistono molti modi per implementare l'NLP e puoi scegliere come preferisci.

Puoi utilizzare la PNL nell'implementazione della tua app di chat con Dialogflow ES o con l'integrazione di Dialogflow CX Chat, che ti consente di creare agenti virtuali per conversazioni automatiche e risposte dinamiche.

Inviare richieste in modo proattivo a Chat

Le app di chat possono anche inviare messaggi o altre richieste a Chat, che non vengono attivate da interazioni dirette degli utenti in Chat. Queste app di Chat possono essere attivate, ad esempio, da applicazioni di terze parti o tramite un utente che richiama la riga di comando, ma gli utenti non possono interagire con queste app di Chat direttamente in Chat.

Le app di Chat non interattive utilizzano l'API Chat per inviare messaggi o altri tipi di richieste a Chat.

Pattern di conversazione

Devi considerare in che modo vuoi che la tua app Chat interagisca con gli utenti. Le sezioni seguenti descrivono i pattern di conversazione che la tua app Chat potrebbe implementare.

Chiamata e risposta (sincrona)

In un modello di chiamata e risposta sincrono, l'app Chat risponde ai messaggi degli utenti su base individuale. Un messaggio inviato dall'app Chat da un utente genera una risposta dall'app Chat, come mostrato nel seguente diagramma:

Architettura di un messaggio sincrono.

Nel diagramma precedente, un utente che interagisce con un'app di chat ha il seguente flusso di informazioni:

  1. Un utente invia un messaggio sincrono a un'app di chat, ad esempio "Qual è la mia prossima riunione?".
  2. L'app Chat invia un messaggio sincrono all'utente, ad esempio "Dott. Silva alle 14:30".

Per questo tipo di pattern di conversazione, puoi implementare un'architettura di app di chat utilizzando un servizio web, Pub/Sub, Apps Script, AppSheet o Dialogflow.

Più risposte (asincrone)

Il pattern di più risposte può includere messaggi sincroni e asincroni. Questo pattern è caratterizzato da una comunicazione bidirezionale tra gli utenti e l'app Chat, con l'app Chat che genera un numero qualsiasi di messaggi aggiuntivi, come mostrato nel seguente diagramma:

Architettura di un messaggio asincrono.

Nel diagramma precedente, un utente che interagisce con un'app di chat ha il seguente flusso di informazioni:

  1. Un utente invia un messaggio sincrono a un'app di chat, ad esempio "Monitora il traffico".
  2. L'app Chat invia un messaggio sincrono all'utente per confermare la richiesta, ad esempio "Monitoraggio attivo".
  3. In seguito, l'app Chat invia uno o più messaggi asincroni all'utente chiamando l'API REST, ad esempio "Nuovo traffico".
  4. L'utente invia un messaggio sincrono aggiuntivo all'app Chat, ad esempio "Ignora traffico".
  5. L'app Chat invia un messaggio sincrono all'utente per confermare la richiesta, ad esempio "Monitoraggio disattivato".

Per questo tipo di pattern di conversazione, puoi implementare un'architettura di app di chat utilizzando un servizio web, Pub/Sub, Apps Script o AppSheet.

Esegui query o iscriviti agli eventi (asincroni)

In un pattern basato su eventi asincroni, l'app Chat riceve gli eventi eseguendo una query sull'API Chat o creando un abbonamento a uno spazio o a un utente di Chat utilizzando l'API Google Workspace Events. Gli eventi rappresentano le modifiche alle risorse di Chat, ad esempio quando viene pubblicato un nuovo messaggio o quando un utente si unisce a uno spazio. Le app di Chat basate su eventi esaminano il payload dell'evento per ottenere dati sulla risorsa Chat modificata, quindi rispondono di conseguenza.

Le app di chat possono ricevere molti tipi di eventi, tra cui quelli relativi a spazi, abbonamenti, messaggi e reazioni. Quando un'app Chat riceve un evento eseguendo una query sull'API Chat o tramite un abbonamento attivo, può facoltativamente generare un numero qualsiasi di risposte asincrone, che restituisce a Chat utilizzando l'API Chat.

Puoi utilizzare questo tipo di logica per aggiornare sistemi esterni, ad esempio un sistema di gestione dei ticket, o inviare messaggi in modo asincrono a uno spazio di Chat, ad esempio inviando un messaggio di benvenuto quando un nuovo utente si unisce a uno spazio di Chat.

Il seguente diagramma mostra un esempio di pattern di conversazione basato su eventi:

Architettura di una sottoscrizione agli eventi di Chat

Nel diagramma precedente, l'interazione tra Chat e l'app Chat ha il seguente flusso di informazioni:

  1. L'app Chat si iscrive a uno spazio di Google Chat.
  2. Lo spazio a cui è sottoscritta l'app Chat cambia.
  3. L'app Chat pubblica un evento in un argomento Pub/Sub, che funge da endpoint di notifica per l'iscrizione. L'evento contiene i dati sulle modifiche apportate alla risorsa.
  4. L'app Chat elabora il messaggio Pub/Sub contenente l'evento e, se necessario, interviene.

Per questo tipo di pattern di conversazione, puoi implementare un'architettura di app di Chat utilizzando Pub/Sub, un servizio web o Apps Script.

Per scoprire di più su come ricevere e rispondere agli eventi, consulta Lavorare con gli eventi di Google Chat.

Messaggio unidirezionale da un'app di chat

Un messaggio unidirezionale di un pattern di app di Chat consente a un'app di Chat di inviare messaggi asincroni in uno spazio di Chat, ma non consente agli utenti di interagire direttamente con l'app di Chat. Questo pattern non è conversazionale o interattivo, ma può essere utile per attività come la generazione di report di allarmi, come mostrato nel seguente diagramma:

Architettura di un messaggio unidirezionale.

Nel diagramma precedente, un utente nello stesso spazio dell'app Chat ha il seguente flusso di informazioni:

  • L'app Chat invia un messaggio asincrono all'utente chiamando l'API Chat o pubblicando su un URL webhook, ad esempio "Avviso di overflow della coda".
  • Se vuoi, l'app Chat invia messaggi asincroni aggiuntivi.

Per questo tipo di pattern di conversazione, puoi implementare un'architettura di app di chat utilizzando un servizio web, un webhook, Apps Script, AppSheet, un'applicazione a riga di comando o uno script.

Messaggio unidirezionale a un'app di chat

Un messaggio unidirezionale a un pattern di app di Chat consente a un utente di inviare un messaggio a un'app di Chat senza che l'app risponda, continuando a elaborare la richiesta. Sebbene questa architettura sia tecnicamente possibile, comporta un'esperienza utente scadente e sconsigliamo vivamente di adottarla.