AIML - Wild Card Метки

Я пишу код AIML ниже.

<aiml>
<category>
<pattern>test</pattern>
<template>This is a test to try the third possible input. Yes / No ? </br> 
</template>
</category>

<category>
<pattern>Yes</pattern>
<that>This is a test to try the third possible *</that>
<template>Hey!. You have typed YES!</template>
</category>

<category>
<pattern>No</pattern>
<that>This is a test to try the third possible *</that>
<template>Hey!. You have typed No!</template>
</category>

<category>
<pattern>*</pattern>
<that>This is a test to try the third possible *</that>
<template>BINGO!!!!</template>
</category>
</aiml>

Я хотел бы видеть "Бинго!!!" как ответ, когда пользователь вводит что-либо кроме Да или Нет.

<pattern>*</pattern>

отлично работает, когда я использую его отдельно, но не здесь. Где я делаю ошибку?

1 ответ

Решение

Некоторые библиотеки AIML требуют pattern значение должно быть в верхнем регистре (это хорошая практика даже для реализаций, которые его не форсируют). Так что для меня следующий код работает как положено (проверено в PyAIML):

<aiml>
    <category>
        <pattern>TEST</pattern>
        <template>This is a test to try the third possible input. Yes / No ? <br /></template>
    </category>

    <category>
        <pattern>YES</pattern>
        <that>THIS IS A TEST TO TRY THE THIRD POSSIBLE *</that>
        <template>Hey!. You have typed YES!</template>
    </category>

    <category>
        <pattern>NO</pattern>
        <that>THIS IS A TEST TO TRY THE THIRD POSSIBLE *</that>
        <template>Hey!. You have typed No!</template>
    </category>

    <category>
        <pattern>*</pattern>
        <that>THIS IS A TEST TO TRY THE THIRD POSSIBLE *</that>
        <template>BINGO!!!!</template>
    </category>
</aiml>

Выход:

> test
This is a test to try the third possible input. Yes / No ?
> yes
Hey!. You have typed YES!
> test
This is a test to try the third possible input. Yes / No ?
> no
Hey!. You have typed No!
> test 
This is a test to try the third possible input. Yes / No ?
> Foo
BINGO!!!!
> 

Вместо <that> теги, которые вы также можете попробовать использовать <topic>Например:

<aiml>
    <category>
        <pattern>TEST</pattern>
        <template>
            This is a test to try the third possible input. Yes / No ? <br />
             <think><set name="topic">THREE OPTIONS</set></think>
        </template>
    </category>

<topic name="THREE OPTIONS">
    <category>
        <pattern>YES</pattern>
        <template>Hey!. You have typed YES!</template>
    </category>

    <category>
        <pattern>NO</pattern>
        <template>Hey!. You have typed No!</template>
    </category>

    <category>
        <pattern>*</pattern>
        <template>BINGO!!!!</template>
    </category>
</topic>
</aiml>
Другие вопросы по тегам