Aymkdn / assistant-plugins

Des plugins pour les Assistant (comme Google Home, Cortana, Alexa)
https://aymkdn.github.io/assistant-plugins/
MIT License
92 stars 21 forks source link

Notifier.js Volume #206

Closed rick443 closed 5 years ago

rick443 commented 5 years ago

Bonjour, j'utilise ce plugin... il fonctionne bien, par contre on ne peut pas régler le volume de la notification...en effet, le volume est inférieur à celui des notifications provenant d'IFTTT.

Merci pour votre aide.

Aymkdn commented 5 years ago

Le volume est celui défini par la musique sur ton Google Home puisque Notifier envoie l'équivalent d'un fichier son au Google Home.

rick443 commented 5 years ago

Merci pour ta réponse, mais contrairement à un téléphone où l'on peut régler le volume du média, de la voix, de la sonnerie du tel, notification et volume général, je constate que sur la google home, il n'y a qu'un seul type de volume : le volume général.... Et donc cela ne règle pas mon problème car quand je donne un ordre à la GH, celle-ci me répond dans un premier temps avec un volume correct (retour de IFTTT), puis execute ton script pour faire parler la GH...et c'est à ce moment que le volume est bien plus faible.... Si tu as une idée ? Merci Passe de bonnes fêtes.

Aymkdn commented 5 years ago

Le volume de la voix est censé être le même que celui de la musique, car en effet Google ne permet pas de modifier individuellement le volume. Quand tu demandes de la musique sur Deezer ou Spotify, le volume doit être aussi fort que lorsque le plugin fait parler le Google Home. Il n'y a pas de différence...

La possible solution serait que le plugin modifie le volume avant de parler puis le remette à son niveau d'origine. Cela devrait être possible mais requiert du développement, donc du temps. Je regarderai ces prochaines semaines si je peux modifier le plugin dans ce sens.

rick443 commented 5 years ago

Oui, cela m’intéresserait. Merci pour ce temps consacré. Cdlt.

Aymkdn commented 5 years ago

Voilà j'ai mis à jour le plugin !

Je t'invite donc à suivre les étapes suivantes :

  1. stopper assistant-plugins
  2. le mettre à jour : https://aymkdn.github.io/assistant-plugins/#comment-mettre-jour-
  3. modifier ton fichier configuration.json pour utiliser le nouveau paramètre volume : https://aymkdn.github.io/assistant-plugins/?plugin=notifier#param-tre-volume-optionnel-
  4. redémarrer assistant-plugins
  5. la version affichée pour assistant-notifier devrait être la 2.1.6

    [assistant] Chargement du plugin 'notifier' (v2.1.6)

rick443 commented 5 years ago

Merci Aymeric, Juste pour info, (je débute en javascript, et donc pas trop a l'aise avec le code), pour appeler ton plugin depuis mon plugin, voici ce que j'ai écrit ::

var googlehome = require('assistant-notifier'); googlehome.DireTexte(data);

et pour que cela fonctionne, j'ai été obligé de modifier le tien en remplaçant

"AssistantNotifier.prototype.action = function(text) {" par "exports.DireTexte = function(text) {"

j'ai bien compris que ce n'est pas comme cela que l'on doit procéder....mais ça fonctionne ! je ne vois pas comment appeler ta fonction car elle n'est pas "exportée"... tu parles dans ton tuto d'utiliser "this.plugins.notifier("message à faire dire")... bah je ne vois pas comment faire.... quand j'intègre this.plugins.notifier("message à faire dire") dans mon plugin, ça plante.

comment aurais tu écrit mon plugin pour éviter de toucher au tien ? Si tu pouvais m'écrire un petit exemple, je te remercie.

Aymkdn commented 5 years ago

Puis-je avoir le code complet de ton plugin ?

rick443 commented 5 years ago

var fs = require('fs'); var googlehome = require('assistant-notifier'); //googlehome.DireTexte("Bonjour, je suis Google Home");

fs.readFile('D:/Assistant_Vocal/assistant-plugins/node_modules/assistant-notifier/Message.txt', {encoding: 'utf8'}, function (err, data) { if (err) return console.log('fichier erreur !'); console.log(data); googlehome.DireTexte(data); });

ca ouvre un fichier texte qui contient le texte à lire .....

Aymkdn commented 5 years ago

Ce n'est pas du tout un plugin alors.... Pour créer un vrai plugin : https://github.com/Aymkdn/assistant-template

Aymkdn commented 5 years ago

Quel est ton but ? Pourquoi appeler le plugin de cette façon ?

Y'a une solution que j'avais proposée pour appeler notifier de façon indépendante : https://github.com/Aymkdn/assistant-plugins/issues/195 mais cette version n'est pas à jour puisqu'elle ne contient pas les changements liés au volume.

rick443 commented 5 years ago

oui, j'ai lu #195.... tu dis que c'est une adaptation de ton plugin...ok je ne vois pas trop ce qui diffère des deux !

le #195 me parait plus simple dans la compréhension et son utilisation... on l'appelle avec node notifier.js "texte à dire" mais comment fais tu pour executer "this.plugins.notifier("message à faire dire") dans un nouveau fichier *.js ?

Effectivement le #195 me suffit, mais pas de gestion de volume !

en fait je cherche à écrire un nouveau fichier js très simple, qui appelle ta fonction notifier. car elle ne fonctionne pas en l'appelant avec node notifier.js "texte à dire". je pensais qu'il suffisait de mettre "this.plugins.notifier("message à faire dire") dans mon nouveau fichier et le tour était joué.

Aymkdn commented 5 years ago

je ne vois pas trop ce qui diffère des deux !

La structure diffère et y'a du code en plus. Je peux le refaire en prendrant en compte le volume. Mais encore une fois, ça demande du temps.

Pour utiliser this.plugins.notifier il te faut créer un vrai plugin comme expliqué dans la template : https://github.com/Aymkdn/assistant-template

Aymkdn commented 5 years ago

Puis-je savoir ce que contient ton fichier "Message.txt" ? Et pourquoi as-tu besoin de lire son contenu ? Dans quelles circonstances ?

rick443 commented 5 years ago

Je programme ma domotique en vb. ansi, pour faire parler la GH, j'exporte les messages dans un fichier MESSAGE.txt (dans ce fichier, il y a ce que doit dire la GH), comme par exemple Bonjour.....

Ensuite, une fois le fichier message.txt créé, mon programme vb execute par une commande le fichier js que j'ai créé (vois ci dessous)

var fs = require('fs'); var googlehome = require('assistant-notifier');

fs.readFile('D:/Assistant_Vocal/assistant-plugins/node_modules/assistant-notifier/Message.txt', {encoding: 'utf8'}, function (err, data) { if (err) return console.log('fichier erreur !'); console.log(data); googlehome.DireTexte(data); });

Ce fichier js charge dans DATA la phrase contenue dans MESSAGE.txt et l'envoie a ton plugin qui se charge de faire parler la GH.

voilà !

Exemple, je demande à la GH de passer l'aspirateur , voici ce qui se passe

google assistant ==> IFTTT ==> Pushbullet ==> Plugin launch ==> active mon prog en VB ==> ordre donné à l'apirateur et création du message.txt (aspi en cours) ==> execution de ton plugin. ==> la GH parle et annonce que l'aspi est en cours.

idem pour alarme, porte de garage, etc...etc....

Je ne me contente pas du retour de la réponse de IFTTT... car l'action n'a peut être pas été jusqu'au bout pour une raison X. Mon programme en VB contrôle que l'action se réalise et envoie une confirmation vocale via ton plugin.

Je m'étonne des possibilités qu'offre le Javascript.... Je m'y interesse un peu plus... donc je me forme.... ca prend du temps.

Aymkdn commented 5 years ago

L'idéal serait qu'au lieu de faire un programme en VB, tu fasses un plugin pour contrôler l'aspirateur, qui pourrait être ensuite partagé avec la communauté, et du coup tu pourrais utiliser this.plugins.notifier et tout se ferait dans le même écosystème. Y'a quoi dans ton programme VB exactement ? Que je regarde sa complexité.

Tu m'as pas dit à un moment que tu utilisais Jeedom, non ? Il pourrait être intéressant aussi de développer un plugin qui interagirait avec Jeedom, mais je n'ai jamais utilisé ce système... donc faudrait que j'explore et teste.

Enfin, une solution que je trouve moins appropriée serait de faire une version exécutable d'assistant-plugins (avec une commande du genre node execute.js NomPlugin Paramètres).

Toutes ces solutions vont demander du temps.

rick443 commented 5 years ago

Non, je n'utilise pas d'interface Jeedom. Pour gérer toute ma domotique (depuis extérieur également), j'ai un serveur WAMP dédié... Le PHP me permet ainsi de piloter mes applis VB qui gèrent le chauffage, l'alarme, l'aspirateur, etc.... c'est le PC qui gère les relais.

Avant d'utiliser assistant-plugin, j'utilisais SARAH... mais le système a atteint ses limites....et l'IFTTT/pushbullet sont pour moi une façon d'étendre les possibilités de la GH. d'où mon orientation vers NodeJS. La communauté m'a permis d'ajouter de nouvelles fonctionnalités.

Aymkdn commented 5 years ago

Je viens de mettre en ligne la version 2.0.6 d'assistant-plugins qui permet une exécution depuis une ligne de commande : https://github.com/Aymkdn/assistant-plugins/wiki/Utiliser-le-programme-en-ligne-de-commande

no-response[bot] commented 5 years ago

Cette issue a été automatiquement fermée car il n'y a eu aucune réponse complémentaire de la part de l'auteur. N'hésite pas à reposter ici si tu as d'autres questions.

rick443 commented 5 years ago

Bonjour, je reviens sur ce sujet... j'exploite maintenant ce plugin via la ligne de commande. node ./node_modules/assistant-plugins/assistant-cli.js "notifier_ceci est un message de test"

Ca fonctionne bien..juste un p'tit problème, le texte est limité à 200 caractères.... au delà, on a un message d'erreur...

Peux tu augmenter cela ? (nvarchar(200) ==> ntexte() ) ?

Merci

Aymkdn commented 5 years ago

Non, c'est une limitation de la voix par défaut. Tu peux tenter avec l'autre voix (cf https://aymkdn.github.io/assistant-plugins/?plugin=notifier)

no-response[bot] commented 5 years ago

Cette issue a été automatiquement fermée car il n'y a eu aucune réponse complémentaire de la part de l'auteur. N'hésite pas à reposter ici si tu as d'autres questions.

rick443 commented 5 years ago

Bonjour, si je fais lire un texte qui contient un caractère avec un accent, ça pose problème... exemple: "à bientôt" le texte énoncé est incompréhensible.... Lors de l'exécution, le texte (dans NodeJS) est transformé en "O bientet".

As tu une solution ?

Cdlt.

Aymkdn commented 5 years ago

Quand tu utilises la ligne de commande ? Tu as sûrement un problème d'encodage de caractères. C'est souvent merdique à gérer ça... Encoder en UTF-8 par exemple ? Je ne sais pas... Il va falloir que tu te débrouilles.