|
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...
|