Avant toute chose merci de (re)prendre connaissance de la charte et de la respecter.
Pour résumer :
- Avant de poser une question, je cherche si la réponse existe
- Je suis poli, courtois et je respecte tout un chacun sur le forum
- Si un post m'agace : je m'en éloigne plutôt que de répondre d'une façon qui pourrait être mal interprétée


Il n'est jamais du luxe que de rappeler des choses simples :
Courtoisie, amabilité, politesse et bonne humeur sont les maîtres mots pour un forum sympathique, bienveillant et accueillant :)

Le groupe des Helpers est present pour vous aidez, n'hésitez pas à poser des questions ;)

Toute la communauté vous remercie

[DEV] Plugin Alexa-Api en BETA uniquement

Sous forum pour les plugins Dialogflow et Google Assistant
Kyoshi
Timide
Messages : 252
Inscription : 04 mai 2018, 14:05

Re: [Tuto] Faire dire et faire faire ce que l'on veut a Alexa grâce a un script

Message par Kyoshi » 18 janv. 2019, 22:52

Bon... Après même pas 15 jours, je rencontre le problème du cookie...
Et pourtant, mon Jeedom étant dans un docker, je ne me suis jamais connecté depuis mon docker vers Alexa.amazon...
Donc je me demande pourquoi cela fonctionnait au début... Et plus maintenant...

J'ai bien mis le code suivant (depuis le début) :
BROWSER='Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/51.0.2704.103 Safari/537.36'
La copie du copie n'est pas une solution mais juste un pansement car au bout de même pas deux semaines, rebelote...

Pourquoi cela fonctionnait il y a deux semaines sans la moindre copie du plugin... :?

EDIT : avec la copie du cookie (plugin cookies.txt) cela fonctionne mais ce n'est pas du tout une solution viable.

Kyoshi
Timide
Messages : 252
Inscription : 04 mai 2018, 14:05

Re: [Tuto] Faire dire et faire faire ce que l'on veut a Alexa grâce a un script

Message par Kyoshi » 19 janv. 2019, 00:19

Quelqu'un s'est déjà penché là-dessus ?
https://github.com/Apollon77/alexa-cook ... /readme.md

Le script a l'air de rafraîchir le cookie automatiquement.

Je suis KO là... Plus envie de tester... Et en plus, ce n'était pas prévu que je passe du temps sur ça ce soir...

jujujames
Timide
Messages : 36
Inscription : 26 janv. 2016, 01:00

Re: [Tuto] Faire dire et faire faire ce que l'on veut a Alexa grâce a un script

Message par jujujames » 19 janv. 2019, 05:22

merci sigalou pour la reponse

j'ai essayer en ligne de commande comme tu me l a suggerer mais ça ne veut pas ,il faut dire aussi que je suis novice en linux donc je suis peut etre passé a coté de quelque chose

j ai essayer ça avec et sans sudo avant

Code : Tout sélectionner

 cd /etc/alexa-remote-control
  ./alexa-remote-control.sh -d "Dot" -e speak:"TEXTE"

Code : Tout sélectionner

cd /etc/alexa-remote-control 

Code : Tout sélectionner

./alexa-remote-control.sh -d "Dot" -e speak:"TEXTE"
des fois ça ne renvoie rien des fois ça : bad interpreter: Permission denied

Avatar de l’utilisateur
sigalou
Actif
Messages : 927
Inscription : 23 janv. 2017, 16:02

Re: [Tuto] Faire dire et faire faire ce que l'on veut a Alexa grâce a un script

Message par sigalou » 19 janv. 2019, 07:28

jujujames a écrit :
19 janv. 2019, 05:22
des fois ça ne renvoie rien des fois ça : bad interpreter: Permission denied
? Ca ne peut pas répondre des choses différentes, je ne comprends pas ta phrase.

Tu as bien rendu ton script exécutable ?

chmod +x alexa_remote_control.sh

Donne moi bien ce que tu tapes et la réponse que tu as pour que je t'aide.
Sigalou

Utilisateur/Développeur Plugin Jeedom
Créateur des plugins Alexa-API & WatchDog



jujujames
Timide
Messages : 36
Inscription : 26 janv. 2016, 01:00

Re: [Tuto] Faire dire et faire faire ce que l'on veut a Alexa grâce a un script

Message par jujujames » 21 janv. 2019, 00:03

salut

j ai essayé de mettre ça en ligne de commande en ssh

Code : Tout sélectionner

cd /etc/alexa-remote-control
./alexa-remote-control.sh -d "spot" -e speak:"parle maintenant"
ça me repond ça

Code : Tout sélectionner

-bash: ./alexa-remote-control.sh: /: bad interpreter: Permission denied
j'ai essayé ça

Code : Tout sélectionner

sudo cd /etc/alexa-remote-control
./alexa-remote-control.sh -d "spot" -e speak:"parle maintenant"
ça me renvoie ça

Code : Tout sélectionner

sudo: cd: command not found
ça

Code : Tout sélectionner

./alexa-remote-control.sh -d "spot" -e speak:"parle maintenant"
et ça

Code : Tout sélectionner

sudo ./alexa-remote-control.sh -d "spot" -e speak:"parle maintenant"
renvoie rien

comme je te l'ai dit je suis novice en linux donc si il y a des chose precise a faire peut tu me dire la marche a suivre

merci

Avatar de l’utilisateur
sigalou
Actif
Messages : 927
Inscription : 23 janv. 2017, 16:02

Re: [Tuto] Faire dire et faire faire ce que l'on veut a Alexa grâce a un script

Message par sigalou » 21 janv. 2019, 12:45

Normal que "sudo cd ..." soit en erreur.

Essaies :

sudo su -
cd /etc/alexa-remote-control
chmod +x alexa_remote_control.sh
./alexa-remote-control.sh -d "spot" -e speak:"parle maintenant"
Sigalou

Utilisateur/Développeur Plugin Jeedom
Créateur des plugins Alexa-API & WatchDog



jujujames
Timide
Messages : 36
Inscription : 26 janv. 2016, 01:00

Re: [Tuto] Faire dire et faire faire ce que l'on veut a Alexa grâce a un script

Message par jujujames » 22 janv. 2019, 19:14

salut
alors quand je rentre les ilgnes que tu m a donné les une aprés les autres a

chmod +x alexa_remote_control.sh

ça me renvoie ça

Code : Tout sélectionner

chmod: cannot access ‘alexa_remote_control.sh’: No such file or directory

xav_38
Timide
Messages : 454
Inscription : 13 avr. 2016, 20:45
Localisation : Grenoble

Re: [Tuto] Faire dire et faire faire ce que l'on veut a Alexa grâce a un script

Message par xav_38 » 23 janv. 2019, 10:55

- au lieu de _


Envoyé de mon iPhone en utilisant Tapatalk

Kyoshi
Timide
Messages : 252
Inscription : 04 mai 2018, 14:05

Re: [Tuto] Faire dire et faire faire ce que l'on veut a Alexa grâce a un script

Message par Kyoshi » 23 janv. 2019, 13:43

jujujames a écrit :
22 janv. 2019, 19:14
salut
alors quand je rentre les ilgnes que tu m a donné les une aprés les autres a

chmod +x alexa_remote_control.sh

ça me renvoie ça

Code : Tout sélectionner

chmod: cannot access ‘alexa_remote_control.sh’: No such file or directory
Ce n'est pas débutant ça... Tu découvres Linux.
Je te conseille de lire deux ou trois d'initiation pour connaitre les bases.

En tout cas, il ne faut pas hésiter d'abuser de la tabulation.
Si tu es dans le bon répertoire, commences par exemple à saisir "ale" et appuie sur TAB.
Cela va s'autocompléter et tu n'auras pas besoin de saisir le nom complet.

Pour tes problèmes de droit d'exécution, va dans le répertoire où se situe ton script et donne-nous le résultat de la commande "ls -al" (ce sont des "L" minuscule). La commande va lister les fichiers du répertoire courant et indiquer les droits et le propriétaire de chaque fichier.
Tu peux également vérifier qui est l'utilisateur courant avec "whoami" et nous indiquer le résultat pour que l'on puisse comparer par rapport au propriétaire du script.

jujujames
Timide
Messages : 36
Inscription : 26 janv. 2016, 01:00

Re: [Tuto] Faire dire et faire faire ce que l'on veut a Alexa grâce a un script

Message par jujujames » 24 janv. 2019, 05:43

salut

alors pour ls-al ça me renvoie ça

Code : Tout sélectionner

drwxr-xr-x   2 root root  4096 Jan 18 04:52 .
drwxr-xr-x 104 root root  4096 Jan 18 04:50 ..
-rwxrwxrwx   1 root root 27946 Jan 19 04:37 alexa-remote-control.sh
et pour whoami

Code : Tout sélectionner

jeedom

Kyoshi
Timide
Messages : 252
Inscription : 04 mai 2018, 14:05

Re: [Tuto] Faire dire et faire faire ce que l'on veut a Alexa grâce a un script

Message par Kyoshi » 24 janv. 2019, 10:28

jujujames a écrit :
24 janv. 2019, 05:43
salut

alors pour ls-al ça me renvoie ça

Code : Tout sélectionner

drwxr-xr-x   2 root root  4096 Jan 18 04:52 .
drwxr-xr-x 104 root root  4096 Jan 18 04:50 ..
-rwxrwxrwx   1 root root 27946 Jan 19 04:37 alexa-remote-control.sh
et pour whoami

Code : Tout sélectionner

jeedom
Ce n'est pas propre comme ça ( tu donnes tous les droits à tout le monde) mais ça devrait s'exécuter.
Et du coup quand tu exécutes la commande suivante, tu as toujours l'erreur bad interpreter?

Code : Tout sélectionner

./alexa-remote-control.sh -d "spot" -e speak:"parle maintenant"
Si c'est toujours le cas, je pense qu'il y a eu un souci lors d'un copier/coller.
Si tu regardes le premier post de la page 6, j'indique qu'il vaut mieux utiliser un wget pour récupérer le fichier.
Lorsque l'on fait un copier/coller (suivant le sens et suivant les éditeurs de texte), l'interprétation du retour chariot/saut de ligne/retour à la ligne peut être interprété différemment et ça fout la merde dans le fichier.
D'ailleurs, tu peux vérifier le fichier, si tu ne vois pas de caractères bizarres.

Sinon, récupères à nouveau le fichier (avec la commande wget que j'indique), édite-le avec nano et retente le coup.

Kyoshi
Timide
Messages : 252
Inscription : 04 mai 2018, 14:05

Re: [Tuto] Faire dire et faire faire ce que l'on veut a Alexa grâce a un script

Message par Kyoshi » 26 janv. 2019, 15:35

Hello,

Est-ce que quelqu'un a testé le script alexa-cookie de Apollon77 https://github.com/Apollon77/alexa-cookie?
J'ai tenté mais j'ai des erreurs dans tous les sens.
N'étant pas exemple en scripting...

Mais bon, ça n'a pas l'air d'intéressé les foules.

Avatar de l’utilisateur
jbecker
Timide
Messages : 52
Inscription : 27 janv. 2019, 17:46

Re: [Tuto] Faire dire et faire faire ce que l'on veut a Alexa grâce a un script

Message par jbecker » 27 janv. 2019, 18:13

Bonjour,

J'ai testé alexa-cookie et alexa-remote de https://github.com/Apollon77/
alexa-cookie est la librairie capable de renouveler le token.
alexa-remote se base sur alexa-cookie et fourni les commande pour contrôler nos devices.

La librairie n'est pas encore 100% mature mais très avancée. J'ai juste dû effectuer quelques petites modifications, notamment parce que tout était redirigé vers amazon.de en langue de-DE.

Comme pour l'autre librairie, il faut une première fois récupérer un objet cookie, pour cela, la librairie ouvre un serveur local qui sert de proxy et qui nous redirige vers la page d’authentification amazon pour obtenir notre token initial (au format JSON). Après, il ne reste plus qu'a mentionner cet objet pour effectuer les commandes. Parmi les commandes, il y a refreshCookie qui nous permet de générer un nouveau token. Il faut idéalement appeler cette fonction tous les 14 jours.

Le tout est en NodeJS, ce qui est très prometteur pour la création d'un plugin Jeedom propre.
Hélas, je débarque seulement sur Jeedom, je ne connais pas encore la procédure pour créer un plugin mais ce plugin devrait:
* Démarrer un serveur NodeJS
* Ce serveur se connect à Amazon grâce aux cookies
* Un cron rafraîchi régulièrement le fichier cookie (genre tous les 5 jours)
* Le serveur écoute un port et transmet les commandes à la librairie. Il offrirai une API HTTP du genre: ?device=Salon&command=speak&value="Hello World"

Petit exemple d'utilisation:

Code : Tout sélectionner

let Alexa = require('../alexa-remote');
let alexa = new Alexa();

let cookie = {};

if (process.argv.length != 5)
{
  console.log('Invalid argument');
  stop();
}

var fs = require('fs');
fs.readFile('/tmp/alexa-cookie.json', 'utf8', (err, data) =>
{
  cookie = JSON.parse(data);
  start();
});

function start()
{
  alexa.init({
      cookie: cookie,  // cookie if already known, else can be generated using email/password
      proxyLogLevel: 'info',
      bluetooth: true,
      logger: console.log, // optional
      alexaServiceHost: 'alexa.amazon.fr', // optional, e.g. "pitangui.amazon.com" for amazon.com, default is "layla.amazon.de"
      useWsMqtt: false, // optional, true to use the Websocket/MQTT direct push connection
      cookieRefreshInterval: 7*24*60*1000 // optional, cookie refresh intervall, set to 0 to disable refresh
    },
    function (err)
    {
      alexa.sendSequenceCommand(process.argv[2], process.argv[3], process.argv[4], function(err)
      {
        stop();
      });

    });
}

function stop()
{
  process.exit();
}
Exemple d'appel:

Code : Tout sélectionner

nodejs scripts/sendCommand.js Cuisine speak "Quand est-ce qu'on bouffe ici ?"
Conclusion:
La librairie fonctionne et pourrait facilement s'intégrer dans Jeedom car en NodeJS.
Cette solution serait bien mieux intégrée que la solution qui consiste à faire des appels bash.
Une fois le serveur en place, Alexa deviendra contrôlable via requête HTTP ... à partir de là, un océan de possibilité s'ouvre à nous ;)

Des amateurs pour faire un plugin ? Je peux aider ;)

Avatar de l’utilisateur
sigalou
Actif
Messages : 927
Inscription : 23 janv. 2017, 16:02

Re: [Tuto] Faire dire et faire faire ce que l'on veut a Alexa grâce a un script

Message par sigalou » 27 janv. 2019, 18:46

jbecker a écrit :
27 janv. 2019, 18:13
Bonjour,

J'ai testé alexa-cookie et alexa-remote de https://github.com/Apollon77/
alexa-cookie est la librairie capable de renouveler le token.
alexa-remote se base sur alexa-cookie et fourni les commande pour contrôler nos devices.
..
Salut jbecker

Je vais tester cette librairie par curiosité, pour l'instant, j'utilise (et ça fonctionne bien) le script alexa-remote-control.sh

J'ai un diskstation, je vais y mettre Node js et faire quelques essais.

Si tu as une version Apollon77 adapté à alexa donc en amazon.fr, je suis preneur d'un petit zip sinon tant pis, je vais tout reprendre.

C'est l'histoire des alarmes, des notifications et des réveils qui m’intéresse, j'ai parcouru le script js, j'ai l'impression que c'et géré contrairement au script alexa-remote-control.sh.

On se tient au courant ici et on avance sur ces scripts...

a+
Sigalou

Utilisateur/Développeur Plugin Jeedom
Créateur des plugins Alexa-API & WatchDog



Avatar de l’utilisateur
jbecker
Timide
Messages : 52
Inscription : 27 janv. 2019, 17:46

Re: [Tuto] Faire dire et faire faire ce que l'on veut a Alexa grâce a un script

Message par jbecker » 27 janv. 2019, 19:29

Code : Tout sélectionner

unzip remote.zip
cd remote
npm install
remote/
  • exemple/example.js : Correspond au fichier https://github.com/Apollon77/alexa-remo ... example.js Il m'a servi pour créé mon premier token. En virant la variable cookie, il crée le proxy. Tu te connect dessus via ton browser, tu t'identifies et tu trouveras dans la console un object en JSON qui resemble à: {"loginCookie":"registerDevice=thhrtBNcaLQR .... Xd2qV6k=; csrf=1520651988","csrf":"1520651988"}. Comme tu le verra, je le stock dans /tmp/alexa-cookie.json pour mes autres scripts
  • scripts/refreshToken.js : Met à jour le fichier /tmp/alexa-cookie.json avec un nouveau token
  • scripts/sendCommand.js : Prend 3 paramètres et exécute la commande. Les paramètres sont transmis tel quel à la librairie. cf. la librairie pour savoir ce qui existe :) j'utilise "volume" et "speak" pour l'instant.
La librairie propose déjà nativement de faire automatiquement des refresh du token, faudra peut-être le faire évoluer pour qu'il mette à jour le fichier /tmp/alexa-cookie.json par la même occasion.
Tu verras que l'initialisation (connection à amazon, récupération de la liste des devices, des notifications, etc) est assez lourde. Ce qui engendre 2-3 secondes de décalage entre le début d'exécution du script et la réaction d'Alexa, c'est pour ça aussi qu'il faut un serveur NodeJS comme ça, nous n'avons qu'une fois l'initialisation :)
Pièces jointes
remote.zip
(21.95 Kio) Téléchargé 16 fois

Avatar de l’utilisateur
sigalou
Actif
Messages : 927
Inscription : 23 janv. 2017, 16:02

Re: [Tuto] Faire dire et faire faire ce que l'on veut a Alexa grâce a un script

Message par sigalou » 27 janv. 2019, 19:53

Super, bien reçu, je me lance, je vais essayer. Merci pour tes explications, très pédago, je te tiens a courant.

Edit :
jbecker a écrit :
27 janv. 2019, 19:29
  • exemple/example.js : Correspond au fichier https://github.com/Apollon77/alexa-remo ... example.js Il m'a servi pour créé mon premier token. En virant la variable cookie, il crée le proxy. Tu te connect dessus via ton browser, tu t'identifies et tu trouveras dans la console un object en JSON qui resemble à: {"loginCookie":"registerDevice=thhrtBNcaLQR .... Xd2qV6k=; csrf=1520651988","csrf":"1520651988"}. Comme tu le verra, je le stock dans /tmp/alexa-cookie.json pour mes autres scripts
Lancé, je me suis bien identifié sur la page allemande d amazon, j'ai bien eu "Amazon Alexa Cookie successfully retrieved. You can close the browser." Et j'ai bien dans le console le loginCookie....

A ce stade, je n'ai pas compris comment envoyer une commande speak par exemple.
Faut il envoyer un post sur http://192.168.0.21:3456?quelquchose... en laissant example.js tourner ?
Dernière édition par sigalou le 27 janv. 2019, 20:46, édité 1 fois.
Sigalou

Utilisateur/Développeur Plugin Jeedom
Créateur des plugins Alexa-API & WatchDog



Avatar de l’utilisateur
jbecker
Timide
Messages : 52
Inscription : 27 janv. 2019, 17:46

Re: [Tuto] Faire dire et faire faire ce que l'on veut a Alexa grâce a un script

Message par jbecker » 27 janv. 2019, 20:45

C'est parce que à ce moment là, je faisais mes premiers pas avec la librairie, je n'avais pas encore mis en place le système /tmp/alexa-cookie.json
Le token est dans ta console (celle avec laquelle tu as exécuté le script ;))

Avatar de l’utilisateur
sigalou
Actif
Messages : 927
Inscription : 23 janv. 2017, 16:02

Re: [Tuto] Faire dire et faire faire ce que l'on veut a Alexa grâce a un script

Message par sigalou » 27 janv. 2019, 20:47

OK, oui j'ai vu. le script n'enregistre rien mais affiche en console.
Je me suis bien identifié sur la page allemande d amazon, j'ai bien eu "Amazon Alexa Cookie successfully retrieved. You can close the browser." Et j'ai bien dans le console le loginCookie....

A ce stade, je n'ai pas compris comment envoyer une commande speak par exemple.
Faut il envoyer un post sur http://192.168.0.21:3456?quelquchose... en laissant example.js tourner ?
Sigalou

Utilisateur/Développeur Plugin Jeedom
Créateur des plugins Alexa-API & WatchDog



Avatar de l’utilisateur
jbecker
Timide
Messages : 52
Inscription : 27 janv. 2019, 17:46

Re: [Tuto] Faire dire et faire faire ce que l'on veut a Alexa grâce a un script

Message par jbecker » 27 janv. 2019, 21:06

Code : Tout sélectionner

nodejs scripts/sendCommand.js NomDuDevice speak "Bonjour, comment ça va?"
NomDuDevice est le doux nom de ton Alexa, chez moi j'ai Salon et Cuisine.

J'ai aussi joué avec la commande de volume:

Code : Tout sélectionner

nodejs scripts/sendCommand.js Salon volume 70
Le script suppose que ton cookie a été sauvé dans /tmp/alexa-cookie.json

Je me suis à peu près arrêter là.
Pour moi, il y avait assez de matière pour industrialiser le tout.

Kyoshi
Timide
Messages : 252
Inscription : 04 mai 2018, 14:05

Re: [Tuto] Faire dire et faire faire ce que l'on veut a Alexa grâce a un script

Message par Kyoshi » 28 janv. 2019, 11:24

Hello @jbecker,
Merci pour ton retour.

Je vais faire des essais de mon côté.
Mais je sens que je vais m'amuser avec mes dockers :roll:

Répondre

Revenir vers « [Plugin Officiel] Assistant vocaux »

Qui est en ligne ?

Utilisateurs parcourant ce forum : Aucun utilisateur inscrit et 0 invité