Se hai creato e pubblicato un'app Google Chat che utilizza eventi di interazione dell'API Google Chat, ad esempio una basata sulla guida rapida dell'app Google Chat, questa pagina mostra come convertirla in un componente aggiuntivo di Google Workspace che estende Google Chat.
Con la conversione, la tua app Google Chat può utilizzare il framework dei componenti aggiuntivi di Google Workspace, aprendo nuove possibilità di integrazione e funzionalità all'interno di Google Chat e in Google Workspace. Ad esempio, invece di due distribuzioni, una per l'app Google Chat e una per il componente aggiuntivo Google Workspace, puoi distribuire un unico componente aggiuntivo Google Workspace tramite Google Workspace Marketplace che estende le app di chat insieme ad altre applicazioni host di Google Workspace, come Gmail, Calendar e Documenti.
Limitazioni
Prima di iniziare la conversione, esamina le limitazioni dei componenti aggiuntivi di Google Workspace che estendono Google Chat per assicurarti che la tua app Google Chat possa essere convertita senza perdere funzionalità essenziali.
Passaggio 1: copia il codice dell'app Google Chat esistente
Il processo di conversione richiede modifiche al codice. Per evitare di influire sulla tua app Google Chat live, crea e lavora su una copia del codice.
Apps Script
- Apri il progetto Google Apps Script dell'app Google Chat esistente.
- A sinistra, fai clic su Panoramica .
- A destra, fai clic su Crea una copia .
- A sinistra, fai clic su Impostazioni progetto .
- Nella sezione Progetto Google Cloud, fai clic su Cambia progetto.
- Inserisci lo stesso numero di progetto associato al tuo progetto dell'app Google Chat esistente.
- Fai clic su Imposta progetto.
HTTP
Crea un fork o una copia del codebase esistente ed esegui il deployment come nuovo servizio, separato dall'app Google Chat live.
Se la tua app è implementata su Google Cloud e si basa su funzionalità legate al progetto Google Cloud (ad esempio, l'identità App Engine predefinita), il nuovo codice deve essere implementato su un servizio associato al progetto dell'app Google Chat esistente.
Passaggio 2: modifica il codice copiato
I componenti aggiuntivi di Google Workspace che estendono l'utilizzo di Google Chat utilizzano strutture di richiesta e
risposta diverse rispetto alle app Google Chat create con
eventi di interazione dell'API Chat. Devi
aggiornare il codice per utilizzare il componente aggiuntivo Google Workspace
EventObject
anziché l'API Google Chat
Event
per richieste e risposte.
Utilizza la guida alla conversione del codice per modificare il codice.
Passaggio 3: attiva la configurazione del componente aggiuntivo Google Workspace per gli utenti di test
Utilizza la console Google Cloud per configurare le impostazioni del componente aggiuntivo Google Workspace per la tua app Google Chat:
Vai alla pagina di configurazione dell'API Google Chat nella console Google Cloud.
In Funzionalità interattive, fai clic su Converti in componente aggiuntivo.
Attiva Attiva le impostazioni di configurazione del componente aggiuntivo.
Nella sezione Visibilità, aggiungi gli indirizzi email degli utenti di test.
Se necessario, aggiorna le impostazioni di connessione con l'URL dell'endpoint di deployment o l'ID deployment di Apps Script del codice dell'app Google Chat copiato e modificato nel passaggio 2.
Fai clic su Salva e testa.
Passaggio 4: testa l'app convertita
Testa a fondo la funzionalità del componente aggiuntivo Google Workspace utilizzando gli account utente di test configurati nel passaggio 3. Verifica tutte le funzionalità e le interazioni.
Passaggio 5: completa la conversione per tutti gli utenti
Dopo aver verificato che il componente aggiuntivo Google Workspace convertito funzioni correttamente, puoi renderlo disponibile a tutti gli utenti.
Vai alla pagina di configurazione dell'API Google Chat nella console Google Cloud.
In Funzionalità interattive, fai clic su Converti in componente aggiuntivo. Si apre un riquadro laterale.
Nel riquadro laterale, fai clic su Converti in componente aggiuntivo.
Digita l'ID progetto e fai clic su Converti.
La tua app di Google Chat ora è un componente aggiuntivo di Google Workspace che estende Google Chat.
(Facoltativo) Esegui la pulizia o libera le risorse Google Cloud inutilizzate
Se vuoi, dopo aver convertito la tua app Google Chat in un componente aggiuntivo di Google Workspace, per evitare che al tuo account Google Cloud vengano addebitati costi relativi alle risorse utilizzate dall'app Google Chat che non sono più in uso, valuta la possibilità di disattivarle.
Guida alla conversione del codice
Questa sezione descrive in dettaglio il mapping tra il formato dell'interazione dell'API Google Chat
Event
e il formato del componente aggiuntivo di Google Workspace
EventObject.
Mappatura delle richieste
La seguente tabella mostra come i campi dell'API Google Chat
Event
vengono mappati ai campi corrispondenti del componente aggiuntivo Google Workspace
EventObject.
Campo Interazione API Google Chat Event |
Campo EventObject del componente aggiuntivo di Google Workspace |
Note |
|---|---|---|
action.actionMethodName |
N/D | Per le interazioni con la carta, il nome del metodo può essere passato come parametro in commonEventObject.parameters. Vedi Aprire una finestra di dialogo iniziale. |
action.parameters |
commonEventObject.parameters |
|
appCommandMetadata |
chat.appCommandPayload.appCommandMetadata |
|
common |
commonEventObject |
|
configCompleteRedirectUrl |
|
Disponibile in diversi payload a seconda del tipo di evento. |
dialogEventType |
|
Disponibile in diversi payload a seconda del tipo di evento. |
eventTime |
chat.eventTime |
|
isDialogEvent |
|
Disponibile in diversi payload a seconda del tipo di evento. |
message |
|
Disponibile in diversi payload a seconda del tipo di evento. |
space |
|
|
thread |
|
Disponibile in diversi payload a seconda del tipo di evento. |
threadKey |
|
Disponibile in diversi payload a seconda del tipo di evento. |
token |
N/D | La verifica viene gestita in modo diverso. Consulta Richiedere la verifica per le app HTTP. |
type |
N/D | Il tipo di evento può essere dedotto dal trigger. |
user |
chat.user |
Mappatura delle richieste per caso d'uso
La tabella seguente mostra le differenze nei payload delle richieste per i casi d'uso comuni tra le app Google Chat create con eventi di interazione dell'API Chat e i componenti aggiuntivi di Google Workspace che estendono Google Chat.
| Caso d'uso | Payload di interazione dell'API Chat Event |
Payload del componente aggiuntivo di Google Workspace EventObject |
|---|---|---|
| App aggiunta allo spazio | { "type": "ADDED_TO_SPACE", "space": { ... } } |
{ "chat": { "addedToSpacePayload": { "space": { ... } } } } |
| Rimuovere un'app da uno spazio | { "type": "REMOVED_FROM_SPACE", "space": { ... } } |
{ "chat": { "removedFromSpacePayload": { "space": { ... } } } } |
| L'utente @menziona un'app | { "type": "MESSAGE", "message": { ... }, "space": { ... }, "configCompleteRedirectUrl": "..." } |
{ "chat": { "messagePayload": { "message": { ... }, "space": { ... }, "configCompleteRedirectUri": "..." } } } |
| L'utente @menziona un'app per aggiungerla allo spazio | Devi gestire una richiesta da Google Chat:{ "type": "ADDED_TO_SPACE", "space": { ... }, "message": { ... } } |
Devi gestire due richieste da Google Chat. Prima richiesta: { "chat": { "addedToSpacePayload": { "space": { ... }, "interactionAdd": true } } } Seconda richiesta: { "chat": { "messagePayload": { "message": { ... }, "space": { ... } } } } |
| Comando slash | { "type": "MESSAGE", "message": { "slashCommand": { ... } }, "space": { ... } } |
{ "chat": { "appCommandPayload": { "message": { ... }, "space": { ... }, "appCommandMetadata": { ... } } } } |
| Comando slash per aggiungere un'app allo spazio | Devi gestire una richiesta da Google Chat:{ "type": "ADDED_TO_SPACE", "space": { ... }, "message": { "slashCommand": { ... } } } |
Devi gestire due richieste da Google Chat. Prima richiesta: { "chat": { "addedToSpacePayload": { "space": { ... }, "interactionAdd": true } } } Seconda richiesta: { "chat": { "appCommandPayload": { "message": { ... }, "space": { ... }, "appCommandMetadata": { ... } } } } |
| L'utente fa clic su un pulsante di una scheda o di una finestra di dialogo | { "type": "CARD_CLICKED", "common": { ... }, "space": { ... }, "message": { ... }, "isDialogEvent": "...", "dialogEventType": "..." } Per gli eventi di dialogo, { "type": "CARD_CLICKED", "common": { "formInputs": { "contactName": { "": { "stringInputs": { "value": ["Kai 0"] }} } } }, "space": { ... }, "message": { ... }, "isDialogEvent": true, "dialogEventType": "..." } |
{ "commonEventObject": { ... }, "chat": { "buttonClickedPayload": { "message": { ... }, "space": { ... }, "isDialogEvent": "...", "dialogEventType": "..." } } } Per gli eventi di dialogo, { "commonEventObject": { "formInputs": { "contactName": { "stringInputs": { "value": ["Kai 0"] } } } }, "chat": { "buttonClickedPayload": { "message": { ... }, "space": { ... }, "isDialogEvent": "true", "dialogEventType": "..." } } } |
| L'utente invia informazioni in una scheda della home page dell'app | { "type": "SUBMIT_FORM", "common": { ... }, "space": { ... }, "message": { ... }, "isDialogEvent": "...", "dialogEventType": "..." } |
{ "commonEventObject": { ... }, "chat": { "buttonClickedPayload": { "message": { ... }, "space": { ... }, "isDialogEvent": "...", "dialogEventType": "SUBMIT_DIALOG" } } } |
| L'utente richiama un comando dell'app utilizzando un comando rapido | { "type": "APP_COMMAND", "space": { ... }, "isDialogEvent": "...", "dialogEventType": "..." } |
{ "chat": { "appCommandPayload": { "message": { ... }, "space": { ... }, "appCommandMetadata": { ... } } } } |
| Anteprima link | { "type": "MESSAGE", "message": { "matchedUrl": "..." }, "space": { ... } } |
{ "chat": { "messagePayload": { "message": { "matchedUrl": "..." }, "space": { ... } } } } |
| L'utente aggiorna un widget in un messaggio della scheda o in una finestra di dialogo | { "type": "WIDGET_UPDATED", "space": { ... }, "common": { ... } } |
{ "commonEventObject": { ... }, "chat": { "widgetUpdatedPayload": { "space": { ... } } } } |
Mappatura delle risposte per caso d'uso
I componenti aggiuntivi di Google Workspace che estendono Google Chat restituiscono azioni anziché un oggetto
Message. La tabella seguente mappa i tipi di risposta Message dell'API Google Chat
alle azioni equivalenti dei componenti aggiuntivi di Google Workspace.
| Caso d'uso | Risposta dell'API Google Chat Message |
Risposta dell'azione di Chat del componente aggiuntivo di Google Workspace |
|---|---|---|
| Creare un messaggio nello spazio richiamato | { "actionResponse": { "type": "NEW_MESSAGE" }, "text": "..." }
|
{ "hostAppDataAction": { "chatDataAction": { "createMessageAction": { "message": { "text": "..." } } } } } Per saperne di più, consulta Inviare un messaggio. |
| Aggiornare un messaggio | { "actionResponse": { "type": "UPDATE_MESSAGE" }, "text": "..." } Per saperne di più, vedi Aggiornare un messaggio (Chat). |
{ "hostAppDataAction": { "chatDataAction": { "updateMessageAction": { "message": { "text": "..." } } } } } Per saperne di più, consulta Aggiornare un messaggio (componenti aggiuntivi). |
| Anteprima link | { "actionResponse": { "type": "UPDATE_USER_MESSAGE_CARDS" }, "cardsV2": [{ ... }] } Per saperne di più, vedi Visualizzare l'anteprima di un link (Chat). |
{ "hostAppDataAction": { "chatDataAction": { "updateInlinePreviewAction": { "cardsV2": [{ ... }] } } } } Per saperne di più, consulta Visualizzare l'anteprima di un link(componenti aggiuntivi). |
| Apri una finestra di dialogo iniziale | { "actionResponse": { "type": "DIALOG", "dialogAction": { "dialog": { "body": { /* Card object */ } } } } } Per saperne di più, vedi Aprire una finestra di dialogo (Chat). |
{ "action": { "navigations": [{ "pushCard": { /* Card object */ } }] } } La scheda che invii può contenere widget con azioni onClick. Per i componenti aggiuntivi di Google Workspace HTTP, configura queste azioni per chiamare un endpoint di funzione: { "onClick": { "action": { "function": "https://...", "parameters": [{ "key": "clickedButton", "value": "submit" }] } } } Per saperne di più, consulta Aprire una finestra di dialogo (componenti aggiuntivi). |
| Chiudere una finestra di dialogo | { "actionResponse": { "type": "DIALOG", "dialogAction": { "actionStatus": { "userFacingMessage": "..." } } } } Per saperne di più, vedi Chiudere una finestra di dialogo (Chat). |
{ "action": { "navigations": [{ "endNavigation": "CLOSE_DIALOG" }], "notification": { "text": "..."} } } Per saperne di più, vedi Chiudere una finestra di dialogo (componenti aggiuntivi). |
| Connettersi a un sistema esterno (richiedi configurazione) | { "actionResponse": { "type": "REQUEST_CONFIG", "url": "..." } } Per saperne di più, consulta Connettersi a un sistema esterno. |
{ "basic_authorization_prompt": { "authorization_url": "...", "resource": "..." } } Per saperne di più, vedi Collegare il componente aggiuntivo di Google Workspace a un servizio di terze parti. |
| Elementi del completamento automatico sui widget interattivi | { "actionResponse": { "type": "UPDATE_WIDGET", "updatedWidget": { "suggestions": { "items": ["..."] }, "widget": "widget_id" } } } Per saperne di più, vedi Aggiungere un menu a selezione multipla. |
{ "action": { "modifyOperations": [{ "updateWidget": { "widgetId": "widget_id", "selectionInputWidgetSuggestions": { "suggestions": ["..."] } } }] } } Per saperne di più, vedi Raccogliere ed elaborare le informazioni degli utenti di Google Chat. |
Gestire le interazioni con le schede nei messaggi creati prima della conversione
Quando converti un'app Google Chat HTTP in un componente aggiuntivo di Google Workspace, le interazioni con le schede sui messaggi creati prima della conversione richiedono una gestione speciale. I componenti aggiuntivi di Google Workspace utilizzano un URL HTTP completo per action.function di una scheda, mentre le app Google Chat create con gli eventi di interazione dell'API Google Chat utilizzano un nome di funzione. La seguente tabella riassume queste differenze.
| App Google Chat creata con gli eventi di interazione dell'API Google Chat | Componente aggiuntivo di Google Workspace che estende Google Chat | |
|---|---|---|
| Configurazione | Configura un singolo endpoint per tutti gli eventi nella console Google Cloud. Quando implementi le interazioni con le schede, action di una scheda contiene solo il nome della funzione da eseguire. L'endpoint HTTP comune viene richiamato per gli eventi di clic sulle schede.
Per saperne di più, vedi Aprire una finestra di dialogo (Chat). { "onClick": { "action": { "function": "submit" } } } |
Puoi configurare facoltativamente gli endpoint per evento nella console Google Cloud, ma non sono inclusi gli eventi di clic sulle schede. Quando implementi le interazioni con le schede, l'action di una scheda deve contenere l'URL completo dell'endpoint HTTP da richiamare. Puoi impostare un endpoint HTTP univoco per pulsante oppure utilizzare un endpoint comune e trasmettere l'azione come parametro in action.parameters.
Per saperne di più, consulta Aprire una finestra di dialogo (componenti aggiuntivi). { "onClick": { "action": { "function": "https://...", "parameters": [{ "key": "method", "value": "submit" }] } } } |
Per assicurarti che le interazioni con le schede funzionino per i messaggi creati prima della conversione, configura un URL di interazione con le schede nella pagina di configurazione dell'API Google Chat.
Questo URL viene utilizzato solo per le interazioni sui messaggi creati prima della conversione dell'app. Quando un utente interagisce con uno di questi messaggi, il valore action.function originale viene trasmesso come parametro denominato __action_method_name__.
Esempio: clic sulla scheda
Se hai configurato l'URL interazione scheda come https://.../card-interaction-handler e un utente fa clic su una scheda in un messaggio storico con la seguente azione:
{
"onClick": {
"action": {
"function": "submit"
}
}
}
Un evento viene inviato all'URL di interazione con la scheda configurato nel seguente formato:
{
"commonEventObject": {
"parameters": {
"__action_method_name__": "submit"
}
},
"chat": {
"buttonClickedPayload": { ... }
}
}
Esempio: menu multiselezione
Se un utente interagisce con un menu a selezione multipla con un'origine dati esterna:
{
"selectionInput": {
"name": "contacts",
"type": "MULTI_SELECT",
"externalDataSource": {
"function": "getContacts"
}
}
}
Un evento viene inviato all'URL di interazione con la scheda configurato nel seguente formato:
{
"commonEventObject": {
"parameters": {
"__action_method_name__": "getContacts",
}
},
"chat": {
"widgetUpdatedPayload": { ... }
}
}
Se attivi l'opzione Utilizza un URL dell'endpoint HTTP comune per tutti i trigger per i trigger HTTP, l'URL comune viene utilizzato anche per gli eventi Pulsante cliccato.
Verificare le richieste per i componenti aggiuntivi HTTP di Google Workspace che estendono Chat
Per le app Google Chat basate su HTTP, la logica per verificare che le richieste provengano da Google deve essere aggiornata durante la conversione in un componente aggiuntivo di Google Workspace.
- Evento di interazione dell'API Google Chat Verifica HTTP dell'app Google Chat: Verifica le richieste da Google Chat
- Verifica HTTP del componente aggiuntivo Google Workspace: Verifica delle richieste di Google
Le principali differenze nella verifica delle richieste sono:
| Tipo di app | Pubblico supportato | Email del service account |
|---|---|---|
| App Google Chat creata con gli eventi di interazione dell'API Google Chat | Numero progetto | chat@system.gserviceaccount.com |
| Componente aggiuntivo di Google Workspace che estende Google Chat | Solo endpoint HTTP | Email del service account per progetto |
L'indirizzo email univoco dell'account di servizio per il tuo componente aggiuntivo Google Workspace si trova nella sezione Converti in componenti aggiuntivi Google Workspace della pagina di configurazione dell'API Google Chat nella console Google Cloud.
Per verificare le richieste nel componente aggiuntivo di Google Workspace di cui hai eseguito l'upgrade:
- Se utilizzi Cloud Run Functions, concedi il ruolo
roles/cloudfunctions.invokeral service account per componente aggiuntivo. Consulta Autorizzare l'accesso con IAM. - Aggiorna il codice di verifica del token per utilizzare l'email dell'account del servizio di componenti aggiuntivi Google Workspace per verificare la firma del token Bearer. Vedi Convalida le richieste di Google.