Dialogflow è dotato di un'ottima funzionalità, chiamata Cronologia, che fornisce una visualizzazione di alto livello delle conversazioni tra gli utenti e la tua Action. Una volta implementata l'Action, questa pagina è uno strumento fondamentale per analizzare come gli utenti interagiscono con l'Action e se sia necessario migliorare il design della conversazione.
Di recente abbiamo lanciato le Action di esempio, che consentono di creare agenti Dialogflow funzionanti con pochi clic. Questi agenti implementano le nostre best practice per Actions on Google. Per garantire che questi esempi siano conformi ai nostri requisiti di revisione, abbiamo creato delle istanze per ciascuna delle Action di esempio e le abbiamo sottoposte a un processo di revisione da parte del pubblico.
Abbiamo studiato le pagine della cronologia per ognuna delle Action implementate e abbiamo ottenuto alcuni risultati interessanti. Ecco la pagina della cronologia dell'Action di esempio sull'utilizzo dello stato della sessione (questa Action è un videogioco d'avventura interattivo molto semplice).
La pagina della cronologia mostra che l'Action viene attivata in diversi modi:
Alcune righe nella pagina includono delle icone di avviso:
Per gli intenti non corrispondenti, abbiamo scoperto alcuni casi interessanti. Ecco l'esempio di un input inaspettato da parte dell'utente.
Poiché nessuno degli intenti corrisponde all'input dell'utente "read my mind", l'intento di fallback predefinito è stato richiamato. L'Action di esempio implementa le best practice con una strategia di ripristino degli errori per riportare la conversazione nella giusta direzione o uscire dall'Action se l'interazione dell'utente continua nella direzione sbagliata.
Questo input dell'utente senza corrispondenza potrebbe indicare la necessità di migliorare il design aggiungendo più frasi di addestramento, più valori di entità o addirittura nuovi intenti per gestire l'input dell'utente.
Altri esempi interessanti riguardano i vari modi in cui l'utente può selezionare le diverse opzioni. In questo gioco, all'utente viene richiesto di selezionare una delle due porte in ogni stanza. Abbiamo notato che gli utenti possono rispondere con il nome completo della porta, come "porta verde", parzialmente con "verde" o aggiungendo altre parole, come "ovviamente la porta blu".
L'entità di queste opzioni è stata progettata per gestire corrispondenze parziali.
Abbiamo anche molte frasi di addestramento dell'intento per far fronte ai vari modi in cui l'utente potrebbe selezionare un'opzione.
Altri modi interessanti in cui gli utenti selezionano le opzioni sono in base alla posizione, come ad esempio "la prima", "la seconda porta" o "la porta numero 1". Poiché queste risposte non contengono l'entità del nome della porta, l'intento per le opzioni corrispondenti non viene attivato. Quindi servono nuovi intenti addestrati con frasi che corrispondano ai vari modi in cui l'utente può indicare la posizione.
Abbiamo riscontrato lo stesso problema durante il test del nostro modello di design iniziale per i giochi a quiz. Per questo tipo di giochi, abbiamo aggiunto diversi intenti, con frasi di addestramento come le seguenti:
Ecco un'altra conversazione interessante.
L'Action di esempio ha l'intento di gestire la richiesta dell'utente di tornare indietro nel gioco.
Tuttavia, sembra che sia necessario aggiungere un'altra frase di addestramento per gestire l'input dell'utente "go return" con questo intento. La risposta di fallback predefinita chiede all'utente di chiarire la richiesta. In base alla cronologia, possiamo vedere che l'utente ha riformulato la richiesta con "Voglio tornare indietro", che il nostro intento ha gestito correttamente. In questo caso, la strategia di recupero degli errori ha funzionato.
Abbiamo parlato brevemente dei risultati interessanti ottenuti dalla nostra Action e di come migliorarne il design. Consigliamo dunque di eseguire regolarmente il mining della pagina della cronologia per ottenere feedback preziosi e adattare il design per ridurre il numero di intenti non corrispondenti. Vai a vedere la funzione di addestramento che fornisce una GUI per aggiungere facilmente gli input senza corrispondenza dell'utente agli intenti esistenti.
Un buon punto di partenza è utilizzare un'Action di esempio, che puoi quindi estendere e personalizzare in base al tuo caso d'uso specifico. Ciò ti consente di iniziare con un'Action ben progettata che segue molte delle nostre best practice.
Ulteriori informazioni: vai alla community Actions on Google per confrontarti con altri sviluppatori. Partecipa al programma della community degli sviluppatori Actions on Google per ricevere 200 $ in credito mensile con Google Cloud e una t-shirt dell'Assistente dopo aver pubblicato la tua prima app.
Pubblicato da Matt Henderson, Product Manager, Google Play
Oggi diamo il via a Playtime, la nostra serie annuale di eventi globali con oltre 800 partecipanti a Berlino e San Francisco, nel corso dei quali condivideremo approfondimenti di esperti di tutto il mondo e gli ultimi aggiornamenti sui nostri prodotti. Gli eventi successivi si terranno a San Paolo, Singapore, Taipei, Seoul e Tokyo.
In Google Play, continuiamo a investire in strumenti che semplifichino lo sviluppo e la distribuzione delle app a un pubblico globale. Di seguito sono riportati alcuni degli aggiornamenti più interessanti presentati:
L'Android App Bundle è il nuovo formato di pubblicazione di Android, grazie al quale è possibile assicurare con maggiore facilità un'esperienza eccezionale con app di dimensioni ridotte. Le app di dimensioni minori hanno tassi di conversione più elevati e la nostra ricerca tra gli utenti mostra che la dimensione delle app è un fattore trainante nelle decisioni di disinstallazione. Con la modularizzazione dell'Android App Bundle, puoi inoltre fornire funzionalità non al momento dell'installazione ma on demand, riducendo ulteriormente le dimensioni dell'app.
Migliaia di app bundle sono già in produzione, con una riduzione media delle dimensioni del 35%. Qui annunciamo aggiornamenti che offrono motivi ulteriori per passare al bundle.
Per ulteriori informazioni su Android App Bundle, sulle funzionalità dinamiche e su tutti i vantaggi offerti dalla creazione di un'app più piccola e modulare, leggi il nostro post su Medium.
Abbiamo tenuto in considerazione le richieste ricevute dagli utenti di semplificazione della creazione di app istantanee e di recente abbiamo aumentato il limite di dimensioni a 10 MB per abilitare PROVA ORA sul Play Store e rimosso il requisito dell'URL. Per gli sviluppatori di giochi, abbiamo stretto una partnership con Unity su un plug-in di Google Play Instant e abbiamo integrato instant direttamente nel nuovo Cocos Creator.
Ora utilizziamo l'Android App Bundle per risolvere uno dei principali punti dolenti nella creazione di app istantanee. In precedenza, era necessario pubblicare sia un'app istantanea sia un'app installabile. Con Android Studio 3.2, era possibile pubblicare bundle abilitati per instant, ma era ancora necessario pubblicare un app bundle principale.
Ora non è necessario avere un codice separato. Con la versione beta di Android Studio 3.3, gli sviluppatori possono pubblicare un singolo app bundle e classificare l'intero bundle o un particolare modulo come abilitato per instant. L'app bundle unificato è il futuro delle esperienze con le app istantanee e speriamo che lo proverai.
Google Play Instant è ora disponibile per i titoli premium e le campagne di pre-registrazione, quindi gli utenti possono provare il gioco prima che venga lanciato e generare maggiore fermento nella community. Nuove app e nuovi giochi vengono aggiunti ogni giorno a Google Play Instant e siamo entusiasti di accogliere Umiro, di Devolver Digital, e Looney Tunes World of Mayhem, di Scopely, tra i primi ad approfittare di queste nuove funzionalità.
La Play Console offre due strumenti per aiutarti a monitorare le prestazioni e migliorare la qualità delle tue app. Il report pre-lancio esegue le tue app su dispositivi reali situati nel Firebase Test Lab e genera metadati utili per aiutarti a identificare e risolvere i problemi prima di inviare le app in produzione. Android vitals ti aiuta a tenere traccia delle prestazioni e della qualità della tua app sui dispositivi degli utenti nel mondo reale.
Ora abbiamo collegato questi due strumenti per fornire informazioni più utili. Ogni volta che un arresto anomalo nel mondo reale in Android vitals viene rilevato anche durante l'esecuzione di un report pre-lancio, avrai a disposizione nella dashboard di Android vitals tutti i metadati aggiuntivi del report pre-lancio, in modo da poter eseguire il debug in modo più efficace. Ciò vale in entrambe le direzioni, quindi se si verifica un arresto anomalo nei report pre-lancio che si sta già verificando nel mondo reale, sarai in grado di vedere l'impatto attuale su Android vitals, e ciò ti consentirà di definire meglio le priorità dei problemi evidenziati dai report pre-lancio.
Abbiamo apportato diversi aggiornamenti per semplificare la gestione della tua app e della tua attività con Play.
Siamo entusiasti anche di lanciare Academy for App Success, con nuovi corsi interattivi per aiutare gli sviluppatori a ottenere il massimo dalla Play Console, comprendere i criteri di Play e utilizzare le best practice per migliorare la qualità e aumentare le prestazioni aziendali. Questo nuovo programma gratuito ti consente di monitorare i tuoi progressi di apprendimento con quiz e risultati per dimostrare le tue conoscenze. Al momento è disponibile solo in inglese; presto saranno aggiunti nuovi contenuti e corsi tradotti.
Quanto hai trovato utile questo post del blog?
★ ★ ★ ★ ★
Pubblicato da Wesley Chun (@wescpy), Developer Advocate, Google Cloud
Google Cloud Platform (GCP) offre infrastrutture, prodotti serverless e API che consentono di creare, innovare e scalare. G Suite fornisce una raccolta di strumenti di produttività, API per sviluppatori, framework di estensibilità e piattaforme low-code che permettono l'integrazione con applicazioni, dati e utenti G Suite. Anche se ciascuna delle soluzioni è già valida di per se stessa, gli utenti possono ottenere maggiore potenza e flessibilità sfruttandole entrambe.
Nell'ultimo episodio del G Suite Dev Show mostrerò come trarre vantaggio dai potenti strumenti GCP utilizzando direttamente le applicazioni G Suite. Ad esempio BigQuery consente di ottenere informazioni preziose da enormi quantità di dati. Tuttavia, indipendentemente dalla "tecnologia" utilizzata, devi comunque giustificare e presentare i risultati al management, giusto? Hai già completato la parte relativa all'analisi dei big data, quindi perché non fare quel piccolo sforzo finale e sfruttare i punti di forza di G Suite? Nell'app di esempio inclusa nel video, illustriamo come passare dall'analisi dei big data a una presentazione per il management.
Questa app ha lo scopo di mostrarti cosa è possibile fare. Il video si sofferma un po' di più sul codice, mentre qui offriamo una panoramica più generale. Google Apps Script è una piattaforma di sviluppo serverless di G Suite che fornisce accesso diretto alle API G Suite oltre che ad alcuni strumenti GCP come BigQuery. La prima parte della tua app, ossia la funzione runQuery() invia una query a BigQuery from Apps Script, quindi si connette a Fogli Google per archiviare i risultati in un nuovo Foglio (nota che abbiamo tralasciato le definizioni delle variabili CONSTANT per brevità):
runQuery()
CONSTANT
function runQuery() { // make BigQuery request var request = {query: BQ_QUERY}; var queryResults = BigQuery.Jobs.query(request, PROJECT_ID); var jobId = queryResults.jobReference.jobId; queryResults = BigQuery.Jobs.getQueryResults(PROJECT_ID, jobId); var rows = queryResults.rows; // put results into a 2D array var data = new Array(rows.length); for (var i = 0; i < rows.length; i++) { var cols = rows[i].f; data[i] = new Array(cols.length); for (var j = 0; j < cols.length; j++) { data[i][j] = cols[j].v; } } // put array data into new Sheet var spreadsheet = SpreadsheetApp.create(QUERY_NAME); var sheet = spreadsheet.getActiveSheet(); var headers = queryResults.schema.fields; sheet.appendRow(headers); // header row sheet.getRange(START_ROW, START_COL, rows.length, headers.length).setValues(data); // return Sheet object for later use return spreadsheet; }
Restituisce un handle al nuovo Foglio Google che possiamo poi passare al componente successivo, utilizzando Fogli Google per generare un grafico dai dati BigQuery. Anche in questo caso tralasciamo le CONSTANTs e introduciamo la seconda parte dell'app, la funzione createColumnChart():
CONSTANTs
createColumnChart()
function createColumnChart(spreadsheet) { // create & put chart on 1st Sheet var sheet = spreadsheet.getSheets()[0]; var chart = sheet.newChart() .setChartType(Charts.ChartType.COLUMN) .addRange(sheet.getRange(START_CELL + ':' + END_CELL)) .setPosition(START_ROW, START_COL, OFFSET, OFFSET) .build(); sheet.insertChart(chart); // return Chart object for later use return chart; }
Il grafico viene restituito da createColumnChart() e possiamo utilizzarlo insieme all'oggetto Fogli per creare la presentazione di diapositive desiderata da Apps Script con Presentazioni Google nella terza parte della nostra app, la funzione createSlidePresentation():
createSlidePresentation()
function createSlidePresentation(spreadsheet, chart) { // create new deck & add title+subtitle var deck = SlidesApp.create(QUERY_NAME); var [title, subtitle] = deck.getSlides()[0].getPageElements(); title.asShape().getText().setText(QUERY_NAME); subtitle.asShape().getText().setText('via GCP and G Suite APIs:\n' + 'Google Apps Script, BigQuery, Sheets, Slides'); // add new slide and insert empty table var tableSlide = deck.appendSlide(SlidesApp.PredefinedLayout.BLANK); var sheetValues = spreadsheet.getSheets()[0].getRange( START_CELL + ':' + END_CELL).getValues(); var table = tableSlide.insertTable(sheetValues.length, sheetValues[0].length); // populate table with data in Sheets for (var i = 0; i < sheetValues.length; i++) { for (var j = 0; j < sheetValues[0].length; j++) { table.getCell(i, j).getText().setText(String(sheetValues[i][j])); } } // add new slide and add Sheets chart to it var chartSlide = deck.appendSlide(SlidesApp.PredefinedLayout.BLANK); chartSlide.insertSheetsChart(chart); // return Presentation object for later use return deck; }
Infine, abbiamo bisogno di un'applicazione driver che le richiami tutte e tre, una dopo l'altra, ossia la funzione createColumnChart():
function createBigQueryPresentation() { var spreadsheet = runQuery(); var chart = createColumnChart(spreadsheet); var deck = createSlidePresentation(spreadsheet, chart); }
Abbiamo tralasciato alcuni dettagli relativi al codice, ma spero che questo pseudocodice ti aiuti ad avviare il tuo progetto. Sei alla ricerca di un tutorial guidato per creare questa app, un passo alla volta? Fai pratica con il codelab g.co/codelabs/bigquery-sheets-slides. Puoi anche andare a vedere tutto il codice del nostro repository GitHub su github.com/googlecodelabs/bigquery-sheets-slides. Dopo aver eseguito correttamente l'app, vedrai i risultati dell'analisi dei big data rappresentati chiaramente in una delle Presentazioni Google.
Ma non è tutto, anzi questo è solo un esempio di come puoi sfruttare entrambe le piattaforme Google Cloud. L'app utilizzata è una di quelle presentate durante la sessione Cloud NEXT '18 di questa estate, che esplorava l'interoperabilità tra GCP e G Suite, ed è disponibile nel seguente video.
Resta sintonizzato, ci sono molti altri esempi in arrivo! Speriamo che questi video e il codelab ti ispirino a sviluppare le tue idee.
Questa edizione include: scrittura di Cloud Functions basate su test, chat conformi a HIPAA usando Firebase Realtime Database, Swifty Firebase, creazione di app CRUD Ionic con Cloud Firestore.
Salve sviluppatori Firebase! Recentemente su Twitter ho chiesto suggerimenti suoi vostri tutorial Firebase preferiti e sono stata travolta da un'ondata di risposte! Sono rimasta stupita dai tantissimi modi creativi con cui utilizzate i prodotti Firebase. Ecco alcuni tutorial che ho seguito recentemente.
Autore: Chris Esplin
Nel suo ultimo tutorial, il Google Developer Expert Chris Esplin spiega come scrivere Cloud Functions basate su test che usino Jest. Il Test-Driven Development (TDD) è un processo di sviluppo del software che ripete un breve ciclo di sviluppo: i requisiti vengono elaborati in test case e di conseguenza il software viene migliorato per superare i nuovi test. Parlando da persona che tende a testare le funzioni in produzione, consiglio vivamente di dare un'occhiata a questo blog per trovare soluzioni decisamente migliori!
Autore: David Szabo
L'HIPAA (Health Insurance Portability and Accountability Act) è una legislazione statunitense che fornisce disposizioni sulla privacy e sulla sicurezza dei dati al fine di salvaguardare le informazioni sanitarie. Le applicazioni che gestiscono determinati tipi di informazioni sanitarie devono essere conformi a queste normative, pertanto aderire a tali standard è essenziale per gli sviluppatori che desiderano distribuire questo tipo di applicazioni negli Stati Uniti. Molti sviluppatori mi hanno posto domande su Firebase e HIPAA, quindi sono stata davvero contenta di trovare questo tutorial che illustra come utilizzare la crittografia per creare applicazioni di chat compatibili con HIPAA.
Autore: Morten Bek Ditlevsen
Amo tutto ciò che riguarda Firebase e iOS, quindi non potevo escludere un tutorial su Swift! Morten usa un tocco di magia Swifty per risolvere alcuni degli ostacoli più comuni nell'utilizzo di Swift e Realtime Database. Il primo articolo della serie spiega come implementare il supporto per i tipi Codable in Firebase, che consente di passare da questo:
Codable
ref.observeSingleEvent(of: .value) { snapshot in guard snapshot.exists() else { /* HANDLE ERROR */ } guard let value = snapshot.value else { /* HANDLE ERROR */ } guard let product = Product(usingMyCustomJSONConversion: value) else { /* HANDLE ERROR */ } } let json: Any = product.myCustomJSONEncoding() ref.setValue(json)
a questo:
struct Product: Decodable { ... } ref.observeSingleEvent(of: .value) { (result: DecodeResult<Product>) -> Void in // Use result or handle error } try ref.setValue(product)
Autore: Nick Patrick, Radar.io
Radar è un toolkit che rimuove molte problematiche relative al contesto e al tracciamento della posizione, e rende estremamente semplice attività come sapere quando un utente entra o esce da un luogo pubblico noto o da un geofence personalizzato.
Il tutorial di Nick mostra come usare i webhook di Radar per attivare una Cloud Function for Firebase. In questo caso invia una notifica quando l'utente visita il suo bar preferito, e se stai creando un qualsiasi tipo di app basata sulla posizione, avrai molte possibilità di mettere in pratica ciò che hai imparato!
Autore: Jorge Vergara, JAVEBRATT
In questo tutorial troverai istruzioni dettagliate sull'implementazione di un'applicazione Ionic con Cloud Firestore. Se usi Angular e non hai ancora molta familiarità con Firebase, questo tutorial sarà un'ottima risorsa per te!
---
Grazie a tutti voi per avermi inviato i vostri suggerimenti! E se ancora non vedete il tutorial che avete consigliato, non preoccupatevi! Non sono riuscita a includere tutti gli incredibili suggerimenti che ho ricevuto, quindi rimanete sintonizzati in attesa dei prossimi post del blog. Se questi tutorial hanno ispirato la realizzazione di un prodotto con Firebase, fatemelo sapere! Mi trovate su Twitter su @ThatJenPerson. Non vedo l'ora di scoprire cosa creerete!
Pubblicato da Jamal Eason, Product Manager, Android
Android Studio 3.2 è pronto per essere scaricato già da qualche giorno. Android Studio 3.2 è il modo migliore per gli sviluppatori di app di sfruttare l'ultima versione di Android 9 Pie e creare il nuovo Android App bundle. Da quando abbiamo annunciato questo aggiornamento Android Studio al Google I/O '18, abbiamo perfezionato oltre 20 nuove funzionalità e concentrato i nostri sforzi per migliorare la qualità della versione stabile di Android Studio 3.2.
Ogni sviluppatore dovrebbe utilizzare Android Studio 3.2 per la transizione a un Android App Bundle, il nuovo formato di pubblicazione di app. Con il minimo sforzo, puoi generare un app bundle con Android Studio. Una volta caricato l'app bundle su Google Play, puoi distribuire app più piccole e ottimizzate per gli utenti. I primi utenti hanno già riscontrato una riduzione delle dimensioni delle app tra l'11% e il 64% grazie agli app bundle rispetto alle app APK legacy.
Un'altra caratteristica da non perdere è Energy Profiler. Questo nuovo Profiler offre una serie di strumenti che ti aiuteranno a diagnosticare e migliorare l'impatto energetico dell'app. Ottenere una maggiore durata della batteria del dispositivo è una delle richieste più frequenti degli utenti e, grazie a Energy Profiler in Android Studio 3.2, puoi fare la tua parte migliorando la durata della batteria e assicurandoti che l'app utilizzi la quantità giusta di energia al momento giusto.
Infine, ti consigliamo di andare a vedere anche la nuova funzionalità Android Emulator Snapshots. Utilizzando questa funzionalità, puoi catturare rapidamente un'istantanea dello stato corrente dell'emulatore, incluso quello dello schermo, delle app e delle impostazioni. Puoi riprendere o avviare l'istantanea dell'emulatore in meno di 2 secondi. Per gli sviluppatori di app che desiderano tempi di avvio super veloci o devono eseguire test in un ambiente Android prevedibile, Android Emulator Snapshots è la soluzione innovativa, ideale per lo sviluppo di app.
Oltre a queste importanti funzionalità, ci sono altre 20 novità e molti miglioramenti importanti dietro le quinte per Android Studio 3.2. Con Android Studio 3.2, puoi anche sviluppare utilizzando le ultime tecnologie, che vanno da Android Jetpack, alle API di Google Artificial Intelligence (AI) con Android Slices.
Ringraziamo chi ha già offerto il proprio feedback sin dall'inizio su entrambe le versioni canary e beta. Ci ha aiutato a migliorare la qualità e le funzionalità di Android Studio 3.2. Se sei pronto per la prossima versione stabile e desideri utilizzare un nuovo set di funzionalità di produttività, Android Studio 3.2 è pronto per essere scaricato.
Di seguito è riportato l'elenco delle nuove funzionalità di Android Studio 3.2, strutturato in base ai principali flussi di sviluppo.
Modello di Slices Provider
android.useAndroidX=true
gradle.properties
Build di Android App Bundle
Android Emulator Snapshots
Energy Profiler
startMethodTracing(String tracePath)
stopMethodTracing()
Per ricapitolare, l'ultima versoine canary di Android Studio 3.2 include le seguenti funzionalità principali.
Compilazione
Ottimizzazione
Per ulteriori informazioni, ti segnaliamo queste note sulla versione.
Scarica l'ultima versione di Android Studio 3.2 dalla pagina Download. Se utilizzi precedenti versioni canary di Android Studio, assicurati di eseguire l'aggiornamento ad Android Studio Canary 14 o versioni successive. Se vuoi mantenere anche una versione stabile di Android Studio, puoi eseguire contemporaneamente la versione di rilascio stabile e quella beta di Android Studio. Per saperne di più.
Per utilizzare le funzionalità dell'Android Emulator menzionate, assicurati di aver eseguito almeno Android Emulator v28.0.7+ scaricandolo tramite l'SDK Manager di Android Studio.
Non dimenticare di comunicarci il tuo feedback su cosa ti piace e su eventuali problemi o funzionalità a cui sei interessato. Tieni presente che, per mantenere una qualità elevata del prodotto, un paio di funzioni (ad esempio Navigation Editor) che hai visto nei precedenti canali di rilascio non sono abilitate di default nel canale di rilascio stabile. Se scopri un bug o qualsiasi altro problema, segnalacelo. Resta in contatto con noi, il team di sviluppo di Android Studio, sulla nostra pagina Google+ o su Twitter.