SlideShare a Scribd company logo
 Cos’è un bot
 Come sviluppare un bot con Microsoft Bot Framework
 Cognitive services
 Custom vision
 Pubblicazione
Agenda
Da A a Bot con un pizzico di
Cognitive
Alessio Iafrate
Freelance Developer e Fondatore DotNetAbruzzo
http://www.acquariusoft.com
@alessioiafrate
alessioiafrate@hotmail.com
ll bot è un programma che accede alla rete attraverso lo stesso tipo di
canali utilizzati dagli utenti umani.
Programmi di questo tipo sono diffusi in relazione a molti diversi servizi in
rete, con scopi vari, ma in genere legati all'automazione di compiti che
sarebbero troppo gravosi o complessi per gli utenti umani.
(Fonte Wikipedia)
Cosa è un bot?
 Facebook Messenger
 Telegram
 Skype
 Slack
 Cortana
 SMS
 Sito Web
 Email
 ………….
Dove posso ospitare un bot
Per ogni piattaforma abbiamo API differenti con metodologie diverse di
sviluppo e concetti propri di ogni servizio.
- Sviluppo per ogni singola piattaforma
- Utilizzo framework comune (Es. Microsoft Bot Framework)
Come lo sviluppo?
 Account azure anche in versione trial
 Conoscenze di C# o node.js
 Visual Studio anche in versione community (opzionale)
La lista della spesa
 Bot Framework Connector (Singola Api rest che permette al bot di
comunicare con i vari canali)
 Activity (Oggetto contenente i vari dati della conversazione)
 Dialog (Gestisce la conversazione)
 State (Gestione dati associati all’utente, alla conversazione e all’utente
nella conversazione)
Concetti base
Il nostro primo bot
Un’occhiata al codice - Il controller
La classe principale del
progetto è un controller che
gestisce le chiamate in
ingresso ed in base al tipo e
distingue tra un messaggio
inviato oppure operazioni di
gestione ( typing, ping,
aggiunta e rimozione di
membri dalla conversazione
ecc)
Un’occhiata al codice - Dialog
La classe dialog permette di
gestire i messaggi inviati
dall’utente con tutti i dettagli
associati e di rispondere di
conseguenza
Memorizziamo i dati
Il bot builder SDK permette di
memorizzare i dati delle sessioni in
• Memoria (volatile)
• Azure table
• Database SQL
• CosmosDB
Nel template di default la registrazione
viene eseguita nel metodo
Application_Start del Global.asax
Come gestisco il debug?
Con il bot framework
emulator possiamo testare
in locale il nostro bot con
una semplice interfaccia
che mostra anche il log
delle chiamate
E’ open source e disponibile
su github
Demo time!
Cosa ci fornisce il framework:
 Gestione dello stato dell’utente
 Domanda e risposta (Richiesta di informazioni o selezione di una
scelta)
 Invio messaggio ad un’utente a seguito di un evento lato server
Interagire con l’utente
Il context permette di gestire i dati associati all’utente e per farlo abbiamo
a disposizione
 UserData relativo allo User
 ConversationData relativo alla Conversazione
 PrivateConversationData relativo a quell’utente in quella specifica
conversazione
Per gestirli esistono i relativi metodi get e set (GetUserData,
SetUserData, ecc)
Lo stato dell’utente
Un’occhiata al codice - PromptDialog
La classe PromptDialog permette di gestire le conversazioni basate basate su domanda e risposta, in
questo caso il metodo Text (o quello relativo al dato che vogliamo ottenere) prende come parametro
una callback alla funzione da richiamare direttamente dopo che l’utente ha inviato una risposta
Un’occhiata al codice - Proactive Message
Per inviare un messaggio all’utente è necessario ricreare tutta la cascata di connessioni per
raggiungerlo utilizzando i dati memorizzati precedentemente
I Cognitive services
Aggiungiamo un pizzo di intelligenza!
Custom Vision
Demo custom vision
Integriamo il tutto
Con una semplice chiamata
Rest è possibile inviare i
dati della nostra immagine e
ricevere i dati
dell’elaborazione
Come leggere le immagini inviate
Il message contiene una
lista di file in Attachments
che contengono l’url da cui
con una semplice chiamata
http è possibile scaricare i
files che ci sono stati inviati
Demo time!
Andiamo a pubblicare
 https://docs.microsoft.com/en-us/bot-framework/
 https://github.com/Microsoft/BotFramework-Emulator
 https://azure.microsoft.com/en-us/services/cognitive-services/
 https://www.customvision.ai/
 http://t.me/RostyBot
 https://github.com/a-iafrate/Rosty
Link
Domande?
Grazie a tutti!

More Related Content

Similar to Come utilizzare il bot framework

Sistemi di web conferencing - Caso di studio Apache OpenMeetings
Sistemi di web conferencing - Caso di studio Apache OpenMeetingsSistemi di web conferencing - Caso di studio Apache OpenMeetings
Sistemi di web conferencing - Caso di studio Apache OpenMeetings
Infoeinternet
 
Silverlight in Action
Silverlight in ActionSilverlight in Action
Silverlight in Action
DotNetMarche
 
Liferay: Esporre Web Services Custom
Liferay: Esporre Web Services CustomLiferay: Esporre Web Services Custom
Liferay: Esporre Web Services Custom
Antonio Musarra
 
September 2010 - Gatein
September 2010 - GateinSeptember 2010 - Gatein
September 2010 - Gatein
JBug Italy
 
Win05 accesso ai dati in win 8
Win05   accesso ai dati in win 8Win05   accesso ai dati in win 8
Win05 accesso ai dati in win 8DotNetCampus
 
Dot net framework 2
Dot net framework 2Dot net framework 2
Dot net framework 2
Felice Pescatore
 
Progettato per specialisti del web
Progettato per specialisti del webProgettato per specialisti del web
Progettato per specialisti del web
Eugenio Uccheddu
 
Machine learning models continuous deployment on azure using devops
Machine learning models continuous deployment on azure using devopsMachine learning models continuous deployment on azure using devops
Machine learning models continuous deployment on azure using devops
Igor Antonacci
 
Programmazione per il web - WebWord
Programmazione per il web - WebWordProgrammazione per il web - WebWord
Programmazione per il web - WebWord
Alartzero
 
Meetup DotNetCode A.I. Bot Framework and Azure Functions
Meetup DotNetCode A.I. Bot Framework and Azure FunctionsMeetup DotNetCode A.I. Bot Framework and Azure Functions
Meetup DotNetCode A.I. Bot Framework and Azure Functions
dotnetcode
 
Writing apps for android with .net
Writing apps for android with .net Writing apps for android with .net
Writing apps for android with .net Leonardo Alario
 
Liferay Web Services - Come importare utenti da un foglio Excel
Liferay Web Services - Come importare utenti da un foglio ExcelLiferay Web Services - Come importare utenti da un foglio Excel
Liferay Web Services - Come importare utenti da un foglio Excel
Antonio Musarra
 
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
Michele Aponte
 
HTML5, il lato client della forza...
HTML5, il lato client della forza... HTML5, il lato client della forza...
HTML5, il lato client della forza...
Marco Vito Moscaritolo
 
Corso sharepoint D2
Corso sharepoint D2Corso sharepoint D2
Corso sharepoint D2
Decatec
 
Introduzione a node.js
Introduzione a node.jsIntroduzione a node.js
Introduzione a node.js
Luciano Colosio
 
Introduzione a Node.js
Introduzione a Node.jsIntroduzione a Node.js
Introduzione a Node.js
Michele Capra
 
DDive - 8.5.2 Xpages - L'evoluzione continua
DDive - 8.5.2 Xpages - L'evoluzione continuaDDive - 8.5.2 Xpages - L'evoluzione continua
DDive - 8.5.2 Xpages - L'evoluzione continua
Dominopoint - Italian Lotus User Group
 

Similar to Come utilizzare il bot framework (20)

Sistemi di web conferencing - Caso di studio Apache OpenMeetings
Sistemi di web conferencing - Caso di studio Apache OpenMeetingsSistemi di web conferencing - Caso di studio Apache OpenMeetings
Sistemi di web conferencing - Caso di studio Apache OpenMeetings
 
Silverlight in Action
Silverlight in ActionSilverlight in Action
Silverlight in Action
 
Buzzreader engine
Buzzreader engineBuzzreader engine
Buzzreader engine
 
Liferay: Esporre Web Services Custom
Liferay: Esporre Web Services CustomLiferay: Esporre Web Services Custom
Liferay: Esporre Web Services Custom
 
September 2010 - Gatein
September 2010 - GateinSeptember 2010 - Gatein
September 2010 - Gatein
 
Win05 accesso ai dati in win 8
Win05   accesso ai dati in win 8Win05   accesso ai dati in win 8
Win05 accesso ai dati in win 8
 
Corso Javascript
Corso JavascriptCorso Javascript
Corso Javascript
 
Dot net framework 2
Dot net framework 2Dot net framework 2
Dot net framework 2
 
Progettato per specialisti del web
Progettato per specialisti del webProgettato per specialisti del web
Progettato per specialisti del web
 
Machine learning models continuous deployment on azure using devops
Machine learning models continuous deployment on azure using devopsMachine learning models continuous deployment on azure using devops
Machine learning models continuous deployment on azure using devops
 
Programmazione per il web - WebWord
Programmazione per il web - WebWordProgrammazione per il web - WebWord
Programmazione per il web - WebWord
 
Meetup DotNetCode A.I. Bot Framework and Azure Functions
Meetup DotNetCode A.I. Bot Framework and Azure FunctionsMeetup DotNetCode A.I. Bot Framework and Azure Functions
Meetup DotNetCode A.I. Bot Framework and Azure Functions
 
Writing apps for android with .net
Writing apps for android with .net Writing apps for android with .net
Writing apps for android with .net
 
Liferay Web Services - Come importare utenti da un foglio Excel
Liferay Web Services - Come importare utenti da un foglio ExcelLiferay Web Services - Come importare utenti da un foglio Excel
Liferay Web Services - Come importare utenti da un foglio Excel
 
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
 
HTML5, il lato client della forza...
HTML5, il lato client della forza... HTML5, il lato client della forza...
HTML5, il lato client della forza...
 
Corso sharepoint D2
Corso sharepoint D2Corso sharepoint D2
Corso sharepoint D2
 
Introduzione a node.js
Introduzione a node.jsIntroduzione a node.js
Introduzione a node.js
 
Introduzione a Node.js
Introduzione a Node.jsIntroduzione a Node.js
Introduzione a Node.js
 
DDive - 8.5.2 Xpages - L'evoluzione continua
DDive - 8.5.2 Xpages - L'evoluzione continuaDDive - 8.5.2 Xpages - L'evoluzione continua
DDive - 8.5.2 Xpages - L'evoluzione continua
 

More from Alessio Iafrate

Workshop sulle spatial anchors
Workshop sulle spatial anchorsWorkshop sulle spatial anchors
Workshop sulle spatial anchors
Alessio Iafrate
 
Realtà aumentata ed Azure, un binomio imbattibile
Realtà aumentata ed Azure, un binomio imbattibileRealtà aumentata ed Azure, un binomio imbattibile
Realtà aumentata ed Azure, un binomio imbattibile
Alessio Iafrate
 
Custom Vision e Win.ml per le nostre app intelligenti offline
Custom Vision e Win.ml per le nostre app intelligenti offlineCustom Vision e Win.ml per le nostre app intelligenti offline
Custom Vision e Win.ml per le nostre app intelligenti offline
Alessio Iafrate
 
What's new in Visual Studio 2019
What's new in Visual Studio 2019What's new in Visual Studio 2019
What's new in Visual Studio 2019
Alessio Iafrate
 
Santa Claus Alert: ovvero come sfruttare WinML per intercettare babbo natale
Santa Claus Alert: ovvero come sfruttare WinML per intercettare babbo nataleSanta Claus Alert: ovvero come sfruttare WinML per intercettare babbo natale
Santa Claus Alert: ovvero come sfruttare WinML per intercettare babbo natale
Alessio Iafrate
 
Tecniche di Machine Learning per l’analisi offline dei dati aziendali
Tecniche di Machine Learning per l’analisi offline dei dati aziendaliTecniche di Machine Learning per l’analisi offline dei dati aziendali
Tecniche di Machine Learning per l’analisi offline dei dati aziendali
Alessio Iafrate
 
Aperitech winml
Aperitech winmlAperitech winml
Aperitech winml
Alessio Iafrate
 
Xamarin forms
Xamarin formsXamarin forms
Xamarin forms
Alessio Iafrate
 
Windows 10 e Universal Windows Platform
Windows 10 e Universal Windows PlatformWindows 10 e Universal Windows Platform
Windows 10 e Universal Windows Platform
Alessio Iafrate
 
Introduzione alle Universal App
Introduzione alle Universal AppIntroduzione alle Universal App
Introduzione alle Universal App
Alessio Iafrate
 

More from Alessio Iafrate (10)

Workshop sulle spatial anchors
Workshop sulle spatial anchorsWorkshop sulle spatial anchors
Workshop sulle spatial anchors
 
Realtà aumentata ed Azure, un binomio imbattibile
Realtà aumentata ed Azure, un binomio imbattibileRealtà aumentata ed Azure, un binomio imbattibile
Realtà aumentata ed Azure, un binomio imbattibile
 
Custom Vision e Win.ml per le nostre app intelligenti offline
Custom Vision e Win.ml per le nostre app intelligenti offlineCustom Vision e Win.ml per le nostre app intelligenti offline
Custom Vision e Win.ml per le nostre app intelligenti offline
 
What's new in Visual Studio 2019
What's new in Visual Studio 2019What's new in Visual Studio 2019
What's new in Visual Studio 2019
 
Santa Claus Alert: ovvero come sfruttare WinML per intercettare babbo natale
Santa Claus Alert: ovvero come sfruttare WinML per intercettare babbo nataleSanta Claus Alert: ovvero come sfruttare WinML per intercettare babbo natale
Santa Claus Alert: ovvero come sfruttare WinML per intercettare babbo natale
 
Tecniche di Machine Learning per l’analisi offline dei dati aziendali
Tecniche di Machine Learning per l’analisi offline dei dati aziendaliTecniche di Machine Learning per l’analisi offline dei dati aziendali
Tecniche di Machine Learning per l’analisi offline dei dati aziendali
 
Aperitech winml
Aperitech winmlAperitech winml
Aperitech winml
 
Xamarin forms
Xamarin formsXamarin forms
Xamarin forms
 
Windows 10 e Universal Windows Platform
Windows 10 e Universal Windows PlatformWindows 10 e Universal Windows Platform
Windows 10 e Universal Windows Platform
 
Introduzione alle Universal App
Introduzione alle Universal AppIntroduzione alle Universal App
Introduzione alle Universal App
 

Come utilizzare il bot framework

  • 1.  Cos’è un bot  Come sviluppare un bot con Microsoft Bot Framework  Cognitive services  Custom vision  Pubblicazione Agenda Da A a Bot con un pizzico di Cognitive
  • 2. Alessio Iafrate Freelance Developer e Fondatore DotNetAbruzzo http://www.acquariusoft.com @alessioiafrate alessioiafrate@hotmail.com
  • 3. ll bot è un programma che accede alla rete attraverso lo stesso tipo di canali utilizzati dagli utenti umani. Programmi di questo tipo sono diffusi in relazione a molti diversi servizi in rete, con scopi vari, ma in genere legati all'automazione di compiti che sarebbero troppo gravosi o complessi per gli utenti umani. (Fonte Wikipedia) Cosa è un bot?
  • 4.  Facebook Messenger  Telegram  Skype  Slack  Cortana  SMS  Sito Web  Email  …………. Dove posso ospitare un bot
  • 5. Per ogni piattaforma abbiamo API differenti con metodologie diverse di sviluppo e concetti propri di ogni servizio. - Sviluppo per ogni singola piattaforma - Utilizzo framework comune (Es. Microsoft Bot Framework) Come lo sviluppo?
  • 6.  Account azure anche in versione trial  Conoscenze di C# o node.js  Visual Studio anche in versione community (opzionale) La lista della spesa
  • 7.  Bot Framework Connector (Singola Api rest che permette al bot di comunicare con i vari canali)  Activity (Oggetto contenente i vari dati della conversazione)  Dialog (Gestisce la conversazione)  State (Gestione dati associati all’utente, alla conversazione e all’utente nella conversazione) Concetti base
  • 9. Un’occhiata al codice - Il controller La classe principale del progetto è un controller che gestisce le chiamate in ingresso ed in base al tipo e distingue tra un messaggio inviato oppure operazioni di gestione ( typing, ping, aggiunta e rimozione di membri dalla conversazione ecc)
  • 10. Un’occhiata al codice - Dialog La classe dialog permette di gestire i messaggi inviati dall’utente con tutti i dettagli associati e di rispondere di conseguenza
  • 11. Memorizziamo i dati Il bot builder SDK permette di memorizzare i dati delle sessioni in • Memoria (volatile) • Azure table • Database SQL • CosmosDB Nel template di default la registrazione viene eseguita nel metodo Application_Start del Global.asax
  • 12. Come gestisco il debug? Con il bot framework emulator possiamo testare in locale il nostro bot con una semplice interfaccia che mostra anche il log delle chiamate E’ open source e disponibile su github
  • 14. Cosa ci fornisce il framework:  Gestione dello stato dell’utente  Domanda e risposta (Richiesta di informazioni o selezione di una scelta)  Invio messaggio ad un’utente a seguito di un evento lato server Interagire con l’utente
  • 15. Il context permette di gestire i dati associati all’utente e per farlo abbiamo a disposizione  UserData relativo allo User  ConversationData relativo alla Conversazione  PrivateConversationData relativo a quell’utente in quella specifica conversazione Per gestirli esistono i relativi metodi get e set (GetUserData, SetUserData, ecc) Lo stato dell’utente
  • 16. Un’occhiata al codice - PromptDialog La classe PromptDialog permette di gestire le conversazioni basate basate su domanda e risposta, in questo caso il metodo Text (o quello relativo al dato che vogliamo ottenere) prende come parametro una callback alla funzione da richiamare direttamente dopo che l’utente ha inviato una risposta
  • 17. Un’occhiata al codice - Proactive Message Per inviare un messaggio all’utente è necessario ricreare tutta la cascata di connessioni per raggiungerlo utilizzando i dati memorizzati precedentemente
  • 18. I Cognitive services Aggiungiamo un pizzo di intelligenza!
  • 19.
  • 22. Integriamo il tutto Con una semplice chiamata Rest è possibile inviare i dati della nostra immagine e ricevere i dati dell’elaborazione
  • 23. Come leggere le immagini inviate Il message contiene una lista di file in Attachments che contengono l’url da cui con una semplice chiamata http è possibile scaricare i files che ci sono stati inviati
  • 26.  https://docs.microsoft.com/en-us/bot-framework/  https://github.com/Microsoft/BotFramework-Emulator  https://azure.microsoft.com/en-us/services/cognitive-services/  https://www.customvision.ai/  http://t.me/RostyBot  https://github.com/a-iafrate/Rosty Link

Editor's Notes

  1. Connector The Bot Framework Connector provides a single REST API that enables a bot to communicate across multiple channels such as Skype, Email, Slack, and more Activity The Connector uses an Activity object to pass information back and forth between bot and channel (user). The most common type of activity is message, but there are other activity types that can be used to communicate various types of information to a bot or channel Dialog When you create a bot using the Bot Builder SDK for .NET, you can use dialogs to model a conversation and manage conversation flow. A dialog can be composed of other dialogs to maximize reuse, and a dialog context maintains the stack of dialogs that are active in the conversation at any point in time. A conversation that comprises dialogs is portable across computers, which makes it possible for your bot implementation to scale. State The Bot Builder Framework enables your bot to store and retrieve state data that is associated with a user, a conversation, or a specific user within the context of a specific conversation. State data can be used for many purposes, such as determining where the prior conversation left off or simply greeting a returning user by name. If you store a user's preferences, you can use that information to customize the conversation the next time you chat. For testing and prototyping purposes, you can use the Bot Builder Framework's in-memory data storage. For production bots, you can implement your own storage adapter or use one of Azure Extensions. The Azure Extensions allow you to store your bot's state data in either Table Storage, CosmosDB, or SQL