2017-01-25 10 views
1


Ich frage mich, wie kann ich die AIML erstellen, die dieses Gespräch übereinstimmt:AIML 1.0 - * Muster

User: What's my name? 
Bot: Right now I don't know. Tell me, what's your name? 
User: Gandalf. 
Bot: Hello Gandalf. 

Also habe ich versucht, diese beiden Kategorien zu verwenden.

<category> 
    <pattern>WHAT'S MY NAME?</pattern> 
    <template> 
     <condition name="name_set" value="S"> <get name="name"/></condition> 
     <condition name="name_set" value="">Right now I don't know.Tell me, what's your name?</condition> 
    </template> 
</category> 
<category> 
    <pattern>*</pattern> 
    <that>Right now I don't know.Tell me, what's your name?</that> 
    <template><think><set name="name"><star/></set><set name="name_set">S</set></think>Hello <srai>WHAT'S MY NAME?</srai>.</template> 
</category> 

Aber statt dieses letzte definierten Muster gewählt wird, bekommen mein bietet ständig die Standardantwort zu antworten, in einer anderen Kategorie setted das * Muster verwenden, aber keinen dass Tag. Was mache ich falsch?

Bonus Frage: Wahrscheinlich bemerkt, dass Sie habe, dass ich eine name_set globale Variable bin mit, um zu sehen, ob ich den Namen des Benutzers gespeichert: leer Mittel NO, S bedeutet YES. Ich benutze diese escamotage, weil in Programm-O Bot der AIML-Validator nicht erlaubt hat, das exists Attribut zu verwenden. Wenn jemand mehr weiß, um das Problem zu beheben oder einen Vorschlag zu geben, bitte sei mein Gast.

Vielen Dank.

Antwort

1

Es scheint mir, dass die <that> in der Kategorie falsch ist. Wenn ich richtig liege bezieht sich das auf den letzten Satz der Bot-Ausgabe. Dann würde das wahrscheinlich besser für Sie funktionieren.

<category> 
    <pattern>*</pattern> 
    <that>Tell me *</that> 
    <template> 
     <think> 
     <set name="name"><star/></set> 
     <set name="name_set">S</set> 
     </think> 
     Hello <srai>WHAT'S MY NAME?</srai>. 
    </template> 
</category> 
+0

[Gelöst] Ich löste mit Ihrem Trick, aber in einer anderen Weise. Die entspricht * Sagen Sie mir * Vielen Dank. – enriquo