Le plugin Xap (la suite)

Si vous avez compris le premier tuto sur xAP disponible ici alors il est temps de passer aux choses sérieuses.

1) Comment faire communiquer Xlobby avec d’autres applications xAP ?

Le monde xAP étant en plein essor, le paramétrage que vous disposez ne permet certainement pas de communiquer avec toutes les applications compatibles. Vous avez peut-être trouvé une application qui fait un truc sympa que vous voulez intégrer comme la synthèse vocale par exemple. Faire parler votre XlobbyBox serait sympa non ? Mais vous ne trouvez rien dans les fonctions du plugin ! Ne vous inquiétez pas, tout est prévu pour que Xlobby s’adapte aux diverses applications xAP en cours et pourquoi pas à venir…

 2) Comment marche le plugin ?

Selon le même principe que Xlobby, c’est à dire qu’il va chercher dans des fichiers XML les informations qui vont lui expliquer comment il doit fonctionner. Si vous avez jeté un coup d’œil aux fichiers installés dans le répertoire xAP-Xlobby, vous avez certainement découvert deux fichiers XML situés dans le répertoire schema nommés actions ou actions.xml et events ou events.xml.

Le premier (actions) va décrire comment constituer les messages xAP sortants donc vos ordres, le second (events) va décrire comment sont constitués les messages entrants donc les évènements à écouter. En modifiant ces fichiers XML vous allez pouvoir indiquer à Xlobby comment envoyer des nouveaux messages mais aussi lui dire quels seront les messages entrants à écouter et ce qu’il faut en faire.

Dans le reste du document, nous avons pris comme exemple le fait de faire parler notre Xlobby. L’application compatible xAP correspondante est téléchargeable à l’adresse suivante  http://www.mi4.biz/modules.php?name=Downloads&d_op=viewdownload&cid=18

Elle ne nécessite pas de paramétrage particulier.

3) Ajouter une action simple au plugin ou comment est constitué le fichier actions.xml ?

Tout d’abord il vous faut trouver les descriptions des messages xAP que l’application que vous avez choisi d’intégrer peut recevoir. Beaucoup se trouvent à l’adresse suivante http://wiki.xapautomation.org/tiki-index.php?page=XapSchema

Gardez bien ces descriptions car elles vont nous servir de base pour le paramétrage. Pour notre exemple (xAP-Speech) l’application s’attends à recevoir un message du type :

 

Class=tts.speak

tts.speak

{

Say=(text to speak)               --- mandatory

Volume=(0-100)                     --- optional

Voice=(TTS Voice to use)       --- optional

Device=(Soundcard to use)    --- optional

Priority=(Yes/No To stop current playback and play this text)   --- optional

filename=(If the is present then instead of playing the sound through the sound card it will be recorded into a wav file specified here)           --- optional

}

 

Maintenant, allons voir comment dans le fichier actions nous allons décrire la constitution de ces messages.

Ce fichier est au format XML. Il contient un block <event> par type de messages possibles. C’est en rajoutant ou en supprimant ces blocks <event> que vous allez conditionner la liste des commandes possibles du plugin. Chaque block <event> est constitué de la même façon en voici un exemple que nous allons commenter, cet exemple ne fait rien, il a juste une fonction pédagogique.

 

<event>

<name>toto</name>

<class>ma classe</class>

<adress>adresse de destination</adress>

<Desc>ce type de message et un exemple</Desc>

<body>

nom_du_block

{

element 1=premier élément

element 2=deuxième élément

}

</body>

</event>

 

Attention, seuls les éléments en gras dans la description ci-dessus peuvent être changés.

  • Name doit contenir le nom générique de cette future commande, vous pouvez mettre ce que vous voulez. Ce nom vous sera proposé dans la liste des commandes de Xlobby.
  • Class doit être égal à la classe de la description du message
  • Adress doit correspondre au destinataire du message, elle est constituée de fabriquant.nom_device.nom_machine
  • Desc contient un descriptif, libre à vous de saisir ce que vous voulez
  • Nom_du_block doit correspondre exactement au nom de block de la description, cela va permettre au plugin de reconnaître les messages à écouter des autres.
  • Element 1 correspond au premier paramètre du message avec à droite du = la valeur, cela ainsi de suite pour les autres éléments.

 Pour rajouter la fonction PARLE de notre exemple il nous faut donc rajouter un block <event> avec :

 

<event>

<name>Parle</name>

<class>tts.speak</class>

<adress>mi4.speech.*</adress>

<Desc>Permet de commander la synthese vocale</Desc>

<body>

tts.speak

{

[]

Say=Enfin je parle

Volume=80

}

</body>

</event>

 

Enfin il ne nous reste qu’à tester.

  • Pensez bien à relancer Xlobby pour que le plugin prenne en compte cette nouvelle commande. Allez dans la configuration du plugin (F2, onglet plugin, sélectionnez xAP-Xlobby puis bouton config) pour activer la visualisation des messages sortants (show outgoing messages)
  • Allez dans la gestion des évènements (F2, onglet events) pour en créer un nouveau, choisissez le plugin xAP et en ouvrant la liste des commandes associées vous devez voir apparaître Parle.
  • Créez un bouton et associez cet évènement. Sortez de la configuration, pressez le bouton et vous devez voir apparaître une fenêtre avec le message xAP complet. Cela vous permet de voir si aucune erreur n’a été commise.

4) Ajouter des paramètres aux messages sortants

Oui, il est bien sûr possible d’ajouter des paramètres directement issus de Xlobby aux messages sortants. Ceci devrait nous permettre de faire dire ce que nous voulons à notre exemple. Ce paramètre, vous pouvez le renseigner dans la configuration de vos évènements dans la ligne param, sous les lignes plugin et commande. Vous pouvez mettre ce que vous voulez, du texte, une variable Xlobby…

Pour que le plugin l’utilise correctement, vous devez indiquer son emplacement dans la description du message en ajoutant le texte *Xlobby*

Dans notre exemple cela donne :

 

<event>

<name>Parle</name>

<class>tts.speak</class>

<adress>mi4.speech.*</adress>

<Desc>Permet de commander la synthèse vocale</Desc>

<body>

tts.speak

{

[]

Say=*Xlobby*

Volume=80

}

</body>

</event>

 

Lors de l’exécution, le plugin va remplacer ce texte par le paramètre reçu de Xlobby.

Dans la version actuelle, vous ne pouvez ajouter qu’un seul paramètre (dommage) mais en fonction des demandes, une modification pourrait arriver dans une prochaine version.

5) Mutualiser les descriptions des messages sortants

Dans notre exemple, un seul message est attendu, la question ne se pose pas, mais il se peut que pour un même type de messages vous vouliez disposer de plusieurs commande voisine comme un player qui propose les commandes PLAY, STOP, PAUSE, NEXT…

Il est bien sûr possible de décrire cela en faisant autant de blocks <event> que de commandes mais afin de vous faciliter la tâche, une description mutualisée est possible.

Au préalable, vérifiez que toutes les commandes que vous voulez mutualiser

- sont à destination de la même application

- appartiennent à la même classe

- ont le même nom de block

Si ces trois conditions sont respectées alors on peut mutualiser. Si on reprend notre exemple de player, cela pourrait donner :

 

<event>

<name>Player VLC</name>

<class>vlc.player</class>

<adress>Ptrinchi.VLC.*</adress>

<Desc>Permet de commander VLC par xAP</Desc>

<body>

VLC.Command

{

Command=[Play,Stop,Pause,Prev,Next]

File=e:\essai.avi           

}

</body>

</event>

 

Cela permet de disposer de 5 nouvelles commandes dans Xlobby en une seule description. Si à cela vous voulez rajouter un paramètre indiquant le nom du fichier à ouvrir cela donne :

 

<event>

<name>Player VLC</name>

<class>vlc.player</class>

<adress>Ptrinchi.VLC.*</adress>

<Desc>Permet de commander VLC par xAP</Desc>

<body>

VLC.Command

{

Command=[Play,Stop,Pause,Prev,Next]

File=*Xlobby*           

}

</body>

</event>

 

Maintenant vous êtes prêt pour ajouter tous les ordres xAP que vous voulez à Xlobby.

6) Ecouter un type de messages entrants ou comment est constitué le fichier events.xml ?

Et pour les messages entrants ? Le plugin se comporte de la même façon, il va lire des descriptions de messages et les ajouter à sa liste de surveillance.

Tout d’abord il vous faut trouver les descriptions des messages xAP que l’application envoi. Généralement ces descriptions sont au même endroits que les descriptions des messages attendus.

Dans notre cas nous reprendrons l’exemple des messages d’alerte de nouveau mails comme décrit dans le premier tutoriel.

Aller dans le fichier EVENTS. Vous voyez qu’à chaque block <message> correspond une description de message à surveiller. Chaque block à la même structure :

 

<message>

<name>New Mail</name>

<class>mail.incoming.new</class>

<address>*.*.*.*</address>

<body>

block=message

state=Vous avez [msg] nouveau(x) Mail(s) de [from]

text=Sujet : [subject]

</body>

<xlobby>goto:goto new mail</xlobby>

</message>

 

Attention, seules les parties en gras peuvent être modifiée.

  • name est un nom interne.
  • Class contient la class du message que l’on va recevoir, c’est de cette façon que le plugin va filtrer les messages qu’il doit surveiller des autres.
  • Address contient l’adresse de l’émetteur
  • Message est le nom du block de message comme demandé par l’application

Ensuite vous disposez de 2 lignes, state et text. Chacune de ces lignes vous permet de remplir une variable Xlobby que vous pourrez afficher dans des zones de texte du type

plugin>xap-xlobby>state>xxxxx

et

plugin>xap-xlobby>text>xxxxx.

Allez voir le premier tuto (en fin de document) pour déterminer ce que doivent être les xxxxx. Vous pouvez saisir ce que vous voulez à gauche du = et ainsi constituer ce qui sera affiché par vos variables. Comme dans l’exemple ci-dessus, vous pouvez utiliser des variables issues du message entrant. Ici, le message entrant dispose de variables comme msg, from que l’on encapsule dans la zone state.

 7) Comment lier une action Xlobby à la réception d’un type de message particulier ?

C’est la dernière chose qu’il nous reste à voir et ne vous inquiétez pas (même si une énorme migraine arrive) c’est la plus simple. Il vous suffit de mettre entre les tag <xlobby> le groupe et l’event séparer du caractère : Dans l’exemple la lecture du message d’arrivé d’un nouveau mail lancera dans Xlobby l’affichage d’un écran nommé goto new mail, qui figure dans le groupe goto, après à vous de mettre ce que vous voulez et faire ce qu’il vous plait.

 8) Conclusion

J’espère que vous êtes arrivé jusque là, cela veut dire que vous n’avez toujours pas de migraine !!! et que le monde xAP en s’agrandissant vous proposera les applications qui vous intéressent.

N’oubliez pas que Xlobby devient un émetteur et un récepteur xAP paramétrable donc que rien n’empêche à un Xlobby de parler xAP avec n’importe qui … et pourquoi pas d’autres Xlobby !!!!

 Version 1 par ptrinchi (25/07/2005)