SlideShare uma empresa Scribd logo
1 de 18
Actions on Google e Alexa skills
per .NET lovers
5 Novembre 2019
v. 1.0
@MilanoChatbots
Lorenzo Giudici
Software Engineer
lorenzo.giudici@freeloop.it
github.com/lorenzogiudici5
twitter.com/lorenzogiudici5
linkedin.com/in/lorenzogiudici5
Workflow
B
a
c
k
e
n
d
Alexa Skills kit
Dialogflow
Alexa Voice Service
Google Assistant
Natural Language Understanding (NLU)
SCOPO
Trasformare le richieste dell'utente (query) fatte in linguaggio naturale in dati
fruibili e comprensibili da un «computer».
1. classificazione degli intenti di una frase
2. estrazione delle entità
{Ok Google/Alexa}, {parla con/apri} {Assistente Outlook} e dimmi se
{Ho qualche appuntamento domani}?
Intento
Conoscere eventi in calendario
Entità
Di quale giorno?
Invocation NameWake Word
Dialogflow
• Agents
• Intents
• Entities
• Training phrases
• Contexts
Alexa skills kit developer console
• Interaction model
• Intents
• Slotss
• Utterances
• Sessions
Json Request
Dialogflow Alexa
Intento
Conoscere eventi in calendario
Entità
Di quale giorno?
Backend
1. Azure Web app
• App service plan
2. Azure Function apps
• App service plan
• Consumption
Per iniziare
• Visual Studio 2019, Code, for Mac
• .NET Core (.NET Framework)
• Azure
• ngrok
• crea un indirizzo web che punta al tuo localhost
Google Assistant Alexa
Piattaforma web Actions on Google developer platform
+ Dialogflow
Alexa Skills Kit developer console
Pacchetti Nuget • Google.Apis.Dialogflow.v2
• Google.Protobuf
• Alexa.NET
Interactive
Canvas
Cosa sono?
• Presentate al Google I/O 2019
• Un nuovo modo di creare esperienze coinvolgenti a schermo intero
• Contenuti multimediali ricchi: AUDIO + GRAFICA + TOCCO
• Smart display e telefoni Android
• Il ciclo di vita di una è molto simile a quello di una Conversational Action.
• Viene restituita una HTMLResponse con url della web app da caricare (SPA)
• Interazione vocale e touch
• API Interactive Canvas (libreria Javascript)
<script
src="https://www.gstatic.com/assistant/interactivecanvas/api/interactive_canvas.min.js"></script>
Come funziona?
1. L’utente dice «Mostra immagine del leone»
2. La richiesta viene inoltrata a Dialogflow che la
elabora ed estrae l’Intent associato.
3. Viene contattato il backend che esegue il
codice corrispondente ed invia una
HtmlResponse con l’url della web app da
caricare e un oggetto con due informazioni:
command (mostra immagine) e animal (quale
immagine).
4. Al caricamento, la web app registra le
callbacks dell’interactiveCanvas API.
In particolare, la callback onUpdate riceverà
l’oggetto inviato come risposta dal backend.
La logica che risiede all’interno della nostra
web app aggiornerà l’html della pagina
mostrando l’immagine dell’animale richiesto.
Al termine della callback, il controllo può
tornare all’Action app del dispositivo che
rimane in attesa di un nuovo input dell’utente.
“Mostra
immagine del
Leone”
Backend
Dialogflow
Blazor
• Framework per realizzare web app interattive con C#
• Eliminare ridurre al minimo l’utilizzo di JavaScript
• (in alcuni contesti) alternativa a VueJS, Angular, React
Per approfondire Blazor..
Web UI interattive con Blazor Server – Moreno Gentili
• https://www.aspitalia.com/articoli/asp.net-core3/web-ui-interattive-blazor-server.aspx
Building modern web apps with Blazor – Emanuele Bartolesi
• https://media.aspitalia.com/events/netconf19-blazor.media
Blazor, realizzare Web UI interattive senza JavaScript – Andrea Dottor
• https://www.spreaker.com/user/dottor/blazor-realizzare-web-ui-interattive-sen
Grazie
Domande?
lorenzo.giudici@freeloop.it
github.com/lorenzogiudici5
twitter.com/lorenzogiudici5
linkedin.com/in/lorenzogiudici5

Mais conteúdo relacionado

Mais procurados

Managed Extensibility Framework (MEF)
Managed Extensibility Framework (MEF)Managed Extensibility Framework (MEF)
Managed Extensibility Framework (MEF)Manuel Scapolan
 
Slide typescript - net campus
Slide typescript - net campusSlide typescript - net campus
Slide typescript - net campusDotNetCampus
 
Architetttura Della Soluzione
Architetttura Della SoluzioneArchitetttura Della Soluzione
Architetttura Della SoluzioneLuca Milan
 
Intelligenza artificiale nel mondo front-end - CodeGen2021
Intelligenza artificiale nel mondo front-end - CodeGen2021Intelligenza artificiale nel mondo front-end - CodeGen2021
Intelligenza artificiale nel mondo front-end - CodeGen2021Michele Aponte
 
Del furia signalr-to-the-max
Del furia   signalr-to-the-maxDel furia   signalr-to-the-max
Del furia signalr-to-the-maxDotNetCampus
 
Javascript task automation
Javascript task automationJavascript task automation
Javascript task automationAntonio Liccardi
 
AntiPatterns: i vizi del programmatore
AntiPatterns: i vizi del programmatoreAntiPatterns: i vizi del programmatore
AntiPatterns: i vizi del programmatoreManuel Scapolan
 
DotNetCampus - Continuous Integration con Sql Server
DotNetCampus - Continuous Integration con Sql ServerDotNetCampus - Continuous Integration con Sql Server
DotNetCampus - Continuous Integration con Sql ServerAlessandro Alpi
 
Dot netcampus2015 green-template
Dot netcampus2015 green-templateDot netcampus2015 green-template
Dot netcampus2015 green-templateDotNetCampus
 
[Alam aeki] Guida illustrata alla modellazione di un dominio con Event Sourci...
[Alam aeki] Guida illustrata alla modellazione di un dominio con Event Sourci...[Alam aeki] Guida illustrata alla modellazione di un dominio con Event Sourci...
[Alam aeki] Guida illustrata alla modellazione di un dominio con Event Sourci...Andrea Balducci
 
APPSTUDIO: DA ZERO ALLO STORE IN 50 MINUTI!
APPSTUDIO: DA ZERO ALLO STORE IN 50 MINUTI!APPSTUDIO: DA ZERO ALLO STORE IN 50 MINUTI!
APPSTUDIO: DA ZERO ALLO STORE IN 50 MINUTI!DotNetCampus
 
ARCHITETTURA DI UN'APPLICAZIONE SCALABILE
ARCHITETTURA DI UN'APPLICAZIONE SCALABILEARCHITETTURA DI UN'APPLICAZIONE SCALABILE
ARCHITETTURA DI UN'APPLICAZIONE SCALABILEDotNetCampus
 
Training Signal Webtrends
Training Signal WebtrendsTraining Signal Webtrends
Training Signal WebtrendsStefano Iaboni
 
Programmazione funzionale: un primo approccio attraverso F#
Programmazione funzionale: un primo approccio attraverso F#Programmazione funzionale: un primo approccio attraverso F#
Programmazione funzionale: un primo approccio attraverso F#Commit University
 
Async: scalabilità e responsiveness senza pari! @ CDays
Async: scalabilità e responsiveness senza pari! @ CDaysAsync: scalabilità e responsiveness senza pari! @ CDays
Async: scalabilità e responsiveness senza pari! @ CDaysMatteo Baglini
 
2015.04.23 Azure Community Bootcamp 2015 Keynote Italy
2015.04.23 Azure Community Bootcamp 2015 Keynote Italy2015.04.23 Azure Community Bootcamp 2015 Keynote Italy
2015.04.23 Azure Community Bootcamp 2015 Keynote ItalyMarco Parenzan
 
Wasm and Blazor CDays keynote
Wasm and Blazor CDays keynoteWasm and Blazor CDays keynote
Wasm and Blazor CDays keynoteNicolò Carandini
 
70-485: ADVANCED OF DEVELOPING WINDOWS STORE APPS USING C#
70-485: ADVANCED OF DEVELOPING WINDOWS STORE APPS USING C#70-485: ADVANCED OF DEVELOPING WINDOWS STORE APPS USING C#
70-485: ADVANCED OF DEVELOPING WINDOWS STORE APPS USING C#DotNetCampus
 

Mais procurados (20)

Managed Extensibility Framework (MEF)
Managed Extensibility Framework (MEF)Managed Extensibility Framework (MEF)
Managed Extensibility Framework (MEF)
 
Slide typescript - net campus
Slide typescript - net campusSlide typescript - net campus
Slide typescript - net campus
 
Architetttura Della Soluzione
Architetttura Della SoluzioneArchitetttura Della Soluzione
Architetttura Della Soluzione
 
Intelligenza artificiale nel mondo front-end - CodeGen2021
Intelligenza artificiale nel mondo front-end - CodeGen2021Intelligenza artificiale nel mondo front-end - CodeGen2021
Intelligenza artificiale nel mondo front-end - CodeGen2021
 
Del furia signalr-to-the-max
Del furia   signalr-to-the-maxDel furia   signalr-to-the-max
Del furia signalr-to-the-max
 
Javascript task automation
Javascript task automationJavascript task automation
Javascript task automation
 
AntiPatterns: i vizi del programmatore
AntiPatterns: i vizi del programmatoreAntiPatterns: i vizi del programmatore
AntiPatterns: i vizi del programmatore
 
DotNetCampus - Continuous Integration con Sql Server
DotNetCampus - Continuous Integration con Sql ServerDotNetCampus - Continuous Integration con Sql Server
DotNetCampus - Continuous Integration con Sql Server
 
Dot netcampus2015 green-template
Dot netcampus2015 green-templateDot netcampus2015 green-template
Dot netcampus2015 green-template
 
[Alam aeki] Guida illustrata alla modellazione di un dominio con Event Sourci...
[Alam aeki] Guida illustrata alla modellazione di un dominio con Event Sourci...[Alam aeki] Guida illustrata alla modellazione di un dominio con Event Sourci...
[Alam aeki] Guida illustrata alla modellazione di un dominio con Event Sourci...
 
APPSTUDIO: DA ZERO ALLO STORE IN 50 MINUTI!
APPSTUDIO: DA ZERO ALLO STORE IN 50 MINUTI!APPSTUDIO: DA ZERO ALLO STORE IN 50 MINUTI!
APPSTUDIO: DA ZERO ALLO STORE IN 50 MINUTI!
 
Wcf data services
Wcf data servicesWcf data services
Wcf data services
 
Akka.net & Actor Model
Akka.net & Actor ModelAkka.net & Actor Model
Akka.net & Actor Model
 
ARCHITETTURA DI UN'APPLICAZIONE SCALABILE
ARCHITETTURA DI UN'APPLICAZIONE SCALABILEARCHITETTURA DI UN'APPLICAZIONE SCALABILE
ARCHITETTURA DI UN'APPLICAZIONE SCALABILE
 
Training Signal Webtrends
Training Signal WebtrendsTraining Signal Webtrends
Training Signal Webtrends
 
Programmazione funzionale: un primo approccio attraverso F#
Programmazione funzionale: un primo approccio attraverso F#Programmazione funzionale: un primo approccio attraverso F#
Programmazione funzionale: un primo approccio attraverso F#
 
Async: scalabilità e responsiveness senza pari! @ CDays
Async: scalabilità e responsiveness senza pari! @ CDaysAsync: scalabilità e responsiveness senza pari! @ CDays
Async: scalabilità e responsiveness senza pari! @ CDays
 
2015.04.23 Azure Community Bootcamp 2015 Keynote Italy
2015.04.23 Azure Community Bootcamp 2015 Keynote Italy2015.04.23 Azure Community Bootcamp 2015 Keynote Italy
2015.04.23 Azure Community Bootcamp 2015 Keynote Italy
 
Wasm and Blazor CDays keynote
Wasm and Blazor CDays keynoteWasm and Blazor CDays keynote
Wasm and Blazor CDays keynote
 
70-485: ADVANCED OF DEVELOPING WINDOWS STORE APPS USING C#
70-485: ADVANCED OF DEVELOPING WINDOWS STORE APPS USING C#70-485: ADVANCED OF DEVELOPING WINDOWS STORE APPS USING C#
70-485: ADVANCED OF DEVELOPING WINDOWS STORE APPS USING C#
 

Semelhante a Actions on Google e Alexa skills per .NET lovers

Drupal Day 2012 - Applicazioni mobile multipiattaforma integrate con Drupal 7...
Drupal Day 2012 - Applicazioni mobile multipiattaforma integrate con Drupal 7...Drupal Day 2012 - Applicazioni mobile multipiattaforma integrate con Drupal 7...
Drupal Day 2012 - Applicazioni mobile multipiattaforma integrate con Drupal 7...DrupalDay
 
Introduzione allo sviluppo di skill alexa
Introduzione allo sviluppo di skill alexaIntroduzione allo sviluppo di skill alexa
Introduzione allo sviluppo di skill alexaAntonio Di Motta
 
Andrea Ceroni - Alexa, please deploy my Azure architecture - Codemotion Rome ...
Andrea Ceroni - Alexa, please deploy my Azure architecture - Codemotion Rome ...Andrea Ceroni - Alexa, please deploy my Azure architecture - Codemotion Rome ...
Andrea Ceroni - Alexa, please deploy my Azure architecture - Codemotion Rome ...Codemotion
 
Introduzione a GAE - Alessandro Aglietti e Lorenzo Bugiani
Introduzione a GAE - Alessandro Aglietti e Lorenzo BugianiIntroduzione a GAE - Alessandro Aglietti e Lorenzo Bugiani
Introduzione a GAE - Alessandro Aglietti e Lorenzo Bugianifirenze-gtug
 
ios 8 - parte 1 - intro - ita
ios 8 - parte 1 - intro - itaios 8 - parte 1 - intro - ita
ios 8 - parte 1 - intro - itaDario Rusignuolo
 
DrupalDay 2014: AngularJS + IonicFramework + Drupal Services
DrupalDay 2014: AngularJS + IonicFramework + Drupal ServicesDrupalDay 2014: AngularJS + IonicFramework + Drupal Services
DrupalDay 2014: AngularJS + IonicFramework + Drupal ServicesMichel Morelli
 
DDAY2014 - Costruire una app mobile con Ionic, AngularJS ed ovviamente Drupal
DDAY2014 - Costruire una app mobile con Ionic, AngularJS ed ovviamente DrupalDDAY2014 - Costruire una app mobile con Ionic, AngularJS ed ovviamente Drupal
DDAY2014 - Costruire una app mobile con Ionic, AngularJS ed ovviamente DrupalDrupalDay
 
AngularJS – Reinventare le applicazioni web
AngularJS – Reinventare le applicazioni webAngularJS – Reinventare le applicazioni web
AngularJS – Reinventare le applicazioni webLuca Milan
 
Da A a Bot con un pizzico di Cognitive
Da A a Bot con un pizzico di CognitiveDa A a Bot con un pizzico di Cognitive
Da A a Bot con un pizzico di CognitiveAlessio Iafrate
 
Working between the clouds
Working between the cloudsWorking between the clouds
Working between the cloudsDavide Cerbo
 
Wearable Lab: Progettazione per Apple Watch
Wearable Lab: Progettazione per Apple WatchWearable Lab: Progettazione per Apple Watch
Wearable Lab: Progettazione per Apple WatchPaolo Musolino
 
Progettazione per Apple Watch - Todi Appy Days 2015
Progettazione per Apple Watch - Todi Appy Days 2015Progettazione per Apple Watch - Todi Appy Days 2015
Progettazione per Apple Watch - Todi Appy Days 2015Todi Appy Days
 
SugarCRM REST API: Un’applicazione in appena dieci minuti
SugarCRM REST API: Un’applicazione in appena dieci minutiSugarCRM REST API: Un’applicazione in appena dieci minuti
SugarCRM REST API: Un’applicazione in appena dieci minutiAntonio Musarra
 
Dal cloud al mobile con tecnologie Google
Dal cloud al mobile con tecnologie GoogleDal cloud al mobile con tecnologie Google
Dal cloud al mobile con tecnologie GoogleDiego Giorgini
 
Come si creano le app Android
Come si creano le app AndroidCome si creano le app Android
Come si creano le app AndroidAndrea Lazzarotto
 
Lo sai che si può fare DDD in Javascript grazie a Typescript? Visual Studio e...
Lo sai che si può fare DDD in Javascript grazie a Typescript? Visual Studio e...Lo sai che si può fare DDD in Javascript grazie a Typescript? Visual Studio e...
Lo sai che si può fare DDD in Javascript grazie a Typescript? Visual Studio e...Marco Parenzan
 

Semelhante a Actions on Google e Alexa skills per .NET lovers (20)

Drupal Day 2012 - Applicazioni mobile multipiattaforma integrate con Drupal 7...
Drupal Day 2012 - Applicazioni mobile multipiattaforma integrate con Drupal 7...Drupal Day 2012 - Applicazioni mobile multipiattaforma integrate con Drupal 7...
Drupal Day 2012 - Applicazioni mobile multipiattaforma integrate con Drupal 7...
 
Introduzione allo sviluppo di skill alexa
Introduzione allo sviluppo di skill alexaIntroduzione allo sviluppo di skill alexa
Introduzione allo sviluppo di skill alexa
 
Andrea Ceroni - Alexa, please deploy my Azure architecture - Codemotion Rome ...
Andrea Ceroni - Alexa, please deploy my Azure architecture - Codemotion Rome ...Andrea Ceroni - Alexa, please deploy my Azure architecture - Codemotion Rome ...
Andrea Ceroni - Alexa, please deploy my Azure architecture - Codemotion Rome ...
 
Introduzione a GAE - Alessandro Aglietti e Lorenzo Bugiani
Introduzione a GAE - Alessandro Aglietti e Lorenzo BugianiIntroduzione a GAE - Alessandro Aglietti e Lorenzo Bugiani
Introduzione a GAE - Alessandro Aglietti e Lorenzo Bugiani
 
ios 8 - parte 1 - intro - ita
ios 8 - parte 1 - intro - itaios 8 - parte 1 - intro - ita
ios 8 - parte 1 - intro - ita
 
DrupalDay 2014: AngularJS + IonicFramework + Drupal Services
DrupalDay 2014: AngularJS + IonicFramework + Drupal ServicesDrupalDay 2014: AngularJS + IonicFramework + Drupal Services
DrupalDay 2014: AngularJS + IonicFramework + Drupal Services
 
DDAY2014 - Costruire una app mobile con Ionic, AngularJS ed ovviamente Drupal
DDAY2014 - Costruire una app mobile con Ionic, AngularJS ed ovviamente DrupalDDAY2014 - Costruire una app mobile con Ionic, AngularJS ed ovviamente Drupal
DDAY2014 - Costruire una app mobile con Ionic, AngularJS ed ovviamente Drupal
 
AngularJS – Reinventare le applicazioni web
AngularJS – Reinventare le applicazioni webAngularJS – Reinventare le applicazioni web
AngularJS – Reinventare le applicazioni web
 
Da A a Bot con un pizzico di Cognitive
Da A a Bot con un pizzico di CognitiveDa A a Bot con un pizzico di Cognitive
Da A a Bot con un pizzico di Cognitive
 
#dd12 grillo daniele_xpages_tips_tricks_rev2
#dd12 grillo daniele_xpages_tips_tricks_rev2#dd12 grillo daniele_xpages_tips_tricks_rev2
#dd12 grillo daniele_xpages_tips_tricks_rev2
 
Working between the clouds
Working between the cloudsWorking between the clouds
Working between the clouds
 
Wearable Lab: Progettazione per Apple Watch
Wearable Lab: Progettazione per Apple WatchWearable Lab: Progettazione per Apple Watch
Wearable Lab: Progettazione per Apple Watch
 
Progettazione per Apple Watch - Todi Appy Days 2015
Progettazione per Apple Watch - Todi Appy Days 2015Progettazione per Apple Watch - Todi Appy Days 2015
Progettazione per Apple Watch - Todi Appy Days 2015
 
SugarCRM REST API: Un’applicazione in appena dieci minuti
SugarCRM REST API: Un’applicazione in appena dieci minutiSugarCRM REST API: Un’applicazione in appena dieci minuti
SugarCRM REST API: Un’applicazione in appena dieci minuti
 
Swagger per tutti
Swagger per tuttiSwagger per tutti
Swagger per tutti
 
Many Designs Elements
Many Designs ElementsMany Designs Elements
Many Designs Elements
 
Dal cloud al mobile con tecnologie Google
Dal cloud al mobile con tecnologie GoogleDal cloud al mobile con tecnologie Google
Dal cloud al mobile con tecnologie Google
 
Come si creano le app Android
Come si creano le app AndroidCome si creano le app Android
Come si creano le app Android
 
Lo sai che si può fare DDD in Javascript grazie a Typescript? Visual Studio e...
Lo sai che si può fare DDD in Javascript grazie a Typescript? Visual Studio e...Lo sai che si può fare DDD in Javascript grazie a Typescript? Visual Studio e...
Lo sai che si può fare DDD in Javascript grazie a Typescript? Visual Studio e...
 
Introduzione a node.js
Introduzione a node.jsIntroduzione a node.js
Introduzione a node.js
 

Actions on Google e Alexa skills per .NET lovers

  • 1. Actions on Google e Alexa skills per .NET lovers 5 Novembre 2019 v. 1.0 @MilanoChatbots
  • 3.
  • 5. Natural Language Understanding (NLU) SCOPO Trasformare le richieste dell'utente (query) fatte in linguaggio naturale in dati fruibili e comprensibili da un «computer». 1. classificazione degli intenti di una frase 2. estrazione delle entità {Ok Google/Alexa}, {parla con/apri} {Assistente Outlook} e dimmi se {Ho qualche appuntamento domani}? Intento Conoscere eventi in calendario Entità Di quale giorno? Invocation NameWake Word
  • 6. Dialogflow • Agents • Intents • Entities • Training phrases • Contexts
  • 7. Alexa skills kit developer console • Interaction model • Intents • Slotss • Utterances • Sessions
  • 8. Json Request Dialogflow Alexa Intento Conoscere eventi in calendario Entità Di quale giorno?
  • 9. Backend 1. Azure Web app • App service plan 2. Azure Function apps • App service plan • Consumption
  • 10. Per iniziare • Visual Studio 2019, Code, for Mac • .NET Core (.NET Framework) • Azure • ngrok • crea un indirizzo web che punta al tuo localhost Google Assistant Alexa Piattaforma web Actions on Google developer platform + Dialogflow Alexa Skills Kit developer console Pacchetti Nuget • Google.Apis.Dialogflow.v2 • Google.Protobuf • Alexa.NET
  • 11.
  • 13. Cosa sono? • Presentate al Google I/O 2019 • Un nuovo modo di creare esperienze coinvolgenti a schermo intero • Contenuti multimediali ricchi: AUDIO + GRAFICA + TOCCO • Smart display e telefoni Android • Il ciclo di vita di una è molto simile a quello di una Conversational Action. • Viene restituita una HTMLResponse con url della web app da caricare (SPA) • Interazione vocale e touch • API Interactive Canvas (libreria Javascript) <script src="https://www.gstatic.com/assistant/interactivecanvas/api/interactive_canvas.min.js"></script>
  • 14. Come funziona? 1. L’utente dice «Mostra immagine del leone» 2. La richiesta viene inoltrata a Dialogflow che la elabora ed estrae l’Intent associato. 3. Viene contattato il backend che esegue il codice corrispondente ed invia una HtmlResponse con l’url della web app da caricare e un oggetto con due informazioni: command (mostra immagine) e animal (quale immagine). 4. Al caricamento, la web app registra le callbacks dell’interactiveCanvas API. In particolare, la callback onUpdate riceverà l’oggetto inviato come risposta dal backend. La logica che risiede all’interno della nostra web app aggiornerà l’html della pagina mostrando l’immagine dell’animale richiesto. Al termine della callback, il controllo può tornare all’Action app del dispositivo che rimane in attesa di un nuovo input dell’utente. “Mostra immagine del Leone” Backend Dialogflow
  • 15. Blazor • Framework per realizzare web app interattive con C# • Eliminare ridurre al minimo l’utilizzo di JavaScript • (in alcuni contesti) alternativa a VueJS, Angular, React
  • 16. Per approfondire Blazor.. Web UI interattive con Blazor Server – Moreno Gentili • https://www.aspitalia.com/articoli/asp.net-core3/web-ui-interattive-blazor-server.aspx Building modern web apps with Blazor – Emanuele Bartolesi • https://media.aspitalia.com/events/netconf19-blazor.media Blazor, realizzare Web UI interattive senza JavaScript – Andrea Dottor • https://www.spreaker.com/user/dottor/blazor-realizzare-web-ui-interattive-sen
  • 17.