SlideShare une entreprise Scribd logo
Développer un chatbot avec
Jérôme Van Der Linden – @jeromevdl
..
1
SOFTSHAKE> CREATION D’UN CHATBOT ALEXA
Chatbot Kezako ?
2
“Un chatbot (ou agent conversationnel)
est un programme informatique
capable de simuler
une conversation naturelle (écrite ou orale)
avec un humain”
3
Architecture
4
Chatbot
Moteur conversationnel
Utilisateur
Question de
l’utilisateur
Texte brut
Intention / entités
Réponse
Moteur de langage naturel (NLU)
Interprétation
Formulation de
la réponse
SI Métier
Calcul de la
meilleure réponse
Moteur de règles
Action ou recherche
d’informations
API / base de données
5
SOFTSHAKE> CREATION D’UN CHATBOT ALEXA
Ecosystème Alexa
Hardware
6
SOFTSHAKE> CREATION D’UN CHATBOT ALEXA
7
Ecosystème Alexa
Software
Source	:	https://fr.slideshare.net/AmazonWebServices/session-7-byilding-voice-enabled-alexa
SOFTSHAKE> CREATION D’UN CHATBOT ALEXA
Vocabulaire Alexa
8
¤ Skill : « compétence » de l’assistant (avec son lot de “fonctionnalités”)
¤ 1 skill ~ 1 application
¤ Intent : intention de l’utilisateur, ce qu’il souhaite obtenir de l’assistant
• 1 intent ~ 1 “fonctionnalité”
§ Il existe des intents prédéfinis (HelpIntent, YesIntent, CancelIntent, RepeatIntent, …)
§ Il est possible d’en écrire des customs
§ Ex : “Quelle sera la météo demain à Lausanne ?”
¤ Slot / Slot type : équivalent de l’entité, sous-ensemble de l’intent donnant des éléments de contexte
§ 1 slot ~ 1 paramètre
§ Il existe des slot types prédéfinis (Artist, Color, Country, Date, Food, Movie, Sport, …)
§ Il est possible d’en écrire des customs ou d’en étendre des prédéfinis
§ Ex : “demain” (AMAZON.DATE), “Lausanne” (AMAZON.EUROPE_CITY)
¤ Sample Utterance : exemples d’énoncé d’un intent. À décliner autant que possible !
§ Ex : “Quel temps fera il demain à Lausanne ?” / “Donne moi la météo pour demain à Lausanne” / “Fera-
il beau demain à Lausanne ?” / “Va-t-il pleuvoir demain à Lausanne ?” / …
InteractionModel
9
10
https://github.com/jeromevdl/alexa-got/
Skill « Game Of Thrones »
Code source
Skill « Game Of Thrones »
Architecture
11
user
Alexa skill
Lambda
function
Node.js
Moteur de langage naturel (NLU)
Moteur conversationnel
CloudWatch
Monitoring
Availability	Zone	us-east-1
API
JSON
JSON
Voice	/	Text
https://anapioficeandfire.com/
SOFTSHAKE> CREATION D’UN CHATBOT ALEXA
Skill « Game Of Thrones »
Intent Schema
12
: [
{
: "WhoIsIntent",
: [
{
: "characterslot",
: "CHARACTER"
}
],
/* utterances */
: [
"give me information about {characterslot}",
"who is {characterslot}",
"tell me more about {characterslot}",
"{characterslot}"
]
}
]
: [
{
: "CHARACTER",
: [
{
: {
: "daenerys targaryen",
: []
},
{,
: {
: "jon snow",
: []
}
},
// ...
}
]
Moteur de langage
naturel (NLU)
Alexa skill
SOFTSHAKE> CREATION D’UN CHATBOT ALEXA
Skill « Game Of Thrones »
Event (JSON)
13
{
"session": {
"sessionId": "SessionId.Session1",
"application": {
"applicationId": "amzn1.ask.skill.xyz"
},
"user": {
"userId": "amzn1.ask.account.testaccount1"
},
"new": true
},
"request": {
"type": "IntentRequest",
"requestId": "615dbc98-b1a6-11e7-b212-e3c588b98480",
"timestamp": "2016-05-19T01:07:55Z",
"intent": {
"name": "WhoIsIntent",
"slots": {
"characterslot": {
"name": "characterslot",
"value": "Jon Snow"
}
}
},
"locale": "en-US"
},
"version": "1.0"
}
Alexa skill
Lambda
function
JSON
SOFTSHAKE> CREATION D’UN CHATBOT ALEXA
Skill « Game Of Thrones »
Event Handler
14
Lambda
function
Node.js
Moteur conversationnel
exports.handler = function (event, context) {
var alexa = Alexa.handler(event, context);
alexa.registerHandlers(handlers);
alexa.execute();
};
var handlers = {
'WhoIsIntent' : function () {
var characterSlot = this.event.request.intent.slots.characterslot;
this.attributes['character'] = characterSlot.value;
this.response.speak(' Hello '+ characterSlot.value)
.listen('Do you want more information?');
this.emit(':responseReady');
}
}
SOFTSHAKE> CREATION D’UN CHATBOT ALEXA
Skill « Game Of Thrones »
Response (JSON)
15
Alexa skill
Lambda
function
JSON
{
"version": "1.0",
"response": {
"shouldEndSession": false,
"outputSpeech": {
"type": "SSML",
"ssml": "<speak> Hello Jon Snow </speak>"
},
"reprompt": {
"outputSpeech": {
"type": "SSML",
"ssml": "<speak> Do you want more information? </speak>"
}
}
},
"sessionAttributes": {
"character": "Jon Snow"
}
}
SOFTSHAKE> CREATION D’UN CHATBOT ALEXA
16
Skill « Game Of Thrones »
Live Code / Demo
SOFTSHAKE> CREATION D’UN CHATBOT ALEXA
17
Skill « Game Of Thrones »
Tests avec Echosim.io
OCTO © 2017 - Reproduction interdite sans autorisation écrite préalable THERE IS A BETTER WAY
OCTO RECRUTE
WE NEED
Y U
Expertise Tribes
TrustHonesty
Sharing Employee First
Curiosity
#1
19

Contenu connexe

Similaire à Softshake 2017 - Développer un chatbot Alexa

Elasticsearch - OSDC France 2012
Elasticsearch - OSDC France 2012Elasticsearch - OSDC France 2012
Elasticsearch - OSDC France 2012
David Pilato
 
Elasticsearch - Montpellier JUG
Elasticsearch - Montpellier JUGElasticsearch - Montpellier JUG
Elasticsearch - Montpellier JUG
David Pilato
 
code4lib 2011 : choses vues et entendues par l'ABES
code4lib 2011 : choses vues et entendues par l'ABEScode4lib 2011 : choses vues et entendues par l'ABES
code4lib 2011 : choses vues et entendues par l'ABES
ABES
 
Meetup LyonJS – Botkit et chatbots
Meetup LyonJS – Botkit et chatbotsMeetup LyonJS – Botkit et chatbots
Meetup LyonJS – Botkit et chatbots
cbouvard
 
Présentation de ElasticSearch / Digital apéro du 12/11/2014
Présentation de ElasticSearch / Digital apéro du 12/11/2014Présentation de ElasticSearch / Digital apéro du 12/11/2014
Présentation de ElasticSearch / Digital apéro du 12/11/2014
Silicon Comté
 
SSL 2011 : Présentation de 2 bases noSQL
SSL 2011 : Présentation de 2 bases noSQLSSL 2011 : Présentation de 2 bases noSQL
SSL 2011 : Présentation de 2 bases noSQL
Hervé Leclerc
 
Une visite guidée d’Internet Explorer 9 et HTML5 pour les développeurs Web
Une visite guidée d’Internet Explorer 9 et HTML5 pour les développeurs WebUne visite guidée d’Internet Explorer 9 et HTML5 pour les développeurs Web
Une visite guidée d’Internet Explorer 9 et HTML5 pour les développeurs Web
Frédéric Harper
 
Normandy JUG - Elasticsearch
Normandy JUG - ElasticsearchNormandy JUG - Elasticsearch
Normandy JUG - Elasticsearch
David Pilato
 
Rich Desktop Applications
Rich Desktop ApplicationsRich Desktop Applications
Rich Desktop Applicationsgoldoraf
 
Les Bots : insights et recommandations
Les Bots : insights et recommandationsLes Bots : insights et recommandations
Les Bots : insights et recommandations
ohmydalia
 
Du hard et des réseaux: Les outils pour construire l'internet des objets chez...
Du hard et des réseaux: Les outils pour construire l'internet des objets chez...Du hard et des réseaux: Les outils pour construire l'internet des objets chez...
Du hard et des réseaux: Les outils pour construire l'internet des objets chez...
Microsoft
 
Les micro orm, alternatives à entity framework
Les micro orm, alternatives à entity frameworkLes micro orm, alternatives à entity framework
Les micro orm, alternatives à entity framework
MSDEVMTL
 
Flex, une techno RIA incontournable pour les futures app web ?
Flex, une techno RIA incontournable pour les futures app web ?Flex, une techno RIA incontournable pour les futures app web ?
Flex, une techno RIA incontournable pour les futures app web ?
GreenIvory
 
Analyse statistique sur DOTA
Analyse statistique sur DOTAAnalyse statistique sur DOTA
Analyse statistique sur DOTA
Banville Julien
 
Poitou charentes JUG - Elasticsearch
Poitou charentes JUG - ElasticsearchPoitou charentes JUG - Elasticsearch
Poitou charentes JUG - Elasticsearch
David Pilato
 
Cozy, a Personal PaaS
Cozy, a Personal PaaSCozy, a Personal PaaS
Cozy, a Personal PaaS
Frank Rousseau
 
Latence et streaming api Devoxx France 2015
Latence et streaming api  Devoxx France 2015Latence et streaming api  Devoxx France 2015
Latence et streaming api Devoxx France 2015
streamdata.io
 
DevFest 2019 - Retour sur 3 années à developper des bots !
DevFest 2019 - Retour sur 3 années à developper des bots !DevFest 2019 - Retour sur 3 années à developper des bots !
DevFest 2019 - Retour sur 3 années à developper des bots !
Alexandre Nicol
 

Similaire à Softshake 2017 - Développer un chatbot Alexa (20)

Elasticsearch - OSDC France 2012
Elasticsearch - OSDC France 2012Elasticsearch - OSDC France 2012
Elasticsearch - OSDC France 2012
 
Elasticsearch - Montpellier JUG
Elasticsearch - Montpellier JUGElasticsearch - Montpellier JUG
Elasticsearch - Montpellier JUG
 
code4lib 2011 : choses vues et entendues par l'ABES
code4lib 2011 : choses vues et entendues par l'ABEScode4lib 2011 : choses vues et entendues par l'ABES
code4lib 2011 : choses vues et entendues par l'ABES
 
Meetup LyonJS – Botkit et chatbots
Meetup LyonJS – Botkit et chatbotsMeetup LyonJS – Botkit et chatbots
Meetup LyonJS – Botkit et chatbots
 
Présentation de ElasticSearch / Digital apéro du 12/11/2014
Présentation de ElasticSearch / Digital apéro du 12/11/2014Présentation de ElasticSearch / Digital apéro du 12/11/2014
Présentation de ElasticSearch / Digital apéro du 12/11/2014
 
SSL 2011 : Présentation de 2 bases noSQL
SSL 2011 : Présentation de 2 bases noSQLSSL 2011 : Présentation de 2 bases noSQL
SSL 2011 : Présentation de 2 bases noSQL
 
Une visite guidée d’Internet Explorer 9 et HTML5 pour les développeurs Web
Une visite guidée d’Internet Explorer 9 et HTML5 pour les développeurs WebUne visite guidée d’Internet Explorer 9 et HTML5 pour les développeurs Web
Une visite guidée d’Internet Explorer 9 et HTML5 pour les développeurs Web
 
Dart JUG 2013
Dart JUG 2013Dart JUG 2013
Dart JUG 2013
 
Normandy JUG - Elasticsearch
Normandy JUG - ElasticsearchNormandy JUG - Elasticsearch
Normandy JUG - Elasticsearch
 
Rich Desktop Applications
Rich Desktop ApplicationsRich Desktop Applications
Rich Desktop Applications
 
Les Bots : insights et recommandations
Les Bots : insights et recommandationsLes Bots : insights et recommandations
Les Bots : insights et recommandations
 
Du hard et des réseaux: Les outils pour construire l'internet des objets chez...
Du hard et des réseaux: Les outils pour construire l'internet des objets chez...Du hard et des réseaux: Les outils pour construire l'internet des objets chez...
Du hard et des réseaux: Les outils pour construire l'internet des objets chez...
 
Les micro orm, alternatives à entity framework
Les micro orm, alternatives à entity frameworkLes micro orm, alternatives à entity framework
Les micro orm, alternatives à entity framework
 
Drools
DroolsDrools
Drools
 
Flex, une techno RIA incontournable pour les futures app web ?
Flex, une techno RIA incontournable pour les futures app web ?Flex, une techno RIA incontournable pour les futures app web ?
Flex, une techno RIA incontournable pour les futures app web ?
 
Analyse statistique sur DOTA
Analyse statistique sur DOTAAnalyse statistique sur DOTA
Analyse statistique sur DOTA
 
Poitou charentes JUG - Elasticsearch
Poitou charentes JUG - ElasticsearchPoitou charentes JUG - Elasticsearch
Poitou charentes JUG - Elasticsearch
 
Cozy, a Personal PaaS
Cozy, a Personal PaaSCozy, a Personal PaaS
Cozy, a Personal PaaS
 
Latence et streaming api Devoxx France 2015
Latence et streaming api  Devoxx France 2015Latence et streaming api  Devoxx France 2015
Latence et streaming api Devoxx France 2015
 
DevFest 2019 - Retour sur 3 années à developper des bots !
DevFest 2019 - Retour sur 3 années à developper des bots !DevFest 2019 - Retour sur 3 années à developper des bots !
DevFest 2019 - Retour sur 3 années à developper des bots !
 

Plus de jeromevdl

Message-Driven Architecture on AWS
Message-Driven Architecture on AWSMessage-Driven Architecture on AWS
Message-Driven Architecture on AWS
jeromevdl
 
Do more with less code in serverless
Do more with less code in serverlessDo more with less code in serverless
Do more with less code in serverless
jeromevdl
 
Do more with less code in a serverless world
Do more with less code in a serverless worldDo more with less code in a serverless world
Do more with less code in a serverless world
jeromevdl
 
DevopsDays Geneva 2020 - Compliance & Governance as Code
DevopsDays Geneva 2020 - Compliance & Governance as CodeDevopsDays Geneva 2020 - Compliance & Governance as Code
DevopsDays Geneva 2020 - Compliance & Governance as Code
jeromevdl
 
Chatbots buzzword ou nouvel eldorado
Chatbots   buzzword ou nouvel eldoradoChatbots   buzzword ou nouvel eldorado
Chatbots buzzword ou nouvel eldorado
jeromevdl
 
Management projet vs management produit
Management projet vs management produitManagement projet vs management produit
Management projet vs management produit
jeromevdl
 
Softshake - Offline applications
Softshake - Offline applicationsSoftshake - Offline applications
Softshake - Offline applications
jeromevdl
 
My Android is not an iPhone like any others (Mdevcon 2014)
My Android is not an iPhone like any others (Mdevcon 2014)My Android is not an iPhone like any others (Mdevcon 2014)
My Android is not an iPhone like any others (Mdevcon 2014)
jeromevdl
 
DroidconUK 2013 : Beef up android apps with java tools
DroidconUK 2013 : Beef up android apps with java toolsDroidconUK 2013 : Beef up android apps with java tools
DroidconUK 2013 : Beef up android apps with java tools
jeromevdl
 
Droidcon Paris 2013 - Musclez vos applications Android avec les outils du mon...
Droidcon Paris 2013 - Musclez vos applications Android avec les outils du mon...Droidcon Paris 2013 - Musclez vos applications Android avec les outils du mon...
Droidcon Paris 2013 - Musclez vos applications Android avec les outils du mon...
jeromevdl
 
Devoxx France 2013 : Musclez vos apps android avec les outils du monde java
Devoxx France 2013 : Musclez vos apps android avec les outils du monde javaDevoxx France 2013 : Musclez vos apps android avec les outils du monde java
Devoxx France 2013 : Musclez vos apps android avec les outils du monde java
jeromevdl
 
Jug Lausanne Android Janvier2013
Jug Lausanne Android Janvier2013Jug Lausanne Android Janvier2013
Jug Lausanne Android Janvier2013
jeromevdl
 
Metroide
MetroideMetroide
Metroide
jeromevdl
 

Plus de jeromevdl (13)

Message-Driven Architecture on AWS
Message-Driven Architecture on AWSMessage-Driven Architecture on AWS
Message-Driven Architecture on AWS
 
Do more with less code in serverless
Do more with less code in serverlessDo more with less code in serverless
Do more with less code in serverless
 
Do more with less code in a serverless world
Do more with less code in a serverless worldDo more with less code in a serverless world
Do more with less code in a serverless world
 
DevopsDays Geneva 2020 - Compliance & Governance as Code
DevopsDays Geneva 2020 - Compliance & Governance as CodeDevopsDays Geneva 2020 - Compliance & Governance as Code
DevopsDays Geneva 2020 - Compliance & Governance as Code
 
Chatbots buzzword ou nouvel eldorado
Chatbots   buzzword ou nouvel eldoradoChatbots   buzzword ou nouvel eldorado
Chatbots buzzword ou nouvel eldorado
 
Management projet vs management produit
Management projet vs management produitManagement projet vs management produit
Management projet vs management produit
 
Softshake - Offline applications
Softshake - Offline applicationsSoftshake - Offline applications
Softshake - Offline applications
 
My Android is not an iPhone like any others (Mdevcon 2014)
My Android is not an iPhone like any others (Mdevcon 2014)My Android is not an iPhone like any others (Mdevcon 2014)
My Android is not an iPhone like any others (Mdevcon 2014)
 
DroidconUK 2013 : Beef up android apps with java tools
DroidconUK 2013 : Beef up android apps with java toolsDroidconUK 2013 : Beef up android apps with java tools
DroidconUK 2013 : Beef up android apps with java tools
 
Droidcon Paris 2013 - Musclez vos applications Android avec les outils du mon...
Droidcon Paris 2013 - Musclez vos applications Android avec les outils du mon...Droidcon Paris 2013 - Musclez vos applications Android avec les outils du mon...
Droidcon Paris 2013 - Musclez vos applications Android avec les outils du mon...
 
Devoxx France 2013 : Musclez vos apps android avec les outils du monde java
Devoxx France 2013 : Musclez vos apps android avec les outils du monde javaDevoxx France 2013 : Musclez vos apps android avec les outils du monde java
Devoxx France 2013 : Musclez vos apps android avec les outils du monde java
 
Jug Lausanne Android Janvier2013
Jug Lausanne Android Janvier2013Jug Lausanne Android Janvier2013
Jug Lausanne Android Janvier2013
 
Metroide
MetroideMetroide
Metroide
 

Softshake 2017 - Développer un chatbot Alexa

  • 1. Développer un chatbot avec Jérôme Van Der Linden – @jeromevdl .. 1
  • 2. SOFTSHAKE> CREATION D’UN CHATBOT ALEXA Chatbot Kezako ? 2 “Un chatbot (ou agent conversationnel) est un programme informatique capable de simuler une conversation naturelle (écrite ou orale) avec un humain”
  • 3. 3
  • 4. Architecture 4 Chatbot Moteur conversationnel Utilisateur Question de l’utilisateur Texte brut Intention / entités Réponse Moteur de langage naturel (NLU) Interprétation Formulation de la réponse SI Métier Calcul de la meilleure réponse Moteur de règles Action ou recherche d’informations API / base de données
  • 5. 5
  • 6. SOFTSHAKE> CREATION D’UN CHATBOT ALEXA Ecosystème Alexa Hardware 6
  • 7. SOFTSHAKE> CREATION D’UN CHATBOT ALEXA 7 Ecosystème Alexa Software Source : https://fr.slideshare.net/AmazonWebServices/session-7-byilding-voice-enabled-alexa
  • 8. SOFTSHAKE> CREATION D’UN CHATBOT ALEXA Vocabulaire Alexa 8 ¤ Skill : « compétence » de l’assistant (avec son lot de “fonctionnalités”) ¤ 1 skill ~ 1 application ¤ Intent : intention de l’utilisateur, ce qu’il souhaite obtenir de l’assistant • 1 intent ~ 1 “fonctionnalité” § Il existe des intents prédéfinis (HelpIntent, YesIntent, CancelIntent, RepeatIntent, …) § Il est possible d’en écrire des customs § Ex : “Quelle sera la météo demain à Lausanne ?” ¤ Slot / Slot type : équivalent de l’entité, sous-ensemble de l’intent donnant des éléments de contexte § 1 slot ~ 1 paramètre § Il existe des slot types prédéfinis (Artist, Color, Country, Date, Food, Movie, Sport, …) § Il est possible d’en écrire des customs ou d’en étendre des prédéfinis § Ex : “demain” (AMAZON.DATE), “Lausanne” (AMAZON.EUROPE_CITY) ¤ Sample Utterance : exemples d’énoncé d’un intent. À décliner autant que possible ! § Ex : “Quel temps fera il demain à Lausanne ?” / “Donne moi la météo pour demain à Lausanne” / “Fera- il beau demain à Lausanne ?” / “Va-t-il pleuvoir demain à Lausanne ?” / … InteractionModel
  • 9. 9
  • 11. Skill « Game Of Thrones » Architecture 11 user Alexa skill Lambda function Node.js Moteur de langage naturel (NLU) Moteur conversationnel CloudWatch Monitoring Availability Zone us-east-1 API JSON JSON Voice / Text https://anapioficeandfire.com/
  • 12. SOFTSHAKE> CREATION D’UN CHATBOT ALEXA Skill « Game Of Thrones » Intent Schema 12 : [ { : "WhoIsIntent", : [ { : "characterslot", : "CHARACTER" } ], /* utterances */ : [ "give me information about {characterslot}", "who is {characterslot}", "tell me more about {characterslot}", "{characterslot}" ] } ] : [ { : "CHARACTER", : [ { : { : "daenerys targaryen", : [] }, {, : { : "jon snow", : [] } }, // ... } ] Moteur de langage naturel (NLU) Alexa skill
  • 13. SOFTSHAKE> CREATION D’UN CHATBOT ALEXA Skill « Game Of Thrones » Event (JSON) 13 { "session": { "sessionId": "SessionId.Session1", "application": { "applicationId": "amzn1.ask.skill.xyz" }, "user": { "userId": "amzn1.ask.account.testaccount1" }, "new": true }, "request": { "type": "IntentRequest", "requestId": "615dbc98-b1a6-11e7-b212-e3c588b98480", "timestamp": "2016-05-19T01:07:55Z", "intent": { "name": "WhoIsIntent", "slots": { "characterslot": { "name": "characterslot", "value": "Jon Snow" } } }, "locale": "en-US" }, "version": "1.0" } Alexa skill Lambda function JSON
  • 14. SOFTSHAKE> CREATION D’UN CHATBOT ALEXA Skill « Game Of Thrones » Event Handler 14 Lambda function Node.js Moteur conversationnel exports.handler = function (event, context) { var alexa = Alexa.handler(event, context); alexa.registerHandlers(handlers); alexa.execute(); }; var handlers = { 'WhoIsIntent' : function () { var characterSlot = this.event.request.intent.slots.characterslot; this.attributes['character'] = characterSlot.value; this.response.speak(' Hello '+ characterSlot.value) .listen('Do you want more information?'); this.emit(':responseReady'); } }
  • 15. SOFTSHAKE> CREATION D’UN CHATBOT ALEXA Skill « Game Of Thrones » Response (JSON) 15 Alexa skill Lambda function JSON { "version": "1.0", "response": { "shouldEndSession": false, "outputSpeech": { "type": "SSML", "ssml": "<speak> Hello Jon Snow </speak>" }, "reprompt": { "outputSpeech": { "type": "SSML", "ssml": "<speak> Do you want more information? </speak>" } } }, "sessionAttributes": { "character": "Jon Snow" } }
  • 16. SOFTSHAKE> CREATION D’UN CHATBOT ALEXA 16 Skill « Game Of Thrones » Live Code / Demo
  • 17. SOFTSHAKE> CREATION D’UN CHATBOT ALEXA 17 Skill « Game Of Thrones » Tests avec Echosim.io
  • 18. OCTO © 2017 - Reproduction interdite sans autorisation écrite préalable THERE IS A BETTER WAY OCTO RECRUTE WE NEED Y U Expertise Tribes TrustHonesty Sharing Employee First Curiosity #1
  • 19. 19