set name="XXX"
Écrit par Philippe YONNET   
25-11-2007

Syntaxe
<set name="XXX">...</set>

Description
La balise <set name="XXX"> sert à définir la valeur d’un prédicat (c’est à dire une variable) de nom "XXX". La valeur est indiquée par le résultat de ce qui se trouve entre la balise ouvrante, et la balise fermante. Entre ces deux balises, on peut avoir une chaine de caractères, ou d’autres balises AIML...

AIML comporte deux sortes de prédicats : les prédicats systeme (déjà définis par défaut) et les prédicats personnalisés. Dans les prédicats systeme, le plus utile est topic.

Remarque : ne pas confondre les prédicats, et les propriétés du robots. Ces dernières ne sont pas des variables, mais des constantes, définies dans l’implémentation, et disponibles dans les programmes AIML. Les prédicats peuvent être créés à la volée, et changés en cours de programme à volonté.

Remarque 2 : il y’a un problème avec la définition des valeurs par défaut des prédicats, qui diffère d’une implémentation à une autre. Pandorabots propose un système spécifique, program_e n’en propose aucun.

Exemple
Un exemple de conversation possible en utilisant set :

Internaute : Bonjour Robot : Bonjour ! C’est quoi ton petit nom ? Internaute : Eric. Robot : Bonjour Eric...


... on laisse passer 30 bonnes lignes de bavardage


Internaute : Je veux que tu danses la samba ! Robot : Eric tu exagères...

Voici un code exemple permettant cela :


<category>
        <pattern>BONJOUR</pattern>
        <template>Bonjour ! C'est quoi ton petit nom ?</template>
</category>


<category>
        <pattern>JE M APPELLE *</pattern>
        <template><srai>MON NOM EST <star /></srai></template>
</category>

<category>
        <pattern>* SAMBA</pattern>
        <template><get name='nom_internaute'/> vraiment ! Tu exagères.</template>
</category>

<category>
        <pattern>JE M'APPELLE *</pattern>
        <template><srai>MON NOM EST <star /></srai></template>
</category>

<category>
        <pattern>MON NOM EST *</pattern>
        <template><set name="nom"><star /></set> ! C'est un nom sympa.
        <think><set name="nom_donne">oui</set></think></template>
</category>

<category>
        <pattern>*</pattern>
        <template>
        <condition>
                <li name="nom_donne" value="oui"><get name="nom" /> ! Tu exagères</li>
                <li>Oooops </li>
        </condition>
        </template>
</category>
Compatibilité
Balise utilisable dans : Modèles de réponse
Conforme AIML 1.0.1 : Oui
Pandorabot : Oui
Référence doc : 7.4.1.