Developpement d'actions en javascript

#1

Bonjour,

Je prends pied dans snips depuis peu. J’ai pour objectif de réaliser des intensions et coder les actions correspondantes en javascript pour un peut tout ce qui passe en commencant par mon système domotique basé sur domoticz. le début est plutot prometeur grace aux exemples transmis dans la documentation (https://docs.snips.ai/getting-started/quick-start-raspberry-pi (section 7)). Je peux a présent commander les lumières de ma maison a la voix. Je reviendrai vers vous pour savoir comment publier cette applicaiton quand elle sera finie :).
Je bute néanmoins sur un problème : Pour le moment, il n’y a pas de discussion, la séquence est toujours la même :

  • “hey snips, allume la lumière <de la pièce concernée>”
  • il fouille domoticz pour reperer la bonne lumière
  • il eteint ou allume la lumière ciblée par l’intension
  • il me renvoie une phrase déterminée
  • il repasse en attente du hotword.

J’aimerai pouvoir coder des systèmes plus riches avec plusieurs échanges sur une même session et non pas un seul échange. Ce devrait être possible, c’est même expliqué sur la doc (https://docs.snips.ai/reference/dialogue#session-started), J’ai bien trouvé des exemples en python mais je n’ai pas trouvé d’exemple en javascript.

L’un de vous l’a t’il déjà mis en oeuvre et peut il m’aider sur les messages à envoyer au broker mqtt ?

Merci par avance de l’aide que vous pourrez m’apporter.

Cordialement

#2

Bonjour @griffon46, tu peux jeter un oeil à la documentation de hermes-javascript qui permet de coder relativement simplement des interactions de dialogue riches en javascript/typescript.

Par ex:

/*
  A
  ├── B
  │   └─ D
  └── C
*/

dialog.flow('A', (msg, flow) => {

        console.log('Intent A received. Session started.')

        /*
            At each step of the dialog flow, you have the choice of
            registering the next intents, or end the flow.

            We then subscribe to both intent B or C so that the dialog
            flow will continue with either one or the other next.
        */

        // Mark intent 'B' as one of the next dialog intents. (A -> B)
        flow.continue('B', (msg, flow) => {
            console.log('Intent B received. Session continued.')

            // Mark intent 'D'. (A -> B -> D)
            flow.continue('D', (msg, flow) => {
                console.log('Intent D received. Session is ended.')
                flow.end()
                return 'Finished the session with intent D.'
            })

            // Make the TTS say that.
            return 'Continue with D.'
        })

        // Mark intent 'C' as one of the next dialog intents. (A -> C)
        flow.continue('C', (msg, flow) => {
            const slotValue = msg.slots[0].value.value
            console.log('Intent C received. Session is ended.')
            flow.end()
            return 'Finished the session with intent C having value ' + slotValue + ' .'
        })

        // The continue / end message options (basically text to speech)
        // If the return value is a string, then it is equivalent to { text: '...' }
        return 'Continue with B or C.'
    })

})
1 Like
#3

Merci beaucoup elbywan, je vais regarder cela, un premier regard en diagonale me dit que tu m’as mis sur une bonne piste. Merci