|
| Plugin Opennab | |
| | Auteur | Message |
---|
devproject Nabz Junior
Nbr de messages : 50 Carottes : 6765
| Sujet: Plugin Opennab Ven 26 Oct 2007 - 18:55 | |
| Salut, Je suis en train de faire un petit plugin pour Opennab, par contre je me pose une question. Dans ce plugin , je souhaite faire un appel au plugin tts. Est-ce qu'il vaut mieux faire un appel à celui-ci de cette façon: - Citation :
- $tts = new TTS("syvumf");
$tts->Say($messages);
Ou vaut-il mieux appeler l'url de l'api tts : /vl/api.php?sn=xxxxxxxxxxxx&tts=salut&speaker=syvumf" La première méthode semble fonctionner selon les logs, mais le lapin ne dit rien. Si quelqu'un a une petite astuce, cela m'aiderait bien @+ | |
| | | oaz Silver Nabz
Localisation : Haute-Garonne Nabaztag : oaz (v2) Nbr de messages : 352 Carottes : 6590
| Sujet: Re: Plugin Opennab Ven 26 Oct 2007 - 22:11 | |
| L'appel de l'API fonctionnera à tous les coups mais le principal inconvénient est l'asynchronisme : le lapin ne prononcera le texte que lors de son prochain appel à OpenNab (soit 2 minutes + tard par défaut)
L'utilisation de la classe TTS est le plus efficace mais il faut maîtriser son fonctionnement. Pour cela il faut regarder comment est écrit le plugin 'tts' : - dans le OnPingWrite on envoie au lapin un message qui lui demande de faire un appel sur /broad - dans le OnBroadcast, la classe TTS est utilisée. La méthode Say a pour unique fonction de récupérer le contenu audio sur le speaker et de l'envoyer vers la réponse http.
Une solution intermédiaire est de ne se préoccuper que du OnPingWrite et d'utiliser le OnBroadcast au plugin 'tts' qui doit alors être actif. | |
| | | devproject Nabz Junior
Nbr de messages : 50 Carottes : 6765
| Sujet: Re: Plugin Opennab Dim 28 Oct 2007 - 9:57 | |
| salut oaz, J'ai préféré dans un premier temps utilisé la classe. Par contre mon plugin, envoi deux appels successifs à cette classe. Le lapin ne me lit que le deuxieme message. Pourtant je leur sonne un ID différent. J'ai donc essayé de me rabattre sur l'appel d'api: $src=file_get_contents("http://xxxx/vl/api.php?sn=xxxxx&tts=test&speaker=syvumf"); $src=file_get_contents("http://xxxx/vl/api.php?sn=xxxxx&tts=test2&speaker=syvumf"); le $src contient bien le resultat de l'api,par contre le lapin reste muet. si tu as une explication ça serait bien | |
| | | oaz Silver Nabz
Localisation : Haute-Garonne Nabaztag : oaz (v2) Nbr de messages : 352 Carottes : 6590
| Sujet: Re: Plugin Opennab Dim 28 Oct 2007 - 10:22 | |
| - devproject a écrit:
- si tu as une explication ça serait bien
Oui j'ai une explication : le système de plugins ne supporte pas des appels réentrants. Actuellement un appel OpenNab (par le lapin ou par l'API) ouvre le terrier ("burrow") du lapin concerné, donne la main à tous les plugins, et, en dernier lieu, sauve le contenu du terrier modifié par les divers plugins. Si un appel intervient pendant l'exécution d'un autre appel (en l'occurrence tu appelles l'api du plugin tts pendant un autre appel), la séquence est la suivante : - appel 1 ouvre terrier - appel 2 ouvre terrier - appel 2 sauve terrier - appel 1 sauve terrier => et écrase les informations de l'appel 2 J'ai déjà adressé ce problème dans la version en cours de dev (pour le plugin 'rfid2http' dont je parle dans une autre file de messages) en rajoutant une méthode 'AfterSave' à la classe burrow. Cette méthode permet d'enregistrer des fonctions php qui seront appelées après l'appel en cours. La séquence serait alors : - appel 1 ouvre terrier - appel 1 enregistre une fonction f avec AfterSave - appel 1 sauve terrier et execute f qui lance l'appel 2 - appel 2 ouvre terrier - appel 2 sauve terrier Pour ce qui est de tes 2 messages avec ID différents, il faudrait voir exactement la séquence des envois pour comprendre le comportement du lapin. Sache toutefois que tu peux mettre plusieurs ordres de lecture sur /broad dans un seul et unique message. Ca me parait plus simple à implémenter. | |
| | | devproject Nabz Junior
Nbr de messages : 50 Carottes : 6765
| Sujet: Re: Plugin Opennab Dim 28 Oct 2007 - 10:51 | |
| En effet, je n'avais pas pensé à cette dernière idée. Ca fonctionne au poil | |
| | | oaz Silver Nabz
Localisation : Haute-Garonne Nabaztag : oaz (v2) Nbr de messages : 352 Carottes : 6590
| Sujet: Re: Plugin Opennab Dim 28 Oct 2007 - 11:05 | |
| Par simple curiosité, quelles fonctions fournit ton plugin ? | |
| | | devproject Nabz Junior
Nbr de messages : 50 Carottes : 6765
| Sujet: Re: Plugin Opennab Lun 29 Oct 2007 - 16:51 | |
| La lecture des rdv Google Calendar, un peu comme ce que j'avais fait pour nabaztagcalendar.free.fr mais ce coup ci pour opennab. Pour l'instant, ça fonctionne bien, il faut juste que je teste sur le onCron.
Je ne sais pas si ça va interesser du monde. Quoi qu'il en soit, je pense rendre cela public dans les prochains jours.
Qu'en penses tu ? | |
| | | oaz Silver Nabz
Localisation : Haute-Garonne Nabaztag : oaz (v2) Nbr de messages : 352 Carottes : 6590
| Sujet: Re: Plugin Opennab Mar 30 Oct 2007 - 13:32 | |
| Moi ça m'intéresse en tout cas
Si tu veux on peut le mettre dans le prochain package opennab. | |
| | | devproject Nabz Junior
Nbr de messages : 50 Carottes : 6765
| Sujet: Re: Plugin Opennab Mar 30 Oct 2007 - 13:59 | |
| Ok ça marche, je finalise et te fait suivre | |
| | | giejo Lapin nain
Localisation : St Malo Nabaztag : cornebidouille (v2) Nbr de messages : 16 Carottes : 6391
| Sujet: Re: Plugin Opennab Mar 13 Nov 2007 - 16:34 | |
| Salut, est ce qu'il fonctionne ton plugin ? je suis très intéressé aussi ! | |
| | | Contenu sponsorisé
| Sujet: Re: Plugin Opennab | |
| |
| | | | Plugin Opennab | |
|
Sujets similaires | |
|
| Permission de ce forum: | Vous ne pouvez pas répondre aux sujets dans ce forum
| |
| |
| |