Skip to content

Tutorial Conditions

Keith Sterling edited this page Nov 2, 2017 · 21 revisions

Conditions

Within AIML version 2.0 there exists 3 distinct types of conditions an AIMl developer can use to control/alter the flow and create loops within their grammar template processing.

  • Block Conditions
  • Single Predicate Condition
  • Multi-predicate Condition

Block Condition

	<category>
		<pattern>TYPE1 VARIANT2</pattern>
		<template>
		    <think><set name="var1">value2</set></think>
		    <condition name="var1"><value>value1</value>X</condition>
		    <condition name="var1"><value>value2</value>Y</condition>
		    <condition name="var1"><value>value3</value>Z</condition>
		</template>
	</category>

	<category>
		<pattern>TYPE1 VARIANT3</pattern>
		<template>
		    <think><set name="var1">value2</set></think>
		    <condition value="value1"><name>var1</name>X</condition>
		    <condition value="value2"><name>var1</name>Y</condition>
		    <condition value="value3"><name>var1</name>Z</condition>
		</template>
	</category>

	<category>
		<pattern>TYPE1 VARIANT4</pattern>
		<template>
		    <think><set name="var1">value2</set></think>
		    <condition><name>var1</name><value>value1</value>X</condition>
		    <condition><name>var1</name><value>value2</value>Y</condition>
		    <condition><name>var1</name><value>value3</value>Z</condition>
		</template>
	</category>

	<category>
		<pattern>TYPE1 VARIANT1 NO MATCH</pattern>
		<template>
		    <think><set name="var1">XXX</set></think>
		    <condition name="var1" value="value1">X</condition>
		    <condition name="var1" value="value2">Y</condition>
		    <condition name="var1" value="value3">Z</condition>
		</template>
	</category>
Loading, please wait...
No bot root argument set, defaulting to [.]
Y-Bot version 0.0.1, initiated March 14, 2017
Hi, how can I help you today?
>>>

For more information on this type of condition see Block

Single-predicate Condition

	<category>
		<pattern>TYPE2 VARIANT1 NO DEFAULT</pattern>
		<template>
		    <think><set name="var1">value2</set></think>
		    <condition name="var1">
		        <li value="value1">X</li>
		        <li value="value2">Y</li>
		        <li value="value3">Z</li>
		    </condition>
		</template>
	</category>

	<category>
		<pattern>TYPE2 VARIANT1 WITH DEFAULT</pattern>
		<template>
		    <think><set name="var1">XXX</set></think>
		    <condition name="var1">
		        <li value="value1">X</li>
		        <li value="value2">Y</li>
		        <li value="value3">Z</li>
		        <li>DEF</li>
		    </condition>
		</template>
	</category>

	<category>
		<pattern>TYPE2 VARIANT2 NO DEFAULT</pattern>
		<template>
		    <think><set name="var1">value2</set></think>
		    <condition name="var1">
		        <li> <value>value1</value>X</li>
		        <li> <value>value2</value>Y</li>
		        <li> <value>value3</value>Z</li>
		    </condition>
		</template>
	</category>

	<category>
		<pattern>TYPE2 VARIANT2 NO MATCH</pattern>
		<template>
		    <think><set name="var1">XXX</set></think>
		    <condition name="var1">
		        <li> <value>value1</value>X</li>
		        <li> <value>value2</value>Y</li>
		        <li> <value>value3</value>Z</li>
		    </condition>
		</template>
	</category>
Loading, please wait...
No bot root argument set, defaulting to [.]
Y-Bot version 0.0.1, initiated March 14, 2017
Hi, how can I help you today?
>>>

For more information on this type of condition see Single Predicate

Multi-predicate Condition

	<category>
		<pattern>TYPE3 VARIANT1 NO DEFAULT</pattern>
		<template>
		    <think><set name="var1">value2</set></think>
            <condition>
                <li name='var1' value="value2">A</li>
                <li value="value2"><name>var2</name>B</li>
                <li name="var3"><value>value3</value>C</li>
                <li><name>var4</name><value>value4</value>D</li>
            </condition>
		</template>
	</category>

	<category>
		<pattern>TYPE3 VARIANT1 WITH DEFAULT</pattern>
		<template>
		    <think><set name="var1">XXX</set></think>
            <condition>
                <li name='var1' value="value2">A</li>
                <li value="value2"><name>var2</name>B</li>
                <li name="var3"><value>value3</value>C</li>
                <li><name>var4</name><value>value4</value>D</li>
                <li>DEF</li>
            </condition>
		</template>
	</category>

	<category>
		<pattern>TYPE3 VARIANT1 NO MATCH</pattern>
		<template>
		    <think><set name="var1">XXX</set></think>
            <condition>
                <li name='var1' value="value2">A</li>
                <li value="value2"><name>var2</name>B</li>
                <li name="var3"><value>value3</value>C</li>
                <li><name>var4</name><value>value4</value>D</li>
            </condition>
		</template>
	</category>
Loading, please wait...
No bot root argument set, defaulting to [.]
Y-Bot version 0.0.1, initiated March 14, 2017
Hi, how can I help you today?
>>>

For more information on this type of condition see Multi Predicate

Default value

Looping

<aiml>

	<category>
		<pattern>TYPE2 LOOP</pattern>
		<template>
		    <think><set name="var1">value2</set></think>
		    <condition name="var1">
		        <li value="value1">X</li>
		        <li value="value2">Y <think><set name="var1">value3</set></think><loop /></li>
		        <li value="value3">Z</li>
		    </condition>
		</template>
	</category>

	<category>
		<pattern>TYPE3 LOOP</pattern>
		<template>
		    <think><set name="var2">value2</set></think>
            <condition>
                <li name='var1' value="value1">A</li>
                <li value="value2"><name>var2</name>B<think><set name="var2">value3</set><set name="var4">value4</set></think><loop /></li>
                <li name="var3"><value>value3</value>C</li>
                <li><name>var4</name><value>value4</value>D</li>
            </condition>
		</template>
	</category>

</aiml>

Looping

To see more information on conditional statements, see the wiki page Conditions.


Back to Tutorial | Back - Variables | Next - Date And Time

Clone this wiki locally