Why AIML pattern matching is not working?

2020-04-18 05:03发布

问题:

I'm working on a voice bot, which will get user voice input and executes task based on it. I'm using AIML 1.0. The problem I'm facing is that the pattern matching is not working.

<category>
    <pattern>OPEN SAP</pattern>
    <template>
         <random>
           <li>Sure thing!</li>
           <li>Right away, sir!</li>
           <li>On it!</li>
        </random>
        <system>start saplogon </system>
    </template>
</category>

<category>
    <pattern>* OPEN SAP</pattern>
    <srai> OPEN SAP </srai>
</category>

<category>
    <pattern>* SAP *</pattern>
    <srai> OPEN SAP </srai>
</category>

When I say 'Can you open SAP', it is not recognizing. What is the problem in the above code?

回答1:

I have replicated and identified your issue. You forgot to include <template> tag.

Here is the correct AIML for your case:

<category>
    <pattern>OPEN SAP</pattern>
    <template>
        <random>
            <li>Sure thing!</li>
            <li>Right away, sir!</li>
            <li>On it!</li>
        </random>
        <system>start saplogon </system>
    </template>
</category>

<category>
    <pattern>* OPEN SAP</pattern>
    <template>
        <srai> OPEN SAP </srai>
    </template>
</category>

<category>
    <pattern>* SAP *</pattern>
    <template>
        <srai> OPEN SAP </srai>
    </template>
</category>

It will work as expected now.
Hope it helps.