Modification comportement Snips

#1

Bonjour à toutes et tous,
j’aimerais faire un petit projet en changeant le comportement de Snips…
Je m’explique : lorsque celui-ci a exécuté son action, il s’éteint jusqu’à ce qu’il entende à nouveau le WakeWord.
Je voudrais qu’il se remette en écoute pendant 20 secondes, prêt à exécuter les commandes qu’il entendrait et qu’à défaut de commande il s’éteigne au bout de ses 20 secondes.
Je ne sais pas trop comment m’y prendre… si vous aviez des pistes à me soumettre, je suis preneur.

De même, il pourrait être intéressant de pouvoir créer des menus : par exemple, lui demander d’entrer dans le menu télévision et,tant que l’on n’a pas choisi un autre menu, il ne pourrait reconnaître que les commandes ayant attrait à la télévision…
Ainsi, même si il est à l’écoute et qu’il n’interprète pas correctement une commande alors que l’on se trouve dans le menu télévision, il ne va pas ouvrir la porte d’entrée par erreur.
À tout moment, il serait possible de changer de menu en disant : menu télévision, menu maison, etc.
Évidemment, je prends l’exemple de la domotique car c’est mon premier usage.

Voilà ce que je cherche à faire, si vous avez des idées, des pistes ou connaissance de tutoriels me permettant de progresser, merci de m’en faire part.

Bonne continuation à tous,
cordialement,
Tengu.

0 Likes

#2

Tu peux restarter une session en utilisant https://docs.snips.ai/reference/dialogue#start-session

0 Likes

#3

Bonjour Psycho,
j’ai parcourut cette doc qui est pleine d’informations mais je n’ai pas su m’en dépatouiller. Je code en nodejs et une fois connecté au broker mqtt, je peux poster les messages mais je ne sais pas comment formuler le json du corps de chaque message, as tu de la doc la dessus?

0 Likes

#4

Hello!

Pour continuer une session tu dois publier sur hermes/dialogueManager/continueSession avec un payload contenant les infos suivante:

'sessionId': sessionId,
'text': text,
'customData': customData,
'intentFilter': ['Psychokiller1888:answerYesNo']
'sendIntentNotRecognized': True
'slot': False

sessionId c’est bien entendu la session que tu veux faire continuer
text c’est ce que Snips dira pour faire continuer le dialog
customData c’est un json dump d’un dictionnaire contenant des infos que tu veux faire passer entre les tours du dialogue
intentFilter c’est un array d’intent qui vont limiter les réponses qui peuvent être capturée, pour éviter genre que l’utilisateur réponde par un autre intent
sendIntentNotRecognized c’est pour indiquer si oui ou non la réponse doit trigger un intentNotRecognized si l’utilisateur n’est pas compris
slot doit avoir un intent dans le filter. Ca va forcer le moteur a envoyer la capture directement au nlu sans passer par la classification, en considérant que la réponse est forcement ce qui est déclaré dans intentFilter

Toutes les infos: https://docs.snips.ai/reference/dialogue#payload-4

0 Likes

#5

Bonsoir, j’ai été absent un bon moment, maintenant je me lance…
D’abord, merci pour votre réponse.
Je me pose une question : lorsque l’on crée un assistant avec Sam, il doit bien générer quelque part un fichier que j’appellerai « main.py », tout du moins l’équivalent.
En fait, j’aimerais bien comprendre où il se trouve pour pouvoir le modifier directement.
Quelque chose me dit, qui se trouve dans le fichier « env », et qu’il n’y a donc aucun moyen de faire comme cela.
Pourriez-vous me le confirmer.
Avant de me lancer, j’aimerais davantage comprendre l’architecture.
Désolé pour la question de débutant, mais c’est bel et bien ce que je suis. :slight_smile:
Je vous souhaite une bonne soirée.

0 Likes

#6

Je ne connais pas du tout sam et les skills, désolé mais je peux pas t’aider sur ça. L’assistant que la console crée et que sam download est une archive avec tout autre chose que du python, les données asr, nlu, fichiers son et autre. Le skill server lui dl les skills qui sont en python et sont deployé par sam. Ce n’est pas ça que tu dois mod

0 Likes

#7

OK, merci.
Aujourd’hui j’ai commencé lors de la création de l’assistant, en allant dans le volet « Actions », en sélectionnant « Code Snippets » j’ai réussi à écrire un peu de code et avoir une action…
Rien de compliqué, je cherche juste à comprendre comment ça marche, alors j’ai créé un Intent : AddNumber avec 2 slots: number_1 et number_2.
Je demande alors d’effectuer la somme des 2 et de retourner le résultat ce qui fonctionne très bien. Évidemment c’est un peu limité.
Il y a un volet Github où l’on insère directement l’adresse son repo ce qui peut être une bonne solution.
Pour l’instant, ce n’est pas très évident. :slight_smile:
Je m’accroche.
Bonne soirée.

0 Likes

#8

Je ne pense pas qu’il y ait de main.py. Python est un langage, et un moteur de script, qui s’intègre bien dans un programme écrit en C ou autre langage compilé. De nombreux jeux vidéo utilisent cette technique, plus souvent avec le langage Lua.

N’hésite pas à forker mes applications sur le store (même nom d’utilisateur), je les publie dans le but même de partager mon avancée dans la compréhension de Snips. J’essaye de rendre le code lisible avec des commentaires. Bon après, j’ai ma façon de faire, mon style de programmation, d’autres font autrement.

Ensuite vient le plus dur : les idées !

0 Likes

#9

Bonsoir, effectivement je suis allé voir vos applications.
Cela m’a donné des idées, lorsque je tente sur des actions simples (en copiant un peu votre façon de coder) comme récupérer deux slots, les additionner et les retourner, il ne se passe rien…
j’y ai passé l’après-midi, je recommencerai demain :slight_smile:

0 Likes