Questa guida descrive gli errori comuni relativi alle schede che potresti riscontrare e come risolverli.
Utilizza lo strumento per la creazione di schede per progettare e visualizzare l'anteprima di interfacce utente e messaggistica per le app di chat:
Apri lo strumento per la creazione di schedeCome vengono visualizzati gli errori delle schede
Gli errori delle schede si manifestano in diversi modi:
- Una parte di una scheda, ad esempio un widget o un componente, non viene visualizzata o viene visualizzata in modo imprevisto.
- L'intera scheda non viene visualizzata.
- Una finestra di dialogo si chiude, non si apre o non si carica.
Se riscontri un comportamento simile, significa che è presente un errore nella scheda della tua app.
Come riferimento: un messaggio e una finestra di dialogo della scheda funzionanti e senza errori
Prima di esaminare gli esempi di schede errate, considera prima questo messaggio e questa finestra di dialogo della scheda funzionante. Per illustrare ogni esempio di errore e la relativa correzione, il JSON di questa scheda viene modificato introducendo errori.
Un messaggio relativo a una carta senza errori
Ecco il messaggio della scheda funzionante e privo di errori che fornisce i dati di contatto e include un'intestazione, sezioni e widget come testo decorato e pulsanti:
Una finestra di dialogo senza errori
Ecco la finestra di dialogo funzionante e senza errori che crea un contatto raccogliendo informazioni dagli utenti, con un piè di pagina e widget modificabili come input di testo, pulsanti e pulsanti di attivazione/disattivazione:
Errore: parte di una scheda non viene visualizzata
A volte le schede vengono visualizzate, ma una parte che ti aspettavi di vedere non viene visualizzata. Le cause più probabili sono:
- Manca un campo JSON obbligatorio.
- Un campo JSON contiene un errore ortografico o le lettere iniziali sono in maiuscolo in modo errato.
Causa: manca un campo JSON obbligatorio
In questo esempio di errore, manca un campo JSON obbligatorio, title
. Di conseguenza, la scheda viene visualizzata, ma non le parti che dovrebbero essere visualizzate. Può essere difficile prevedere il rendering delle schede quando i campi obbligatori vengono omessi.
Per correggere questo errore, aggiungi il campo JSON richiesto; in questo esempio, title
.
Per sapere se un campo JSON è obbligatorio o meno, consulta la documentazione di riferimento di Cards v2. In questo esempio, fai riferimento alla descrizione del campo title
in CardHeader
.
Di seguito sono riportati due esempi:
Esempio 1: se specifichi subtitle
, ma ometti title
obbligatorio, l'intera intestazione viene visualizzata vuota:
Visualizza snippet JSON della scheda errato
Errore: in header
manca un campo obbligatorio, title
.
. . . "header": { "subtitle": "Software Engineer" } . . .
Visualizza lo snippet JSON corretto della scheda
È stato risolto il problema: il campo obbligatorio title
fa parte della specifica header
.
. . . "header": { "title": "Sasha", "subtitle": "Software Engineer" } . . .
Esempio 2: se specifichi subtitle
, imageUrl
, imageType
e imageAltText
, ma ometti title
obbligatorio, l'immagine viene visualizzata come previsto, ma non il sottotitolo:
Visualizzare lo snippet JSON della scheda errato
Errore: in header
manca un campo obbligatorio, title
.
. . . "header": { "subtitle": "Software Engineer", "imageUrl": "https://developers.google.com/chat/images/quickstart-app-avatar.png", "imageType": "CIRCLE", "imageAltText": "Avatar for Sasha", } . . .
Visualizza lo snippet JSON corretto della scheda
È stato risolto il problema: il campo obbligatorio title
fa parte della specifica header
.
. . . "header": { "title": "Sasha", "subtitle": "Software Engineer", "imageUrl": "https://developers.google.com/chat/images/quickstart-app-avatar.png", "imageType": "CIRCLE", "imageAltText": "Avatar for Sasha", } . . .
Causa: JSON scritto in modo errato o con lettere maiuscole
In questo esempio di errore, la scheda JSON include tutti i campi richiesti, ma un campo, imageUrl
, è scritto in maiuscolo erroneamente come imageURL
(R
maiuscolo L
maiuscolo), il che causa un errore: l'immagine a cui rimanda non viene visualizzata.
Per correggere questo errore e altri simili, utilizza la formattazione JSON corretta. In questo caso, imageUrl
è corretto. In caso di dubbi, controlla il codice JSON della scheda con il documento di riferimento della scheda.
Visualizzare lo snippet JSON della scheda errato
Errore: le lettere maiuscole del campo imageURL
non sono corrette. Deve essere imageUrl
.
. . . "header": { "title": "Sasha", "subtitle": "Software Engineer", "imageURL": "https://developers.google.com/chat/images/quickstart-app-avatar.png", "imageType": "CIRCLE", "imageAltText": "Avatar for Sasha", } . . .
Visualizza lo snippet JSON corretto della scheda
È stato risolto il problema: le lettere maiuscole del campo imageUrl
sono corrette.
. . . "header": { "title": "Sasha", "subtitle": "Software Engineer", "imageUrl": "https://developers.google.com/chat/images/quickstart-app-avatar.png", "imageType": "CIRCLE", "imageAltText": "Avatar for Sasha", } . . .
Errore: un'intera scheda non viene visualizzata
A volte la scheda stessa non viene visualizzata. Le cause più probabili sono:
- Un widget
ButtonList
è specificato in modo errato. - Un widget
CardFixedFooter
ha un pulsante specificato in modo errato.
Causa: buttonList
o cardFixedFooter
specificati in modo errato
Se un messaggio o una finestra di dialogo della scheda include un widget ButtonList
o un widget CardFixedFooter
con pulsanti specificati in modo errato, l'intera scheda non viene visualizzata e al suo posto non viene visualizzato nulla. Le specifiche errate possono includere campi mancanti, campi con ortografia o maiuscole errate o JSON strutturato in modo improprio, ad esempio una virgola, una virgolette o una parentesi graffa mancante.
Per correggere questo errore, controlla il file JSON della scheda in base al documento di riferimento della scheda. In particolare, confronta i widget ButtonList
con la guida ai widget ButtonList
.
Esempio: in una ButtonList
guida ai widget, il passaggio di un'azione onClick
incompleta nel primo pulsante impedisce il rendering dell'intera scheda.
Visualizzare lo snippet JSON della scheda errato
Errore: l'oggetto onClick
non ha campi specificati, pertanto l'intera scheda non viene visualizzata.
. . . { "buttonList": { "buttons": [ { "text": "Share", "onClick": { } } }, { "text": "Edit", "onClick": { "action": { "function": "goToView", "parameters": [ { "key": "viewType", "value": "EDIT", } ], } } }, ], }, } . . .
Visualizzare lo snippet JSON corretto della scheda
È stato risolto il problema: l'oggetto onClick
ora ha un campo openLink
, quindi la scheda viene visualizzata come previsto.
. . . { "buttonList": { "buttons": [ { "text": "Share", "onClick": { "openLink": { "url": "https://example.com/share", } } }, { "text": "Edit", "onClick": { "action": { "function": "goToView", "parameters": [ { "key": "viewType", "value": "EDIT", } ], } } }, ], }, } . . .
Errore: una finestra di dialogo si chiude, si blocca o non si apre
Se una finestra di dialogo si chiude in modo imprevisto, non si carica o non si apre, la causa probabile è un problema con l'interfaccia della scheda.
Ecco le cause più comuni:
- Il widget
CardFixedFooter
non haprimaryButton
. - Un pulsante nel widget
CardFixedFooter
non ha un'azioneonClick
o l'azioneonClick
non è specificata correttamente. - In un widget
TextInput
manca un camponame
.
Causa: CardFixedFooter
non ha primaryButton
Nelle finestre di dialogo con un widget CardFixedFooter
, è necessario specificare un primaryButton
con testo e colore. Se ometti primaryButton
o lo imposti in modo errato, l'intera finestra di dialogo non viene visualizzata.
Per correggere questo errore, assicurati che il widget CardFixedFooter
includa un primaryButton
specificato correttamente.
Visualizzare lo snippet JSON della scheda errato
Errore: nell'oggetto fixedFooter
non è specificato alcun campo primaryButton
, pertanto la finestra di dialogo non riesce a caricarsi o aprirsi.
. . . "fixedFooter": { "onClick": { . . . }, "secondaryButton": { . . . } } } . . .
Visualizzare lo snippet JSON corretto della scheda
Risolto: ora fixedFooter
ha un campo primaryButton
specificato, quindi la finestra di dialogo funziona come previsto.
. . . "fixedFooter": { "primaryButton": { "text": "Submit", "color": { "red": 0, "blue": 1, "green": 0 }, "onClick": { . . . }, "secondaryButton": { . . . } } } . . .
Causa: impostazione errata di onClick
in FixedFooter
Nelle finestre di dialogo con un widget CardFixedFooter
, specificare erroneamente l'impostazione onClick
su un pulsante o ometterla causa la chiusura, il mancato caricamento o la mancata apertura della finestra di dialogo.
Per correggere questo errore, assicurati che ogni pulsante includa un'impostazione onClick
specificata correttamente.
Visualizzare lo snippet JSON della scheda errato
Errore: l'oggetto primaryButton
ha un campo onClick
con un array "parameters" scritto male, causando il mancato caricamento o l'apertura della finestra di dialogo.
. . . "fixedFooter": { "primaryButton": { "text": "Submit", "color": { "red": 0, "blue": 1, "green": 0 }, "onClick": { "action": { "function": "setLanguageType", "parrammetters": [ { "key": "languageType", "value": "C++" } ] } } }, "secondaryButton": { "text": "Cancel", "onClick": { "action": { "function": "reset" } } } } . . .
Visualizzare lo snippet JSON corretto della scheda
Risolto: l'oggetto primaryButton
ha un campo onClick
con un array "parameters" scritto correttamente, quindi la finestra di dialogo funziona come previsto.
. . . "fixedFooter": { "primaryButton": { "text": "Submit", "color": { "red": 0, "blue": 1, "green": 0 }, "onClick": { "action": { "function": "setLanguageType", "parameters": [ { "key": "languageType", "value": "C++" } ] } } }, "secondaryButton": { "text": "Cancel", "onClick": { "action": { "function": "reset" } } } } . . .
Causa: TextInput
non ha name
Se una finestra di dialogo include un widget TextInput
che esclude il campo name
, la finestra di dialogo non si comporta come previsto. Potrebbe chiudersi, aprirsi ma non caricarsi o non aprirsi.
Per correggere questo errore, assicurati che ogni widget TextInput
includa un campo name
appropriato. Assicurati che ogni campo name
nella scheda sia univoco.
Visualizzare lo snippet JSON della scheda errato
Errore: l'oggetto textInput
non ha un campo name
specificato, causando la chiusura, il mancato caricamento o l'apertura della finestra di dialogo.
. . . { "textInput": { "label": "Name", "type": "SINGLE_LINE", } } . . .
Visualizzare lo snippet JSON corretto della scheda
Risolto: ora textInput
ha un campo name
specificato, quindi la finestra di dialogo funziona come previsto.
. . . { "textInput": { "label": "Name", "type": "SINGLE_LINE", "name": "contactName" } } . . .
Le azioni di apertura, invio o annullamento della finestra di dialogo non vanno a buon fine con un'architettura dell'app asincrona
Se l'app Chat restituisce il messaggio di erroreCould not load dialog. Invalid response returned by bot.
durante l'utilizzo delle dialoghe, è possibile che l'app utilizzi un'architettura asincrona, come Cloud Pub/Sub o il metodo dell'API Create Message.
L'apertura, l'invio o l'annullamento di un dialogo richiede una risposta sincrona da un'app di chat con un DialogEventType
.
Di conseguenza, le conversazioni non sono supportate dalle app
costruite con un'architettura asincrona.
Come soluzione alternativa, valuta la possibilità di utilizzare un messaggio della scheda anziché una finestra di dialogo.
Altri errori relativi a schede e finestre di dialogo
Se le correzioni descritte in questa pagina non risolvono l'errore relativo alla carta riscontrato nella tua app, esegui una query sui log degli errori dell'app. L'esecuzione di query sui log può aiutarti a trovare errori nel codice JSON o dell'app della scheda. Inoltre, i log includono messaggi di errore descrittivi che ti aiutano a correggerli.
Argomenti correlati
Per assistenza su come correggere gli errori dell'app Google Chat, consulta Risolvere i problemi e correggere l'app Google Chat ed Eseguire il debug delle app di Chat.