Aiml 1.0 - *模式

时间:2017-01-25 09:18:59

标签: xml bots chatbot aiml


我想知道如何创建与此对话匹配的AIML:

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

所以我尝试使用这两个类别。

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

但是我的机器人不是选择最后定义的模式,而是不断回答默认答案,使用*模式设置在另一个类别中但没有那个标签。我做错了什么?

奖金问题:您可能已经注意到我使用了name_set全局变量来查看我是否存储了用户名:表示否, S 表示是。我使用此 escamotage ,因为在Program-O bot中,AIML验证器不允许我使用 exists 属性。如果有人知道更多问题来解决问题或有任何建议,请成为我的客人。

谢谢。

1 个答案:

答案 0 :(得分:1)

在我看来,该类别中的<that>不正确。如果我是正确的,那就是指机器人输出的最后一句话。那么这对你来说可能会更好。

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