Suite à la décision d’IFTT de rendre payant ses services, notamment ceux qui appellent un web service, il m’a fallut trouver une alternative pour continuer d’utiliser ma musique sur mes enceintes sonos. Pour rappel, le but est ici d’offrir une solution gratuite (sans utiliser Spotify, Deezer…) avec un système type « ok google, écouter muse ».
Il y a quelques temps, j’avais écrit un article sur l’utilisation des webservices via IFTT. Le temps du gratuit étant révolu, il va maintenant falloir nous rapprocher de dialogflow. Dialogflow est un service Google pour créer des services vers l’assistant vocal.
Créer un agent DialogFlow:
Créer un projet, puis un agent du nom que vous voulez, puis créer 3 entities (grosso modo, ce sont nos paramètres):
- artist,
- room,
- song.
Ensuite dans les intents, modifer la response de celui qui s’appelle Welcome avec ça: « Bienvenue que voulez vous écoutez? »
Puis créer un autre intent nommé play_music. Entrainez le avec des phrases du type: « écouter cali dans le salon », en sélectionnant cali pour artist, salon pour room. Et dans responses, ajouter: ok, je vais jouer $artist
Ensuite dans le menu integration, cliquez sur Google Assitant, puis Manage Assistant Test. Définissez alors le nom de votre application. Il vous faudra dire » ok google, parler à NOM_APPLI ».
Ensuite, vous pourrez dire la phrase définir plus haut.
Finissez par mettre votre site web dans fullfillment. Normalement, vous avez l’outil Training pour tester. Entrez votre phrase en haut à droite, pour voir les échanges que cela opère (bouton diagnostic info).
L’outil de domotique pour interagir avec le Sonos.
Vous trouvez mes sources dans https://github.com/ynizon/ai
Il vous suffit de monter votre site et de le connectez avec vos enceintes, et d’ajouter l’url dans le fullfillment comme indiqué avec /ia. Vous pouvez voir les interactions et que la réponse se situe dans un json dans le paramètre queryResult (IAController).J’ai notamment essayé d’utiliser une librairie tiers (eristmena.dialogflow-fulfillment-webhook) (en commentaire pour l’instant, car mon travail n’est pas terminé).
A noter que dans storage/export vous avez le code pour importer directement l’agent dans Dialogflow (il faut le zipper).
Et voila, ca devrait fonctionner. Le problème principal étant que si vous avez plusieurs sonos, il vous faudra dire « dans la cuisine », ou « dans le salon » à la fin de votre phrase pour qu’il fasse correctement le mapping. Il faudrait que je réadapte le code pour envoyer un media de type MP3, mais c’est beaucoup plus complexe. Et comme j’ai déjà pas mal perdu de temps avec l’API Sonos, ca me semblait le meilleur compromis.
Si vous avez d’autres idées, je suis preneur…