Rendre Gladys plus humain!


#1

Bonjour à tous , dans la quête d’avoir une maison à la Tony Stark ( faute de budgets , je n’ai pas encore la r8 :wink: ) , j’ai installé Gladys sur un raspberry pi , mais je trouve les dialogues avec Gladys trop “carré” , serait-il possible , de faire en sorte , que Gladys puisse répondre de plusieurs façon pour une même question ? En gros si on lui pose trois fois la même question , il nous répond trois phrase différente .

Exemple :
-Gladys mets de la musique .
-Très bien , musique lancée
-…
-Gladys mets de la musique .
-Ok ! La musique a démarré !
-…
-Gladys mets de la musique .
-Biensur , je lance la musique .
-…

Cela permettrai d’avoir des dialogues plus chaud , plus humain .
Je lance cette idée en l’air , si cette idée plait à Pierre-Gilles , on pourrait peut-être la retrouvé dans la prochaine mise à jour !


#2

Hello,

C’est tout à fait possible, et c’est une des grande force de Gladys aussi, elle est customisable !
pour rappel, lorsque tu parles à Gladys, elle classifie ta demande dans un label.

Exemple : Je dis “Hello” à Gladys
les logs :

0|gladys   | brain : classify : Identified label brain;greeting
0|gladys   | Getting conversation 3be40d6f-49bc-4aeb-b434-ca7b4903028d, found 1                                         messages.
0|gladys   | Brain : answer : Answering with label greeting in language fr-FR

Elle a attribué cette sentence au label greeting. Et va répondre avec un phrase choisie au hasard parmi les answer ayant un label greeting

Voici un script que tu peux exécuter pour attribuer une réponse à un label :

var answer={
uuid: “87d0983d-b5c9-45a9-8745-bae592daef14”,
label: “user-leaving-home”,
text: “Tu me quittes ? Reviens vite !”,
language: “fr”,
needAnswer: false,
};
gladys.answer.create(answer);

Dans la variable answer il faut :

  • Créer un uuid à chaque nouvelle réponse, j’utilise ce site pour un générer un nouveau à chaque fois : https://www.uuidgenerator.net/
  • Donner le label auquel ta réponse correspond
  • changer le text pour en faire ta réponse

Pour connaitre tes labels disponibles je ne connais que cette méthode :
En SSH taper :

  • -> mysql -uNOMUTILISATEUR -pMOTDEPASSE
  • use gladys;
  • SELECT DISTINCT label FROM answer ORDER BY label ASC; (En italique : pour trier en ordre alphabétique)

Utile à préciser je pense :

Concernant les labels : Il y a une subtilité (si je dis n’importe quoi corrigez moi !) :
Quand tu envoies une commande (sentence) à Gladys, La classification fais 2 choses :

  • Attribution d’un service : deviceType, brain etc… qui va catégoriser ta demande et appeler la bonne fonction “command” du bon module/core.

  • Attribution d’un label : set-deviceType-on; set-deviceType-off, greeting ; whats-up… qui va décrire ta demande (allumer ou éteindre; salutation ou comment ca va ? ) et être le paramètre de ta fonction “command” afin d’exécuter la bonne tache.

Il y a donc une petite confusion qui peut être faite, entre le label des sentences (commandes) et le label des answer (réponse). Il ne s’agit pas du même label. Si je dis à Gladys “Allume la lumière de ma chambre”

les logs :

0|gladys | brain : classify : Identified label deviceType;set-device-on
0|gladys | Getting conversation 3ee3f11a-5801-4736-9adc-35272be7d687, found 1 messages.
0|gladys | option [object Object]
0|gladys | DeviceType.command : Found 1 deviceType in room Chambre
0|gladys | Event : create : new Event with code : devicetype-new-value
0|gladys | Scenario : Trigger : New event : devicetype-new-value
0|gladys | Scenario : Trigger : Found 24 launchers with code devicetype-new-value.
0|gladys | Brain : answer : Answering with label default in language fr-FR

Label de la sentence : set-deviceType-on
Label de la réponse : default

Lien entre les deux labels :
Dans chaque fonction “command” des module/core tu définis le label de réponse, c’est comme ça que Gladys sait quel label de réponse associer à quelle sentence.
Le label de la sentence permet d’attribuer le label de l’answer.
Si aucun label de réponse n’est défini, Galdys attribura “default”

Puis les labels des réponses sont appelés pour envoyer une réponse aléatoire parmi toutes les phrases du label choisie.