ldleman / yana-server

Interface PHP de domotique Y.A.N.A (You Are Not Alone)
http://projet.idleman.fr/yana
107 stars 59 forks source link

Developpement plugin - questions #292

Open lochot opened 7 years ago

lochot commented 7 years ago

Salut Idleman, ça y est, je m'y suis mis, yana est installée, paramétrée. Elle ouvre et ferme mes volets a la demande, la lumière toussa toussa.

Je vais donc commencer a developper les petits plugin qui me conviennent, et j'en ai commencé un tout simple qui m'indique le nombre de fan de ma page facebook.

Pour le moment, j'ai créé la page de configuration (token, id de la page facebook etc...) J'interroge facebook et je reçois le nombre de fan, mais :

Plugin::addHook("action_post_case", "vocalinfo_give_me_fan"); Plugin::addHook("vocal_command", "facebooklike_plugin_vocal");

Yana répond "Nous avons fans sur la page" quelque soit la question que je lui pose

J'ai cru comprendre qu'il fallait un fonction intermediaire de type action
```php
        function facebooklike_action() {
                global $_,$conf;
                switch($_['action']){
                        case "plugin_facebooklike":
                                echo 1;
                        break;
                }
        }
         Plugin::addHook("action_post_case", "facebooklike_action");

Mais je ne vois pas comment envoyer l'action au préalable

J'aimerais aussi lancer une fonction dans la cron de yana pour mettre à jour le nombre de fan et lui faire dire "youpi, on a passer une tranche de 100 fans supplementaire !" d'elle meme quand c'est le cas.

Bref j'ai des question et j'en poserais probablement d'autres par la suite, mais mon pavé est déjà pas mal conséquent :)

ldleman commented 7 years ago

Salut Locho, et bonne année :D !!! Tu n'as pas besoin de passer par les actions si tu specifie dircet le nom de la fonction tu peux te contenter d'un

        function facebooklike_plugin_vocal(){
                global $conf;

                $response['commands'][] = array(
                        'command'=>$conf->get('VOCAL_ENTITY_NAME').' on a combien de fan',
                        'callback'=>'vocalinfo_give_me_fan',
                        'confidence'=>0.8);
        }

       function vocalinfo_give_me_fan($text,$confidence,$parameters){
                global $conf;
                $cli = new Client();
                $cli->connect();
                $nb_fan = get_nbfan();
                $cli->talk("Nous avons".$nb_fan."fans sur la page");
                $cli->disconnect();
        }

Plugin::addHook("vocal_command", "facebooklike_plugin_vocal");

En gros le callback exécute direct la fonction sans passer par une action http.

Pour lancer une action via un cron tu dois utiliser le hook cron

Plugin::addHook("cron", "mafonctionyoupi");
lochot commented 7 years ago

Super ! Par contre pour récuperer la commande vocale côté serveur, il fallait préciser &$response,$actionUrl dans les parametres de la fonction vocale

        function facebooklike_plugin_vocal(&$response,$actionUrl){
                global $conf;

                $response['commands'][] = array(
                        'command'=>$conf->get('VOCAL_ENTITY_NAME').' on a combien de fan',
                        'callback'=>'vocalinfo_give_me_fan',
                        'confidence'=>0.8);
        }

Par contre je ne récupère pas la commande dans yana4All :(

lochot commented 7 years ago

Précisions La cron ça marche super - La commande vocal n'apparait pas dans yana4all, mais elle existe bien dans le client yana windows.

Tu me dis si je n'aurais pas dû J'ai ajouté la partie concernant les hook dans la doc yana là -> http://idleman.fr/yana/doc/developper/index.php?page=hook_api Je préfère garder des notes, donc autant qu'elles servent à tous le monde.

Ah oui, je viens de m'apercevoir que je n'avais même pas répondu : MEILLEURS VŒUX !

lochot commented 7 years ago

Bon j'ai pas eu énorme de temps, mais en passant, j'ai regardé yana windows, la commande vocale est bien presente, mais elle ne repond pas. Dans les logs, j'ai la commande reconnue, mais elle appelle URL qui est vide. Demain je testerais en utilisant l'autre methode vocale pour voir si yana windows repond bien, et si ça corrige le souci de yana4all android. -> il y a des chances pour que ce soit ça etant donné le retour de GET_SPEECH_COMMAND qui à l'air d'etre utilisé pour recuperer les commandes (je n'ai pas regardé les sources, seulement celles du client linux de maditnerd qui m'a l'air vraiment sympa)