Article - Article - Article - Article - Article 
      Les agents  Microsoft 

 Aujourd'hui connus de tous, les agents Microsoft ont fait leur apparition dans la suite Office sous le nom de "compagnons" avec notamment le célèbre trombone.

Une version plus évoluée destinée à Windows 9.x et NT a été mise à disposition des utilisateurs par Microsoft. On peut toujours télécharger sur le site de Microsoft les patchs nécessaire à leur fonctionnement.
Aujourd'hui, le "moteur" permettant de faire fonctionner les agents est directement intégré à Windows 2000 et Windows XP. Les dll ainsi que le programme agentsvr se trouvent dans le sous répertoire msagent de windows.

Les charactères

Le mécanisme mis à disposition permet de charger des personnages (charcters) conçus indépendamment. Ces personnahes sont sauvegardés dans des fichiers portant l'extension .acs et sont placés (mais cet emplacement n'est pas obligatoire) dans le sous répetoire chars du répertoire msagent.
Si peedy et merlin sont connus de tous, rien n'empêche de créer votre propre personnage (cf sdk) et certaines sociétés telles que "la cantoche" se sont spécialisées dans leur réalisation. On trouve également d'autres personnages sur internet et même un webring qui leur est dédié.

Programmation des agents

Pour nos exemples, nous utiliserons Delphi, mais la programmation des agents est accessible à tout langage supportant les activeX.
A noter également que les fonctionnalités accessibles aux agents vont bien au delà de nos exemples, et qu'ils utilisent directement les mécanismes de Windows pour parler dans la langue de votre choix (sapi.dll = speaking api) selon les synthétiseur vocaux installés dans votre configuration ; de même, ils peuvent reconnaître la parole, toujours selon les extensions installées dans votre configuration.

Première étape : transformation du contrôle activeX en composant Delphi

Depuis l'avenue du DAX (Delphi ActiveX) dans la version 5 de Delphi, cette étape se fait de manière automatique sans que l'on ait à produire la moindre ligne de code.

On utilise le DAX par le menu composant/importer un contrôle activeX

La fenêtre suivante nous propose la liste des ActiveX répertoriés dans notre configuration Windows. On sélectionne Microsoft Agent Control... 

Par la suite, après recompilation du package qui contient notre composant Tagent, il apparaît dans l'onglet ActiveX de la palette de composants (a droite sur l'image ci-dessous), et se place dans une application comme les composants habituels de Delphi.

Deuxième étape : programme minimaliste pour lancer un agent

Pour les habitués de la programmation COM, rien de vraiment nouveau. Reste le fait qu'il est parfois difficile d'obtenir la documentation exhaustive des agents et de manière plus générale la documentation exhaustive de la programmation Windows dès lors qu'on ne parle plus d'API mais d'interfaces d'objets COM... En outre, les exemples fournis sont toujours en C++ et parfois en Visual Basic et la conversion en langage Pascal n'est pas forcément aisée voir un véritable casse tête. Reste le livre "Microsoft Agent Software Development Kit" (ISBN 0-7356-0567-X) qui contient en outre le SDK pour créer ses propres personnages.

La popularité des agents Microsoft permet de trouver une réponse à presque tous les problèmes rencontrés pour les programmer dans les newsgroups.

De manière très générale, il faut charger le character, puis obtenir une interface du personnage. A partir de cet interface, on a accès à un ensemble de méthodes et propriétés qui pilotent l'agent.

Un programme minimaliste permettant d'afficher peedy donnerait :

Après avoir déposer un composant TAgent sur une form, on commence par déclarer une variable de type interface IAgentCtlCharacterEX (violet) qui servira de point d'accès au personnage.

A la création de la form, on charge le personnage (cadre bleu) au moyen de la méthode load qui prend comme premier paramètre, le nom (souligné en vert) que l'on donne au personnage et comme deuxième paramètre, le fichier acs contenant le personnage (souligné en jaune).

Une fois le personnage chargé, on en demande une interface en le retrouvant par son nom : agent.characters.character('toto').

Le nom choisi lors du chargement doit donc être unique étant donné qu'il sert d'identifiant. A noter que l'on peut utiliser plusieurs personnages simultanément, mais qu'un personnage donné ne peut être "instancié" qu'une seule fois. Plusieurs programmes peuvent également utiliser le même personnage en même temps.

Par la suite, l'ensemble des fonctionnalités du personnage sont accessibles depuis l'interface obtenue. Par exemple, pour afficher le personnage, on utilisera la méthode show, hide pour le masquer, moveto pour le déplacer, speak pour le faire parler.
A noter également la méthode play pour lui faire jouer une animation. Chaque personnage possède ses animations propres, et l'on peut obtenir la liste des animations disponibles par programmation.

Le programme minimal pour lancer un agent est disponible ici, tandis qu'un freeware un peu plus évolué pour tester les agents est disponible ici.

Par programmation dans n'importe' quel langage supportant les activeX (delphi, visualBasic, javascript...) les agents peuvent : se déplacer, jouer des animations définies, parler dans les langues installées sur votre configuration, reconnaître la parole.

Troisième étape : créer vos propres personnages au moyen du sdk

Créer vos propres personnages, revient à dessiner l'ensemble des positions possibles prises par le personnage lors de ses déplacements, des animations et de la parole. Le tout est ensuite compilé selon un format prédéfini dans un fichier .acs Le compilateur (ace.exe) est fourni par Microsoft dans le sdkAgent (présent notamment sur le cdrom accompagnant le livre "Microsoft Agent Software Development Kit" (ISBN 0-7356-0567-X). Il n'y a donc aucune obligation d'utiliser un logiciel de 3D pour créer vos personnages (même si celui va vous simplifier la tache pour créer toutes les positions de l'animation), et paintbush peut même suffir. Cette étape requiert donc des talents d'animateur et aucune compétence informatique. Le détail de la création de personnage est abordée dans la deuxième partie de cet article...

Fin de la première partie.

A suivre...