Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Developpement plugin - questions #292

Open
lochot opened this issue Jan 3, 2017 · 4 comments
Open

Developpement plugin - questions #292

lochot opened this issue Jan 3, 2017 · 4 comments
Labels

Comments

@lochot
Copy link

lochot commented Jan 3, 2017

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 :

  • comment le faire dire à Yana ?
    -> ce que j'ai compris pour le moment :
  • Il faut ajouter des fonctions aux hook action_post_case et vocal_command
    ma fonction vocal_command defini la phrase
        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);
        }

Mais j'ai vu soit un callback, soit un url qui appelle la fonction suivante

        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();
        }

Si j'ajoute les hook tels que suit

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

        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
Copy link
Owner

ldleman commented Jan 4, 2017

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
Copy link
Author

lochot commented Jan 4, 2017

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
Copy link
Author

lochot commented Jan 4, 2017

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
Copy link
Author

lochot commented Jan 6, 2017

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)

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
Projects
None yet
Development

No branches or pull requests

2 participants