1. Panoramica
La piattaforma per sviluppatori dell'Assistente Google ti consente di creare software per estendere la funzionalità dell'Assistente Google, un assistente personale virtuale, su oltre 1 miliardo di dispositivi, tra cui smart speaker, smartphone, auto, TV, cuffie e altro ancora. Gli utenti interagiscono con l'assistente in conversazioni per svolgere attività come acquistare generi alimentari o prenotare una corsa. In qualità di sviluppatore, puoi utilizzare la piattaforma per sviluppatori dell'assistente per creare e gestire facilmente esperienze conversazionali efficaci e piacevoli tra gli utenti e il tuo servizio di evasione di terze parti.
Questo codelab tratta concetti di livello intermedio per lo sviluppo con l'Assistente Google, Cloud Functions e Cloud Firestore. In questo codelab, creerai un gioco chiamato "Esercizi di ortografia " che utilizza l'Assistente Google per chiedere agli utenti di fare lo spelling delle parole.
Cosa creerai
In questo codelab creerai un gioco sofisticato con le seguenti funzionalità:
- Riceve le risposte ortografiche dell'utente e, a seconda del valore, modifica i prompt conversazionali
- Risponde con suggerimenti relativi all'ortografia della parola, come la sua definizione o la ripetizione della parola
- Crea un ciclo di gioco in modo che l'utente possa interagire di nuovo con l'assistente dopo aver scritto la parola
Prima di iniziare a creare, puoi interagire con l'azione live sul tuo dispositivo con l'Assistente Google dicendo "Hey Google, parla con Esercizi di ortografia". Il percorso predefinito di questa azione per un utente di ritorno è il seguente:
Al termine di questo codelab, l'azione completata avrà il seguente flusso conversazionale:

Cosa imparerai a fare
- Come interagire con Cloud Firestore
- Come utilizzare gli slot per raccogliere dati dall'utente
- Come elaborare l'input di un utente e restituire una risposta
- Come utilizzare le condizioni per aggiungere logica a una scena
- Come aggiungere un ciclo di gioco
Che cosa ti serve
I prerequisiti per questo codelab includono quanto segue:
- Un browser web, ad esempio Google Chrome
- Un IDE per scrivere funzioni Cloud Functions.
- Un metodo di pagamento. Questo codelab utilizza Cloud Functions for Firebase, che richiede che il tuo progetto utilizzi il piano tariffario Blaze di Firebase ( scopri di più).
- Un terminale per eseguire comandi shell
- Node.js 10 o versioni successive
2. Recuperare il codice delle funzioni
Clona il repository GitHub dalla riga di comando:
$ git clone https://github.com/FirebaseExtended/codelab-actions-firestore
3. Crea un progetto Firebase e configura la tua app
Crea un progetto Firebase
- Accedi a Firebase.
- Nella console Firebase, fai clic su Aggiungi progetto (o Crea un progetto), quindi assegna al progetto Firebase il nome
Spelling-Practice.

- Fai clic sulle opzioni di creazione del progetto. Accetta i Termini di Firebase se richiesto. Salta la configurazione di Google Analytics perché non lo utilizzerai per questa app.
Per saperne di più sui progetti Firebase, consulta Informazioni sui progetti Firebase.
Esegui l'upgrade al piano tariffario Blaze
Per utilizzare Cloud Functions for Firebase, devi eseguire l'upgrade del tuo progetto Firebase al piano tariffario Blaze, il che significa che devi collegare un account di fatturazione Google Cloud al tuo progetto. Per farlo, devi fornire una carta di credito o un altro metodo di pagamento.
Tutti i progetti Firebase, inclusi quelli con il piano Blaze, hanno ancora accesso alle quote di utilizzo senza costi per Cloud Functions. I passaggi descritti in questo codelab rientrano nei limiti di utilizzo senza costi. Tuttavia, vedrai piccoli addebiti ( circa 0,03 $) da Cloud Storage, che viene utilizzato per ospitare le immagini di build di Cloud Functions.
4. Installa l'interfaccia a riga di comando di Firebase
L'interfaccia a riga di comando di Firebase ti consente di eseguire il deployment delle tue Cloud Functions.
Esistono diverse opzioni per installare l'interfaccia a riga di comando di Firebase a seconda del sistema operativo e del caso d'uso. I passaggi seguenti descrivono l'opzione più comune se utilizzi anche Cloud Functions.
- Assicurati di aver installato npm, che in genere viene fornito con Node.js.
- Installa o esegui l'upgrade dell'interfaccia a riga di comando eseguendo il seguente comando npm:
$ npm -g install firebase-tools
- Verifica che la CLI sia stata installata correttamente eseguendo:
$ firebase --version
Assicurati che la versione della CLI Firebase sia 9.0.0 o successiva, in modo che disponga di tutte le funzionalità più recenti richieste per Cloud Functions. In caso contrario, esegui npm install -g firebase-tools per eseguire l'upgrade come mostrato sopra.
- Autorizza l'interfaccia a riga di comando di Firebase eseguendo:
$ firebase login
- Dalla directory spelling-functions-start, configura l'interfaccia a riga di comando di Firebase per utilizzare il tuo progetto Firebase. Esegui questo comando, seleziona l'ID progetto e segui le istruzioni. Quando richiesto, puoi scegliere qualsiasi alias, ad esempio
codelab.
$ firebase use --add
5. La directory delle funzioni
Ora aggiungerai funzionalità utilizzando l'SDK Firebase per Cloud Functions per creare il backend del gioco Esercizi di ortografia.
Cloud Functions ti consente di avere codice eseguito nel cloud senza dover configurare un server. Questo codelab ti mostrerà come creare funzioni che reagiscono agli eventi di Firebase Authentication, Cloud Storage e Firebase Realtime Database. Iniziamo con l'autenticazione.
Quando utilizzi l'SDK Firebase per Cloud Functions, il codice delle funzioni si trova nella directory functions (per impostazione predefinita). Per semplificarti la vita, abbiamo già creato il file functions/index.js in cui verrà inserito il codice. Prima di andare avanti, puoi esaminare la directory functions.
$ cd functions $ ls
Il codice delle funzioni è anche un'app Node.js e pertanto richiede un file package.json che fornisca alcune informazioni sull'app ed elenchi le dipendenze.
Se non hai dimestichezza con Node.js, ti consigliamo di saperne di più prima di continuare il codelab.
Il file package.json elenca già due dipendenze richieste: l'SDK Firebase per Cloud Functions e l'SDK Firebase Admin. Per installarli localmente, esegui npm install dalla directory functions:
$ npm install
Ora diamo un'occhiata al file index.js:
index.js
/** * Copyright 2021 Google Inc. All Rights Reserved. * ... */ // TODO(DEVELOPER): Import the Cloud Functions for Firebase and Firebase Admin modules here. Also import the Actions SDK here. // TODO(DEVELOPER): Write the getWordDetailsFromDictionaryAPI function here. // TODO(DEVELOPER): Write the createSpellingPracticeWord function here. // TODO(DEVELOPER): Write the app Handle getSpellingWordList function here. // TODO(DEVELOPER): Write the app Handle getSpellingWord function here. // TODO(DEVELOPER): Write the app Handle repeatSpellingWord function here. // TODO(DEVELOPER): Write the app Handle definitionOfSpellingWord function here. // TODO(DEVELOPER): Write the app Handle verifySpellingWord function here.
Innanzitutto, importa i moduli richiesti, poi scrivi quattro funzioni al posto dei TODO. Continua con il passaggio successivo del codelab per importare i moduli.
6. Importa i moduli richiesti
Questo codelab richiede tre moduli.
- Il modulo
firebase-functionsci consente di scrivere i trigger per le nostre funzioni Cloud Functions - Il modulo
firebase-adminci consente di utilizzare la piattaforma Firebase su un server con accesso amministrativo, ad esempio per scrivere su Cloud Firestore. - La libreria di fulfillment Node.js dell'SDK Actions soddisfa i gestori dell'SDK Actions per l'Assistente Google.
- Installa l'SDK Actions eseguendo il seguente comando npm:
$ npm install @assistant/conversation
- Nel file
index.js, sostituisci il primo TODO con il seguente.
Queste modifiche importano ciascuno dei moduli richiesti.
Inoltre, l'SDK Firebase Admin può essere configurato automaticamente quando viene eseguito il deployment in un ambiente Cloud Functions o in un altro container Google Cloud. Questo è ciò che accade quando chiamiamo admin.initializeApp(); nelle modifiche riportate di seguito.
index.js
/**
* Copyright 2021 Google Inc. All Rights Reserved.
* ...
*/
// Import the Actions SDK
const {conversation} = require('@assistant/conversation');
const https = require('https');
const app = conversation();
const cors = require('cors')({origin: true});
// Import the Firebase SDK for Cloud Functions.
const functions = require('firebase-functions');
// Import and initialize the Firebase Admin SDK.
const admin = require('firebase-admin');
admin.initializeApp();
// To access Cloud Firestore
const db = admin.firestore();
// TODO(DEVELOPER): Write the getWordDetailsFromDictionaryAPI function here.
// TODO(DEVELOPER): Write the createSpellingPracticeWord function here.
// TODO(DEVELOPER): Write the shuffleWordList function here.
// TODO(DEVELOPER): Write the app Handle getSpellingWordList function here.
// TODO(DEVELOPER): Write the app Handle getSpellingWord function here.
// TODO(DEVELOPER): Write the app Handle repeatSpellingWord function here.
// TODO(DEVELOPER): Write the app Handle definitionOfSpellingWord function here.
// TODO(DEVELOPER): Write the app Handle verifySpellingWord function here.
Ora aggiungiamo la logica di business utilizzando le funzioni per supportare le Azioni dell'assistente.
7. Creazione funzioni
Recupera le definizioni delle parole e scrivile in Cloud Firestore
Utilizzerai l'API pubblica dictionaryapi.dev per ottenere le definizioni delle parole.
Nel file index.js, sostituisci il TODO per getWordDetailsFromDictionaryAPI con quanto segue:
index.js
// Retrieves word definition and audio pronunciation from api.dictionaryapi.dev service
// Function uses service provided by https://dictionaryapi.dev/
async function getWordDetailsFromDictionaryAPI(word) {
let responseData="";
let req = https.request({
host: 'api.dictionaryapi.dev',
port: 443,
path:'/api/v2/entries/en/' + word,
method:'GET'
}, (res) => {
res.setEncoding('utf8');
res.on('data', d => {
responseData+=d;
})
res.on('end',function(){
let object = JSON.parse(responseData)
const wordListRef = db.collection('wordlist');
wordListRef.doc(object[0].word).set(
object[0]
);
return responseData;
});
});
req.end();
}
Aggiungi un trigger Cloud Firestore
Successivamente, creerai una funzione Cloud Functions che si attiva ogni volta che viene creato un nuovo documento in Cloud Firestore. Chiamerà l'API dictionaryapi.dev per ottenere le definizioni delle parole tramite la funzione getWordDetailsFromDictionaryAPI che abbiamo scritto poco sopra.
Nel file index.js, sostituisci il TODO per createSpellingPracticeWord con quanto segue:
index.js
// Firestore trigger that fetches word definitions through getWordDetailsFromDictionaryAPI for every new Firestore document
exports.createSpellingPracticeWord = functions.firestore
.document('wordlist/{word}')
.onCreate((snap, context) => {
const newValue = snap.data();
const word = newValue.word;
getWordDetailsFromDictionaryAPI(word);
});
Ottenere un elenco di parole per il gioco
Puoi scrivere una funzione Cloud Functions che recupera un elenco di parole per l'esercizio di ortografia da Cloud Firestore per l'assistente. A questo scopo, utilizziamo il gestore di app.
Nel file index.js, sostituisci il TODO per getSpellingWordList con quanto segue.
L'aggiunta di questa funzione al app.handle speciale è un modo per renderla accessibile dall'assistente.
index.js
// Store the list of spelling words in Assistant session
app.handle('getSpellingWordList', conv => {
const wordListRef = db.collection('wordlist').limit(50);
const snapshot = wordListRef;
if (snapshot.empty) {
console.log('No matching documents.');
return;
}
VocabularyList = []
return snapshot.get().then(snapshot => {
snapshot.forEach(doc => {
if (doc.data().word) {
let definition = 'unknown';
let audio = 'unknown';
try {
if(doc.data().hasOwnProperty('meanings')) {
if(doc.data().meanings[0].hasOwnProperty('definitions')) {
definition = doc.data().meanings[0].definitions[0].definition;
}
}
if(doc.data().hasOwnProperty('phonetics')) {
if(doc.data().phonetics.length > 0)
audio = doc.data().phonetics[0].audio;
}
} catch (error) {
console.log(error);
}
let obj = {
word: doc.data().word,
answer: doc.data().word.split("").join(" "),
definition: definition,
audio: audio
}
VocabularyList.push(obj);
}
// Shuffle the array
let currentIndex = VocabularyList.length, temporaryValue, randomIndex;
while (0 !== currentIndex) {
randomIndex = Math.floor(Math.random() * currentIndex);
currentIndex -= 1;
temporaryValue = VocabularyList[currentIndex];
VocabularyList[currentIndex] = VocabularyList[randomIndex];
VocabularyList[randomIndex] = temporaryValue;
}
conv.session.params.vocabWord = VocabularyList;
conv.session.params.vocabWordIndex = 0;
});
});
})
Ricevere una parola dalla sessione dell'assistente
Puoi scrivere una funzione Cloud Functions che restituisce la parola successiva da scrivere correttamente dall'elenco di parole.
Nel file index.js, sostituisci il TODO per getSpellingWord con quanto segue:
index.js
// Returns a spelling practice word to Google Assistant and uses Speech Synthesis Markup Language (SSML) to format the response
app.handle('getSpellingWord', conv => {
if (!conv.session.params.vocabWord.empty) {
conv.session.params.vocabWordIndex+=1;
const ssml = '<speak>' +
'<audio src="'+ conv.session.params.vocabWord[conv.session.params.vocabWordIndex].audio +'">Use phonetics to spell the word.</audio> ' +
'</speak>';
conv.add(ssml);
}
else
conv.add('Great job! You completed the Spelling practice');
});
Consenti al gioco di ripetere la parola
Puoi scrivere una funzione Cloud Functions che ripete la parola corrente per il gioco.
Nel file index.js, sostituisci il TODO per repeatSpellingWord con quanto segue:
index.js
// Returns current spelling word
app.handle('repeatSpellingWord', conv => {
if (!conv.session.params.vocabWord.empty) {
const ssml = '<speak>' +
'<audio src="'+ conv.session.params.vocabWord[conv.session.params.vocabWordIndex].audio +'">Use phonetics to spell the word. </audio> ' +
'</speak>';
conv.add(ssml);
}
else
conv.add('Great job! You completed the Spelling practice');
});
Ricevi la definizione della parola
Puoi scrivere una funzione Cloud Functions che fornisca la definizione della parola corrente per il gioco.
Nel file index.js, sostituisci il TODO per definitionOfSpellingWord con quanto segue:
index.js
// Returns spelling word definition from Assistant session parameter
app.handle('definitionOfSpellingWord', conv => {
conv.add( 'It means ' + conv.session.params.vocabWord[conv.session.params.vocabWordIndex].definition);
});
Controlla la risposta ortografica dell'utente
Puoi scrivere una funzione Cloud Functions che verifichi la risposta dell'utente su come si scrive la parola corrente del gioco.
Nel file index.js, sostituisci il TODO per verifySpellingWord con quanto segue:
index.js
// Verifies user spelling response
app.handle('verifySpellingWord', conv => {
try {
userResponse = conv.intent.params.userresponse.resolved.join("");
if (userResponse.toLowerCase() === conv.session.params.vocabWord[conv.session.params.vocabWordIndex].word.toLowerCase()) {
conv.add('You are correct. Say next to continue.');
}
else {
conv.add('Sorry, wrong answer. The correct answer is ' + conv.session.params.vocabWord[conv.session.params.vocabWordIndex].answer + ' . Say next to continue.');
}
} catch (error) {
conv.add('Sorry. I did not understand your response' );
}
});
exports.ActionsOnGoogleFulfillment = functions.https.onRequest(app);
Esegui il deployment di tutte le funzioni
Le tue Cloud Functions saranno attive solo dopo il deployment su Firebase.
Dalla radice della directory spelling-functions-start, esegui questo comando:
$ firebase deploy --only functions
Questo è l'output della console che dovresti vedere:
i deploying functions i functions: ensuring necessary APIs are enabled... ⚠ functions: missing necessary APIs. Enabling now... i env: ensuring necessary APIs are enabled... ⚠ env: missing necessary APIs. Enabling now... i functions: waiting for APIs to activate... i env: waiting for APIs to activate... ✔ env: all necessary APIs are enabled ✔ functions: all necessary APIs are enabled i functions: preparing functions directory for uploading... i functions: packaged functions (X.XX KB) for uploading ✔ functions: functions folder uploaded successfully i starting release process (may take several minutes)... i functions: creating function createSpellingPracticeWord(us-central1)... ✔ functions[createSpellingPracticeWord(us-central1)]: Successful create operation. i functions: creating function ActionsOnGoogleFulfillment(us-central1)... ✔ functions[ActionsOnGoogleFulfillment(us-central1)]: Successful create operation. ✔ Deploy complete! Project Console: https://console.firebase.google.com/project/spelling-practice-1234/overview
Prendi nota dell'URL dell'endpoint HTTP della funzione ActionsOnGoogleFulfillment per utilizzarlo in un secondo momento. Per ottenere l'endpoint, apri la console Firebase e fai clic sul progetto spelling-practice. Apri la dashboard Functions per visualizzare l'endpoint delle funzioni.

Hai completato l'aggiunta di tutte le funzioni richieste. Ora passiamo alla configurazione di Cloud Firestore.
8. Attiva Cloud Firestore
Devi abilitare Cloud Firestore.
Nella sezione Build della console Firebase, fai clic su Firestore. Quindi, fai clic su Crea database.

L'accesso ai dati in Cloud Firestore è controllato dalle regole di sicurezza. Per iniziare, devi impostare alcune regole di base sui dati. Fai clic su Firestore e poi nella scheda Regole della console Firebase, aggiungi le seguenti regole, quindi fai clic su Pubblica.
Le seguenti regole limitano l'accesso ai dati agli utenti che hanno eseguito l'accesso, impedendo agli utenti non autenticati di leggere o scrivere.
rules_version = '2';
service cloud.firestore {
match /databases/{database}/documents {
match /{document=**} {
//
// WARNING: These rules are insecure! We will replace them with
// more secure rules later in the codelab
//
allow read, write: if request.auth != null;
}
}
}
9. Aggiungere dati di parole di ortografia a Cloud Firestore
In questo passaggio, scriverai i dati delle parole di ortografia in Cloud Firestore in modo da poter generare un elenco di parole per l'assistente (e per il gioco).
I dati di Cloud Firestore sono strutturati in raccolte, documenti, campi e raccolte secondarie. Ogni parola del gioco verrà archiviata come documento separato in una raccolta di primo livello chiamata wordlist. Per ogni nuovo documento nella raccolta Firestore, viene attivata la funzione createSpellingPracticeWord per ottenere i dettagli della parola dal servizio API Dictionary.
Crea una raccolta Cloud Firestore
- Nella console Firebase, vai alla sezione Cloud Firestore.
- Fai clic su + Avvia raccolta.
- Nella casella di testo ID raccolta, inserisci
wordliste poi fai clic su Avanti.

A questo punto, creiamo un documento per la parola accordo.
- Nella casella di testo ID documento, inserisci
agreement. - Nella casella di testo Campo, inserisci
worde nella casella di testo Valore inserisciagreement. - Fai clic su Salva.

Quando aggiungi questo documento a Cloud Firestore, viene attivata la funzione createSpellingPracticeWord per recuperare i dettagli della definizione della parola. Aggiungi altre parole (ad esempio: stupore, auto, vero, dire, meglio, tragitto casa-lavoro...) creando un nuovo documento per ogni parola.
10. Configurare l'Assistente Google
Le sezioni seguenti descrivono come configurare l'ambiente di sviluppo dell'Assistente Google e creare il progetto Azioni.
Verifica le impostazioni delle autorizzazioni Google
Per testare l'azione che crei in questo codelab, devi abilitare le autorizzazioni necessarie in modo che il simulatore possa accedere all'azione. Per attivare le autorizzazioni:
- Vai alla pagina Gestione attività.
- Accedi con il tuo Account Google, se non l'hai ancora fatto.
- Attiva le seguenti autorizzazioni:
- Attività web e app
- In Attività web e app, seleziona la casella di controllo accanto a Includi la cronologia di Chrome e le attività svolte su siti, app e dispositivi che usano i servizi Google.

crea un progetto Actions
Il progetto Actions è un contenitore per l'Azione. Per creare il progetto Azioni per questo codelab:
- Apri la console Azioni.
- Fai clic su Nuovo progetto.
- Accetta i Termini di servizio

- Digita o seleziona
spelling-practice-codelabche hai creato utilizzando la console Firebase. Il nome è per riferimento interno. In un secondo momento, potrai impostare un nome esterno per il progetto.)

- Fai clic su Importa progetto.
- Nella schermata Che tipo di azione vuoi creare?, seleziona la scheda Personalizzata.
- Fai clic su Avanti.
- Seleziona la scheda Progetto vuoto.
- Fai clic su Inizia a creare.
- Inserisci Esercizio di ortografia come nome visualizzato e fai clic su Salva.
Gli utenti avviano la conversazione con la tua azione tramite l'invocazione. Ad esempio, gli utenti possono richiamare l'azione dicendo una frase come "Hey Google, parla con Esercizi di ortografia", dove Esercizi di ortografia è il nome visualizzato.
La tua Azione deve avere un nome visualizzato se vuoi eseguirne il deployment in produzione. Tuttavia, per testarla, non è necessario definire il nome visualizzato. In alternativa, puoi utilizzare la frase "Parla con la mia app di prova" nel simulatore per richiamare l'Azione.
Configura fulfillment
Devi connettere all'assistente i gestori di eventi per le Cloud Functions che hai scritto e di cui hai eseguito il deployment in precedenza in questo codelab.
Per configurare l'evasione, segui questi passaggi:
- Fai clic su Webhook nel riquadro di navigazione laterale.
- Seleziona Endpoint HTTPS come opzione di evasione:

- Inserisci l'URL dell'endpoint della funzione nella casella di testo Endpoint HTTPS, poi fai clic su Salva.

Nella sezione successiva, personalizzerai il prompt per l'invocazione principale nella console Azioni.
Configurare la chiamata principale
Devi modificare l'invocazione principale per definire cosa succede dopo che un utente invoca la tua azione.
Per impostazione predefinita, Actions Builder fornisce un prompt generico quando viene attivata l'invocazione ("Inizia a creare la tua azione definendo l'invocazione principale").
Per modificare il prompt che l'azione invia all'utente quando la richiama, segui questi passaggi:
- Fai clic su Richiamo principale nel menu di navigazione.

- Seleziona
Call your webhooke aggiungi il nome del gestore eventigetSpellingWordListnella casella di testo. - Nell'editor di codice, sostituisci il testo nel campo
speechcon il seguente messaggio di benvenuto:Welcome to Spelling Practice
Nota:puoi utilizzare la formattazione YAML o JSON per modificare i prompt.
- Fai clic su Salva.
Testare la chiamata principale nel simulatore
La console Azioni fornisce uno strumento web per testare l'azione chiamato simulatore. L'interfaccia simula i dispositivi hardware e le relative impostazioni, in modo da poter conversare con l'azione come se fosse in esecuzione su uno smart display, uno smartphone, uno speaker o KaiOS.
Per testare la chiamata principale dell'azione nel simulatore:
- Nella barra di navigazione in alto, fai clic su Test per andare al simulatore.
- Per richiamare l'Azione nel simulatore, digita
Talk to Spelling Practicenel campo di input in alto a sinistra, quindi premi Invio sulla tastiera.

Quando attivi la chiamata principale dell'azione, l'assistente risponde con il tuo messaggio di benvenuto personalizzato. A questo punto, la conversazione termina dopo che l'assistente risponde con un saluto.
Visualizzare i log eventi
Quando ti trovi nella scheda Test, il riquadro a destra mostra i log eventi, che visualizzano la cronologia della conversazione come log eventi. Ogni log degli eventi mostra gli eventi che si verificano durante il turno della conversazione. Per visualizzare il log eventi, fai clic sull'icona grigia prima dell'evento.
La tua azione ha attualmente un log eventi, che mostra sia l'input dell'utente ("Parla con Esercizi di ortografia") sia la risposta dell'azione. Lo screenshot seguente mostra il log eventi dell'Azione:

11. Creare la conversazione per Esercizi di ortografia
Ora che hai definito cosa succede dopo che un utente richiama l'azione, puoi creare il resto della conversazione dell'azione. Esercizio di ortografia ha quattro scene e devi attivare ciascuna scena prima che possa essere eseguita. Il modo più comune per attivare una scena è configurare l'azione in modo che, quando un utente corrisponde a un intento utente all'interno di una scena, questo intento attivi la transizione a un'altra scena e la attivi.
Transizione dall'invocazione principale alla scena iniziale
In questa sezione, crea una nuova scena chiamata Start, che invia un prompt all'utente chiedendogli se vuole iniziare a giocare a Esercizi di ortografia. Aggiungi anche una transizione dall'invocazione principale alla nuova scena Start.
Per creare questa scena e aggiungere una transizione, segui questi passaggi:
- Fai clic su Sviluppa nella barra di navigazione in alto. Poi, fai clic su Richiamo principale nel riquadro di navigazione a sinistra.
- Nella sezione Transizione a destra, fai clic sul menu a discesa e poi digita
Startnel campo di testo.

- Fai clic su Aggiungi. Viene creata una scena chiamata
Starte viene indicato all'azione di passare alla scenaStartdopo che l'azione ha inviato il prompt di benvenuto all'utente. - Fai clic su Scene nel riquadro di navigazione a sinistra per visualizzare l'elenco delle scene.
- In Scene, fai clic su Avvia per visualizzare la scena
Start. - Fai clic su + nella sezione All'ingresso della scena
Start. - Seleziona Invia prompt.
- Sostituisci la frase nel campo
speech(Enter the response that users will see or hear...) con una domanda da porre all'utente:Use phonetic alphabet to spell the word. For example alpha for a, bravo for b, charlie for c etc. Do you want to continue?
I chip di suggerimento offrono suggerimenti su cui l'utente può fare clic e che l'azione elabora come input dell'utente. In questa sezione, aggiungi i chip di suggerimento che vengono visualizzati sotto il prompt appena configurato (Do you want to play
Spelling Practice
?) per supportare gli utenti sui dispositivi con schermi.
Per aggiungere chip di suggerimento al prompt della scena Start:
- Nella scena
Start, fai clic sui suggerimenti sotto l'editor di codice. Questa azione aggiunge un singolo chip di suggerimento. - Nel campo
title, sostituisciSuggested Responsecon'Yes'. - Utilizzando la stessa formattazione, aggiungi manualmente un chip di suggerimento con il titolo
'No'e'Help with Phonetics'. Il tuo codice dovrebbe essere simile al seguente snippet: - Fai clic su Salva.

Testare l'azione nel simulatore
A questo punto, l'azione deve passare dall'invocazione principale alla scena Start e chiedere all'utente se vuole continuare. I chip di suggerimento dovrebbero essere visualizzati anche nel display simulato.
Per testare l'azione nel simulatore:
- Nella barra di navigazione, fai clic su Test per accedere al simulatore.
- Per testare l'Azione nel simulatore, digita
Talk to Spelling Practicenel campo Input. - Premi Invio. L'Azione deve rispondere con il prompt
Main invocatione il prompt della scenaStartaggiunto, "Ti diamo il benvenuto in Esercizi di ortografia. Usa l'alfabeto fonetico per comporre la parola. Ad esempio, alpha per a, bravo per b, charlie per c e così via. Vuoi continuare?"
Il seguente screenshot mostra questa interazione:

- Fai clic sul chip di suggerimento
Yes,NooHelp with Phoneticsper rispondere al prompt. Puoi anche dire "Sì" o "No" o "Aiuto con la fonetica" o inserireYesoNooHelp with Phoneticsnel campo Input.
Quando rispondi al prompt, l'Azione risponde con un messaggio che indica che non riesce a comprendere il tuo input: "Mi dispiace, non ho capito. Puoi riprovare?" Poiché non hai ancora configurato l'azione in modo che comprenda e risponda all'input "Sì" o "No", l'azione associa il tuo input a un intent NO_MATCH.
Per impostazione predefinita, l'intent di sistema NO_MATCH fornisce risposte generiche, ma puoi personalizzarle per indicare all'utente che non hai compreso il suo input. L'assistente termina la conversazione dell'utente con la tua azione dopo che non riesce a trovare una corrispondenza per l'input dell'utente per tre volte.
Aggiungere intenti di negazione e fonetica
Ora che gli utenti possono rispondere alla domanda posta dall'azione, puoi configurarla in modo che comprenda le risposte degli utenti ("Sì", "No" o "Aiuto con la fonetica"). Nelle sezioni seguenti, crea intent utente che vengono abbinati quando l'utente dice "Sì" o "No" o "Aiuto con la fonetica" e aggiungi questi intent alla scena Start. Utilizzeremo l'intent di sistema yes e creeremo altri intent.
Crea intent no
Ora devi creare l'intent no per comprendere e rispondere all'utente quando non vuole giocare. Per creare questo intent, segui questi passaggi:
- Fai clic su Sviluppa nel menu di navigazione.
- Fai clic su Intent personalizzati nella navigazione per aprire l'elenco degli intent.
- Fai clic sul segno più (+) alla fine dell'elenco di intent. Assegna un nome al nuovo intent
noe premi Invio. - Fai clic su No per aprire la pagina dell'intent
no. - Nella sezione Aggiungi frasi di addestramento, fai clic nella casella di testo Inserisci frase e inserisci le seguenti frasi:
NoNI don't wantnope

- Fai clic su Salva.
Aggiungi l'intent no alla scena Start
Ora, l'azione può capire quando un utente esprime un "no" o qualcosa di simile a "no", come "no". Devi aggiungere l'intent utente no alla scena Start perché l'utente sta rispondendo al prompt Start ("Benvenuto in Esercizi di ortografia. Usa l'alfabeto fonetico per comporre la parola. Ad esempio, alpha per a, bravo per b, charlie per c e così via. Vuoi continuare?").
Per aggiungere questo intent per la scena Start:
- Fai clic sulla scena Inizia nella navigazione.
- Fai clic su + (segno più) nella scena
Startaccanto a Gestione dell'intent dell'utente. - Nella sezione Scopo, seleziona No nel menu a discesa.

- Fai clic su Invia prompt e aggiorna il campo
speechcon il seguente testo:Good Bye.
Il codice nell'editor dovrebbe essere simile al seguente snippet:
candidates:
- first_simple:
variants:
- speech: >-
Goodbye.
- Nella sezione Transizione, seleziona Termina conversazione dal menu a discesa.
- Fai clic su Salva.
Testa l'intent no nel simulatore
A questo punto, l'azione capisce quando l'utente non vuole giocare e restituisce la risposta appropriata.
Per testare questo intent nel simulatore:
- Nella barra di navigazione, fai clic su Test.
- Digita
Talk to Spelling Practicenel campo Input e premiEnter. - Digita
Nonel campo Input e premi Invio. In alternativa, fai clic sul chip Nessun suggerimento.

Aggiungi l'intent di sistema YES alla scena Start
Ora aggiungiamo l'intent SYSTEM "YES" alla scena Start, poiché l'utente risponde sì al prompt Start ("Benvenuto in Esercizi di ortografia. Usa l'alfabeto fonetico per comporre la parola. Ad esempio, alpha per a, bravo per b, charlie per c e così via. Vuoi continuare?").
Per aggiungere questo intento dell'utente alla scena Start, segui questi passaggi:
- Fai clic sulla scena Inizia nella navigazione.
- Fai clic sul segno più (+) nella scena
Startaccanto a Gestione dell'intent dell'utente. - In Tutti gli intent di sistema, seleziona SÌ nel menu a discesa degli intent.

- Fai clic su Chiama il webhook e aggiorna la casella di testo
event handlercon la funzione creata in precedenza:getSpellingWordList - Nella sezione Transizione, fai clic sul menu a discesa e seleziona Termina conversazione.
- Fai clic su Salva.
Testa l'intent YES nel simulatore
A questo punto, l'azione comprende quando l'utente vuole giocare e restituisce la risposta appropriata.
Per testare questo intent nel simulatore:
- Nella barra di navigazione, fai clic su Test.
- Per testare l'Azione nel simulatore, digita
Talk to Spelling Practicenel campo Input e premi Invio. - Digita
Yesnel campo Input e premi Invio. In alternativa, fai clic sul chip di suggerimentoYes.
L'azione recupera un elenco di tutte le parole per l'esercizio di ortografia e le memorizza nella sessione. L'azione termina la sessione perché hai selezionato la transizione End conversation per l'intent YES.
Crea intent Phonetics
Per creare l'intent Phonetics:
- Fai clic su Sviluppa nel menu di navigazione.
- Fai clic su Intent personalizzati nella navigazione per aprire l'elenco degli intent.
- Fai clic sul segno più (+) alla fine dell'elenco di intent. Assegna un nome al nuovo intent
phoneticse premiEnter. - Fai clic sull'intent
phoneticsper aprire la pagina dell'intentphonetics. - Nella sezione Aggiungi frasi di addestramento, fai clic sulla casella di testo Inserisci frase e inserisci le seguenti frasi:
how do I spell wordsphoneticshelp me with phoneticsphonetic alphabet

- Fai clic su Salva.
Aggiungi l'intent phonetics alla scena Start
Ora, l'azione può comprendere quando un utente esprime un intento "fonetico". Puoi aggiungere l'intent utente phonetics alla scena Start, poiché l'utente sta rispondendo al prompt Start ("Benvenuto in Esercizi di ortografia. Usa l'alfabeto fonetico per comporre la parola. Ad esempio, alpha per a, bravo per b, charlie per c e così via. Vuoi continuare?").
Per aggiungere questo intento dell'utente alla scena Start, segui questi passaggi:
- Fai clic sulla scena Inizia nella navigazione.
- Fai clic sul segno più (+) nella scena
Startaccanto a Gestione dell'intent dell'utente. - Seleziona fonetica nel menu a discesa dell'intent.

- Nella sezione Transizione, fai clic sul menu a discesa e seleziona Termina conversazione.
- Fai clic su Salva.
Transizione dalla scena Inizia alla scena Ortografia
In questa sezione, crea una nuova scena chiamata Spelling, che invia all'utente un prompt per compitare la parola utilizzando l'alfabeto fonetico.
Per creare questa scena e aggiungere una transizione, segui questi passaggi:
- Fai clic su Sviluppa nella barra di navigazione in alto. Poi, fai clic sulla scena Inizia nel riquadro di navigazione a sinistra.
- Nella sezione Gestione dell'intent dell'utente, fai clic su
when actions.intent.YES is matchede, a destra, nella sezione Transizione, fai clic sul menu a discesa e digitaSpellingnel campo di testo. - Fai clic su Aggiungi. Viene creata una scena chiamata
Spellinge viene indicato all'azione di passare alla scenaSpellingdopo la corrispondenza con l'intent YES. - Espandi Scene nella barra di navigazione a sinistra per visualizzare l'elenco delle scene.
- Nella sezione Scene, fai clic su Ortografia per visualizzare la scena
Spelling. - Fai clic su + nella sezione All'ingresso della scena
Spelling. - Fai clic su Chiama il webhook e inserisci getSpellingWord nella casella di testo del gestore eventi.
- Seleziona Invia prompt.
- Sostituisci la frase nel campo
speech(Enter the response that users will see or hear...) con {}. Il prompt effettivo verrà compilato dal webhook.
I chip di suggerimento offrono suggerimenti su cui l'utente può fare clic e che l'azione elabora come input dell'utente.
Per aggiungere chip di suggerimento al prompt della scena Spelling:
- Nella scena
Spelling, fai clic sui suggerimenti sotto l'editor di codice. Questa azione aggiunge tre chip di suggerimento. - Nel campo
title, sostituisciSuggested Responsecon'Repeat'. - Utilizzando la stessa formattazione, aggiungi manualmente un chip di suggerimento intitolato
'Skip'. - Utilizzando la stessa formattazione, aggiungi manualmente un chip di suggerimento intitolato
'Quit'. Il tuo codice dovrebbe essere simile al seguente snippet: - Fai clic su Salva.
suggestions:
- title: 'Repeat'
- title: 'Skip'
- title: 'Quit'

Crea intent Repeat
Per creare l'intent repeat:
- Fai clic su Sviluppa nel menu di navigazione.
- Fai clic su Intent personalizzati nella navigazione per aprire l'elenco degli intent.
- Fai clic sul segno più (+) alla fine dell'elenco di intent. Assegna un nome al nuovo intent
repeate premiEnter. - Fai clic sull'intent
repeatper aprire la pagina dell'intentdefinition. - Nella sezione Aggiungi frasi di addestramento, fai clic sulla casella di testo Inserisci frase e inserisci le seguenti frasi:
one more time pleasesay the word againrepeat the wordtell me againrepeat

- Fai clic su Salva.
Aggiungi l'intent repeat alla scena Spelling
Ora l'azione può comprendere quando un utente esprime l'intenzione di "ripetere". Puoi aggiungere l'intent utente repeat alla scena Spelling, poiché l'utente sta rispondendo al prompt Spelling ("Scrivi la parola usando l'alfabeto fonetico").
Per aggiungere questo intento dell'utente alla scena Spelling, segui questi passaggi:
- Fai clic sulla scena Ortografia nella navigazione.
- Fai clic sul segno più (+) nella scena
Spellingaccanto a Gestione dell'intent dell'utente. - Seleziona ripeti nel menu a discesa dell'intent.

- Seleziona Chiama il webhook e inserisci repeatSpellingWord nella casella di testo del gestore di eventi per ottenere la definizione della parola.
- Seleziona Invia prompt.
- Sostituisci la frase nel campo
speech(Enter the response that users will see or hear...) con "'". Il prompt effettivo verrà compilato dal webhook.
Aggiungere chip di suggerimenti a "Quando viene trovata una ripetizione"
- In "Quando viene rilevato un intento ripetuto" nella sezione Gestione dell'intento dell'utente, fai clic su Suggerimenti sotto l'editor di codice. Questa azione aggiunge tre chip di suggerimento.
- Nel campo
title, sostituisciSuggested Responsecon'Skip'. - Utilizzando la stessa formattazione, aggiungi manualmente un chip di suggerimento intitolato
'Quit'.Il codice dovrebbe essere simile al seguente snippet:
suggestions:
- title: 'Skip'
- title: 'Quit'

- Fai clic su Salva.
Crea intent definition
Per creare l'intent definition:
- Fai clic su Sviluppa nel menu di navigazione.
- Fai clic su Intent personalizzati nella navigazione per aprire l'elenco degli intent.
- Fai clic sul segno più (+) alla fine dell'elenco di intent. Assegna un nome al nuovo intent
definitione premiEnter. - Fai clic sull'intent
definitionper aprire la pagina dell'intentdefinition. - Nella sezione Aggiungi frasi di addestramento, fai clic sulla casella di testo Inserisci frase e inserisci le seguenti frasi:
I would like to know the definitiontell me the definitionwhat does it meanmeaningdefinitionwhat is the definition?

- Fai clic su Salva.
Aggiungi l'intent definition alla scena Spelling
Ora, l'Azione può capire quando un utente esprime l'intento di "definizione". Puoi aggiungere l'intent utente definition alla scena Spelling, poiché l'utente sta rispondendo al prompt Spelling ("Scrivi la parola usando l'alfabeto fonetico").
Per aggiungere questo intento dell'utente alla scena Spelling, segui questi passaggi:
- Fai clic sulla scena Ortografia nella navigazione.
- Fai clic sul segno più (+) nella scena
Spellingaccanto a Gestione dell'intent dell'utente. - Seleziona definizione nel menu a discesa dell'intent.

- Seleziona Chiama il webhook e inserisci definitionOfSpellingWord nella casella di testo del gestore eventi per ottenere la definizione della parola.
- Seleziona Invia prompt.
- Sostituisci la frase nel campo
speech(Enter the response that users will see or hear...) con "`. Il prompt effettivo verrà compilato dal webhook.
Aggiungere chip di suggerimenti alla risposta del webhook
- Nella scena
Start, fai clic su Suggerimenti sotto l'editor di codice. Questa azione aggiunge tre chip di suggerimento. - Nel campo
title, sostituisciSuggested Responsecon'Skip'. - Utilizzando la stessa formattazione, aggiungi manualmente un chip di suggerimento intitolato
'Quit'.Il codice dovrebbe essere simile al seguente snippet:
suggestions:
- title: 'Skip'
- title: 'Quit'

- Fai clic su Salva.
Crea intent skip
Per creare l'intent skip:
- Fai clic su Sviluppa nel menu di navigazione.
- Fai clic su Intent nella navigazione per aprire l'elenco degli intent.
- Fai clic sul segno più (+) alla fine dell'elenco di intent. Assegna un nome al nuovo intent
skipe premiEnter. - Fai clic sull'intent
skipper aprire la pagina dell'intentskip. - Nella sezione Aggiungi frasi di addestramento, fai clic sulla casella di testo Inserisci frase e inserisci le seguenti frasi:
next wordgo nextnextskipskip word

- Fai clic su Salva.
Aggiungi l'intent Skip alla scena Spelling
Ora, l'azione può capire quando un utente esprime l'intenzione di "saltare". Puoi aggiungere l'intent utente skip alla scena Spelling, poiché l'utente sta rispondendo al prompt Spelling ("Scrivi la parola usando l'alfabeto fonetico").
Per aggiungere questo intento dell'utente alla scena Spelling, segui questi passaggi:
- Fai clic sulla scena Ortografia nella navigazione.
- Fai clic sul segno più (+) nella scena
Spellingaccanto a Gestione dell'intent dell'utente. - Seleziona Salta nel menu a discesa dell'intent.

- Nella sezione Transizione a destra, fai clic sul menu a discesa e seleziona
Spelling.

- Fai clic su Salva.
Crea intent quit
Per creare l'intent Quit:
- Fai clic su Sviluppa nel menu di navigazione.
- Fai clic su Intent nella navigazione per aprire l'elenco degli intent.
- Fai clic sul segno più (+) alla fine dell'elenco di intent. Assegna un nome al nuovo intent
Quite premiEnter. - Fai clic sull'intent
Quitper aprire la pagina dell'intent definizione. - Nella sezione Aggiungi frasi di addestramento, fai clic sulla casella di testo Inserisci frase e inserisci le seguenti frasi:
I quitGoodbyeCancelExitQuit

- Fai clic su Salva.
Aggiungi l'intent Quit alla scena Spelling
Ora l'azione può capire quando un utente esprime l'intenzione di "uscire". Puoi aggiungere l'intent utente quit alla scena Spelling, poiché l'utente sta rispondendo al prompt Spelling ("Scrivi la parola usando l'alfabeto fonetico").
Per aggiungere questo intento dell'utente alla scena Spelling, segui questi passaggi:
- Fai clic sulla scena Ortografia nella navigazione.
- Fai clic sul segno più (+) nella scena
Spellingaccanto a Gestione dell'intent dell'utente. - Seleziona Esci nel menu a discesa dell'intent.

- Nella sezione Transizione a destra, fai clic sul menu a discesa e seleziona
End conversation.
- Fai clic su Salva.
Crea tipo phonetic_alphabet
In questa sezione, crei un nuovo tipo chiamato phonetic_alphabet, che specifica le opzioni dell'alfabeto fonetico che gli utenti possono scegliere per scrivere la parola. Puoi anche definire alcuni sinonimi per queste opzioni nel caso in cui un utente dica qualcosa di simile. In una sezione successiva, aggiungi il tipo phonetic_alphabet a uno slot per specificare che vuoi ottenere la risposta dell'utente.
Per creare il tipo phonetic_alphabet:
- Fai clic su Sviluppa nel menu di navigazione.
- Fai clic sul segno più (+) in Tipi.
- Digita
phonetic_alphabete premiEnter. - Fai clic su
phonetic_alphabetper aprire le opzioni. - Nella sezione Quale tipo di valori supporterà questo tipo?, seleziona l'opzione Parole e sinonimi.
- Inserisci le seguenti voci e i valori corrispondenti nella sezione Aggiungi voci:
a | alpha, apple, amsterdam |
b | bravo, butter, baltimore |
c | charlie, cat, casablanca |
d | delta, dog, denmark |
s | echo, edward, edison |
f | foxtrot, fox, florida |
g | golf, george, gallipoli |
h | hotel, harry, havana |
i | india, ink, italia |
j | juliette, johnny, jerusalem |
k | kilo, king, kilogramme |
l | lima, love, london |
m | mike, money, madagascar |
n | novembre, new york, nancy |
o | oscar, orange, oslo |
p | papa, paris, peter |
q | quebec, queen |
r | romeo, roma, robert |
s | sierra, sugar, santiago |
t | tango, tommy, tripoli |
u | uniform, umbrella, uncle |
v | victor, vinegar, Valencia |
w | whiskey, william, washington |
x | x-ray |
y | yankee, yellow, yorker |
z | zulu, zebra, zurich |
La tabella chiave-valore dovrebbe avere il seguente aspetto:

- Fai clic su Salva.
Configura il riempimento degli slot
Successivamente, devi configurare il riempimento degli slot nella scena Ortografia. Per configurare la logica di compilazione degli slot:
- Fai clic sulla scena Ortografia nella navigazione.
- Fai clic sul segno più (+) nella scena
Spellingper il riempimento degli slot. - Nel campo Inserisci nome slot, aggiungi
userresponsecome nome dello slot. - Nel menu a discesa Seleziona tipo, seleziona phonetic_alphabet come tipo di slot.
- Seleziona Questo slot accetta un elenco di valori.
- Seleziona Questo spazio è obbligatorio.
- Seleziona l'opzione Scrittura di valori di slot personalizzati e inserisci userresponse nella casella di testo del parametro sessione.

- Fai clic su Salva.
Aggiungi condizione alla schermata Spelling
Per aggiungere una condizione alla scena Spelling:
- Fai clic sulla scena Ortografia nella navigazione.
- Fai clic sul segno più (+) nella scena
Spellingaccanto a Condizione. - Inserisci
scene.slots.status == "FINAL"come condizione - Seleziona Chiama il webhook e inserisci verifySpellingWord nella casella di testo del gestore di eventi per verificare la risposta dell'utente.
- Seleziona Invia prompt.
- Sostituisci la frase nel campo
speech(Enter the response that users will see or hear...) con {}. Il prompt effettivo verrà compilato dal webhook.
Aggiungere chip di suggerimenti alla risposta del webhook
- Nella scena
Start, fai clic su Suggerimenti sotto l'editor di codice. Questa azione aggiunge tre chip di suggerimento. - Nel campo
title, sostituisciSuggested Responsecon'Next'. - Utilizzando la stessa formattazione, aggiungi manualmente un chip di suggerimento intitolato
'Quit'.Il codice dovrebbe essere simile al seguente snippet:
suggestions:
- title: 'Next'
- title: 'Quit'

- Fai clic su Salva.
12. Testare l'esercizio di ortografia nel simulatore
Per testare l'azione nel simulatore:
- Nella barra di navigazione, fai clic su Test per accedere al simulatore.
- Per testare l'Azione nel simulatore, digita
Talk to Spelling Practicenel campo Input. - Premi Invio. L'Azione deve rispondere con il prompt
Main invocatione il prompt della scenaStartaggiunto, "Ti diamo il benvenuto in Esercizi di ortografia. Usa l'alfabeto fonetico per comporre la parola. Ad esempio, alpha per a, bravo per b, charlie per c e così via. Vuoi continuare?" - Di' Sì per continuare.
- Il simulatore riprodurrà un suono di parola da scrivere
- Puoi fare lo spelling della parola utilizzando gli alfabeti fonetici. Ad esempio, per better (meglio) di' o digita "bravo echo tango tango echo romeo".
- Il simulatore risponderà con la risposta corretta o errata.
- Pronuncia avanti per passare alla parola successiva o esci per uscire dal ciclo di gioco.
13. Complimenti
Congratulazioni, hai creato il tuo gioco, Esercizi di ortografia.
Ora conosci i passaggi chiave necessari per creare un gioco utilizzando Cloud Firestore, Cloud Functions e Google Assistant Action Builder.
Argomenti trattati
- Come interagire con Cloud Firestore
- Come utilizzare gli slot per raccogliere dati dall'utente
- Come elaborare l'input di un utente e restituire una risposta
- Come utilizzare le condizioni per aggiungere logica a una scena
- Come aggiungere un ciclo di gioco
Risorse didattiche aggiuntive
Puoi esplorare queste risorse per scoprire come creare Azioni per l'Assistente Google:
- Documentazione per lo sviluppo di Azioni per l'Assistente Google
- Pagina GitHub di Azioni su Google per esempi di codice e librerie
- La community Reddit ufficiale per gli sviluppatori che lavorano con l'Assistente Google
- Linee guida per la progettazione di conversazioni per best practice e linee guida relative alle Azioni conversazionali
- Introduzione a Cloud Firestore
Pulire il progetto [consigliato]
Per evitare possibili addebiti, ti consigliamo di rimuovere i progetti che non intendi utilizzare. Per eliminare i progetti che hai creato in questo codelab:
- Per eliminare il progetto e le risorse Firebase, completa i passaggi elencati nella sezione Chiusura (eliminazione) dei progetti.
Attenzione: assicurati di selezionare il progetto corretto da eliminare nella pagina Impostazioni della console Google Cloud.
- (Facoltativo) Per rimuovere immediatamente il progetto dalla console di Actions, completa i passaggi elencati nella sezione Eliminare un progetto. Se non completi questo passaggio, il tuo progetto verrà rimosso automaticamente dopo circa 30 giorni.
Segui @ActionsOnGoogle e @Firebase su Twitter per rimanere al corrente sui nostri ultimi annunci e twitta con l'hashtag #GoogleIO per condividere ciò che hai creato.