$30 off During Our Annual Pro Sale. View Details »

Softshake 2017 - Développer un chatbot Alexa

Softshake 2017 - Développer un chatbot Alexa

Jérôme Van Der Linden

October 27, 2017
Tweet

More Decks by Jérôme Van Der Linden

Other Decks in Programming

Transcript

  1. Développer un chatbot avec
    Jérôme Van Der Linden – @jeromevdl
    .
    .
    1

    View Slide

  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”

    View Slide

  3. 3

    View Slide

  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

    View Slide

  5. 5

    View Slide

  6. SOFTSHAKE> CREATION D’UN CHATBOT ALEXA
    Ecosystème Alexa
    Hardware
    6

    View Slide

  7. SOFTSHAKE> CREATION D’UN CHATBOT ALEXA
    7
    Ecosystème Alexa
    Software
    Source : https://fr.slideshare.net/AmazonWebServices/session-7-byilding-voice-enabled-alexa

    View Slide

  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 ?” / …
    Interaction Model

    View Slide

  9. 9

    View Slide

  10. 10
    https://github.com/jeromevdl/alexa-got/
    Skill « Game Of Thrones »
    Code source

    View Slide

  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/

    View Slide

  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

    View Slide

  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

    View Slide

  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');
    }
    }

    View Slide

  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": " Hello Jon Snow "
    },
    "reprompt": {
    "outputSpeech": {
    "type": "SSML",
    "ssml": " Do you want more information? "
    }
    }
    },
    "sessionAttributes": {
    "character": "Jon Snow"
    }
    }

    View Slide

  16. SOFTSHAKE> CREATION D’UN CHATBOT ALEXA
    16
    Skill « Game Of Thrones »
    Live Code / Demo

    View Slide

  17. SOFTSHAKE> CREATION D’UN CHATBOT ALEXA
    17
    Skill « Game Of Thrones »
    Tests avec Echosim.io

    View Slide

  18. OCTO © 2017 - Reproduction interdite sans autorisation écrite préalable THERE IS A BETTER WAY
    OCTO RECRUTE
    WE NEED
    Y U
    Expertise Tribes
    Trust
    Honesty
    Sharing Employee First
    Curiosity
    #1

    View Slide

  19. 19

    View Slide