AIML Standard Library

The following are standard library AIML categories (Github repo: aimlstandardlibrary.aiml). These include some math, boolean and string operations, and other basic operations that can be used for more complex AIML programming involving SRAI handling of end-user input. Some of these are base operations used by other operations.

In Syntax column, replace {} with actual values. See Example column for input/output result examples.

OperationSyntaxDescriptionExample
FalseXFALSE {input}Returns FALSE for any input.INPUT: XFALSE true
OUTPUT: FALSE

INPUT: XFALSE hello there
OUTPUT: FALSE
TrueXTRUE {input}Returns TRUE for any input.INPUT: XTRUE false
OUTPUT: TRUE

INPUT: XTRUE hello there
OUTPUT: TRUE
NumberXNUMBER {input} Returns the input if it is a number. Otherwise, it will return your bot's UDC response. Limited to positive numbers only. INPUT: XNUMBER 3
OUTPUT: 3

INPUT: XNUMBER hello there
OUTPUT: I don't have an answer for that.
StringXSTRING {input} Returns the input as a normalized string. INPUT: XSTRING yum@goodeats.com
OUTPUT: yum at goodeats dot com

INPUT: XSTRING Hello there.
OUTPUT: Hello there
True if TrueXISTRUE {input}Returns TRUE if the input string is true. INPUT: XISTRUE true
OUTPUT: TRUE

INPUT: XISTRUE 6
OUTPUT: FALSE
True if FalseXISFALSE {input}Returns TRUE if the input string is false. INPUT: XISFALSE true
OUTPUT: FALSE

INPUT: XISFALSE false
OUTPUT: TRUE
True if NumberXISNUMBER {input}Returns TRUE if the input string is a number, and FALSE if it is not. Limited to positive integers only. INPUT: XISNUMBER 236
OUTPUT: TRUE

INPUT: XISNUMBER telegram
OUTPUT: FALSE
Check Data Type
(Number, String, Boolean)
XTYPEOF {input}Returns datatypes XNUMBER, XSTRING, or XBOOL depending upon the type. Limited to positive integers only.INPUT: XTYPEOF true
OUTPUT: XBOOL

INPUT: XTYPEOF Now is the time
OUTPUT: XSTRING

INPUT: XTYPEOF 34235
OUTPUT: XNUMBER
Addition XADD {number} XS {number}Returns sum of two numbers. Limited to positive integers only.INPUT: XADD 45 XS 132
OUTPUT: 177

INPUT: XADD 1 XS 1
OUTPUT: 2
SubtractionXSUB {number} XS {number}Returns difference of two numbers. Limited to positive integers only. Returns 0 if result would be negative.INPUT: XADD 67 XS 1
OUTPUT: 66

INPUT: XADD 45 XS 132
OUTPUT: 0
MultiplicationXMUL {number} XS {number}Returns product of two numbers. Limited to positive integers only.INPUT: XMUL 3 XS 5
OUTPUT: 15

INPUT: XMUL 0 XS 5
OUTPUT: 0
DivisionXDIV {number} XS {number}Returns the quotient of two numbers. Limited to positive integer values. The decimal value will be truncated (rounded down). Returns infinite if trying to divide by zero.INPUT: XDIV 11 XS 3
OUTPUT: 3

INPUT: XDIV 4 XS 0
OUTPUT: infinite
Modulo operationXMOD {number} XS {number}Returns the remainder after division of one number by another. Limited to positive integer values.INPUT: XMOD 11 XS 3
OUTPUT: 2

INPUT: XMOD 10 xs 5
OUTPUT: 0
Less thanXLT {number} XS {number}Returns TRUE if first number is less than second number. Otherwise, returns FALSE. Limited to positive integer values.INPUT: xlt 88 xs 123
OUTPUT: TRUE

INPUT: XLT 10 XS 3
OUTPUT: FALSE
Greater thanXGT {number} XS {number}Returns TRUE if first number is greater than second number. Otherwise, returns FALSE. Limited to positive integer values.INPUT: xgt 88 xs 88
OUTPUT: FALSE

INPUT: XGT 10 XS 3
OUTPUT: TRUE
Less than or Equal toXLE {number} XS {number}Returns TRUE if first number is less than or equal to second number. Otherwise, returns FALSE. Limited to positive integer values.INPUT: XLE 44 XS 44
OUTPUT: TRUE

INPUT: XLE 5 XS 2
OUTPUT: FALSE
Greater than or Equal toXGE {number} XS {number}Returns TRUE if first number is greater than or equal to second number. Otherwise, returns FALSE. Limited to positive integer values.INPUT: XGE 3 XS 3
OUTPUT: TRUE

INPUT: XGE 23 XS 582
OUTPUT: FALSE
String ConcatenationXADD {string} XS {string}Returns combination of two strings.INPUT: XADD Betty XS Boop
OUTPUT: BettyBoop
String EqualsXEQ {string} XS {string}Returns TRUE if first string is the same as second string. Otherwise, returns FALSE. Capitalization is not considered.INPUT: XEQ john XS John
OUTPUT: TRUE

INPUT: XEQ fish XS fishing
OUTPUT: FALSE
String Not EqualXNE {string} XS {string}Returns TRUE if first string is not the same as second string. Otherwise, returns FALSE. Capitalization is not considered.INPUT: XNE john XS John
OUTPUT: FALSE

INPUT: XNE fish XS fishing
OUTPUT: TRUE
NOT operationXNOT {input}Returns TRUE if input is false, and vice versa. If input is not boolean, returns FALSE.INPUT: XNOT true
OUTPUT: FALSE

INPUT: XNOT false
OUTPUT:TRUE
Count charactersXLENGTH {string}Returns number of characters in the string. Note that space characters are not counted, if there are more than one word in the string.INPUT: XLENGTH hello
OUTPUT: 5

INPUT: XLENGTH hello there
OUTPUT: 10
Random Number XRANDOM Returns a random single digit number, 0-9 inclusive. INPUT: XRANDOM
OUTPUT: 9
Extract substring XSUBSTRING {input} XS {number} Returns a substring from the input starting after the first N characters. INPUT: XSUBSTRING rosemary XS 4
OUTPUT: mary
Maximum Number XMAX {number} {number} ... {number} Returns the maximum value from a list of numbers. Limited to positive integer numbers. INPUT: XMAX 10 3 7 2
OUTPUT: 10

INPUT: XMAX 10 10
OUTPUT: 10
First word XCAR {sentence} Returns the first word of a string. Limited to a single sentence.INPUT: XCAR How are you?
OUTPUT: How
Remaining words after first XCDR {sentence} Returns the remainder of the words after stripping out the first word. Limited to a single sentence. INPUT: XCDR How are you?
OUTPUT: are you
Concatenate strings XIMPLODE {input1} {input2} .. Returns a string with input strings combined. Limited to a single sentence. INPUT: XIMPLODE hello there stranger
OUTPUT: hellotherestranger
Reverse words XREVERSE {string} Returns a string with words in reverse order. INPUT: XREVERSE parkbench picnic
OUTPUT: picnic parkbench

INPUT: XREVERSE one two three
OUTPUT: three two one
NULL XBLACKHOLE {input} Returns nothing back in bot response INPUT: XBLACKHOLE
OUTPUT:
Output string N times XLOOP {string} XS {number} Returns string value concatenated multiple times. Note: does not work if string includes sentence splitting characters. INPUT: XLOOP bot XS 4
OUTPUT: botbotbotbot

INPUT: XLOOP I like you XS 2
OUTPUT: I like youI like you
Word Count XCOUNT {string} Returns number of words in input string. Words are delimited by space and special characters that have been normalized. INPUT: XCOUNT now is the time
OUTPUT: 4

INPUT: XCOUNT My email is cup@me.com
OUTPUT: 8