Selbst Bot-Libre-JavaScript-Dialekt, wurde erweitern zur Unterstützung der Verarbeitung natürlicher Sprache. Sie können das Programm bot über das Self-scripting-Sprache von deinem bot-Skript-Seite. Sie können auch Selbst aus response-Vorlagen, denkt und Bedingungen, und aus der AIML "selbst" - tag.
Die Self-scripting-Sprache ist eine state machine basierten Skriptsprache chat-bots, die es auch ermöglicht mit bots verändern und Programmieren Ihre eigenen Skripte.
Class | Description |
---|---|
Object | Selbst definiert mehrere Objekt-Methode zur Verfügung, um alle Objekte. |
String | String-Verarbeitung Methoden. |
Array | Array-Verarbeitung Methoden. |
Language | Natural language processing Methoden. |
Date | Datum und Zeit der Verarbeitung Methoden. |
Utils | Allgemeine utility-Methoden. |
Math | Mathematische Operationen.td> |
Http | HTTP, HTML, XML, JSON und web-service-Methoden der Verarbeitung. |
JSON | JSON-Verarbeitung Methoden. |
Facebook Methoden. | |
FacebookMessaging | Facebook messaging-Methoden. |
Twitter-messaging-Methoden. | |
Telegram | Telegramm-messaging-Methoden. |
E-Mail Methoden. | |
Twilio | Twilio SMS & Methoden. |
Vision | Bild und vision-messaging-Methoden. |
Context | Kontext, auf Methoden zugreifen. |
Avatar | Avatar, Emotionen, Posen, Aktion und Befehl Zugriff auf Methoden. |
Mood | Stimmung und emotion, Methoden. |
Operators | Description | Example |
---|---|---|
if | If statement. | if (value == null) { ... } else { ... } |
for | For statement. | for (word in sentence.word) { ... } |
while | While statement. | while (count < 10) { ... } |
do | Do statement. | do { ... } |
think | The same as do but can be used inside a Template to perform some code but not print a value into the response. | think { ... } |
return | Return the value. | if (word == "hello") { return "hello there"; } |
== | Compare if two values match. | apple == apple |
!= | Compare if two values don't match. | apple != orange |
< | Compare if a value is less than another. | if (time < 10) { greeting = "Good Morning!"; } |
<= | Compare if a value is less or equal than another. | if (time <= 12) { greeting = "Have a Nice Day!"; } |
> | Compare if a value is greater than another. | if (time > 12) { greeting = "Good Afternoon!"; } |
>= | Compare if a value is greater or equal than another. | if (time >= 5) { greeting = "Nice Day!"; } |
! | negates a logical value | negative = !negative; |
&& | Logical AND. | if (x < 5 && y > 2) { ... } |
|| | Logical OR. | if (x < 5 || y > 1) { ... } |
= | Variable assignment. | name = "Alice"; |
++ | Increment a variable. | var step; for (step = 0; step < 5; step++) { ... } |
-- | Decrement a variable. | var step; for (step = 10; step < 5; step--) { ... } |
+ | Add two numbers or concatenate two strings. | txt1 = "John"; txt2 = "Smith"; txt3 = txt1 + " " + txt2; |
- | Subtract two numbers. | var x = 5; var y = 2; var z = x - y; |
* | Multiply two numbers. | var x = 5; var y = 2; var z = x * y; |
/ | Divide two numbers. | var x = 10; var y = 2; var z = x / y; |
new | Construct a new object. | response = new Sentence(); |
Symbol | Create a new global symbol. | Language.define(word, Symbol(word)); |
. | Get a relationship from an object. | age = speaker.age; |
= | Set a relationship on an object. | response.word[0] = "Hello"; |
=+ | Add a relationship on an object. | sentence.response =+ response; |
=- | Remove a relationship on from object. | sentence.response =- response; |
random | Select and execute random value. | random("Hello", "Hi", "Hey", "G'day mate"); |
redirect | Evaluate the response to the phrase. | redirect("what is " + star); |
srai | Synonym for redirect (AIML syntax). | srai("hello"); |
request | Evaluate the response to the phrase using a remote service. | request(song, { service : #wikidata, hint : "performer")); |
sraix | Synonym for request (AIML syntax). | sraix(song, { service : #wikidata, hint : "performer")); |
learn | Learn a new response. | learn( {pattern:"hello", template:"how are you" } ); |
eval | Evaluate code within a learned pattern or template. | learn( {pattern:Pattern("what is {eval (star[0])}"), template:Template("{eval (star[1])}") } ); |
debug | Print the arguments to the log. | debug(star); debug (#error, error) |
Object Methods | Description | Example |
---|---|---|
add(key, value) | Add a relationship value to the object. | speaker.add(#name, "Bob") |
all(key) | Returns an array of all of the object's relationship values for the type. | speaker.all(#name) |
addWithMeta(key, vale, metaType, meta) | Add a relationship value to the object with the relationship meta data. | |
append(key, value) | Append the value to the end of the object's relationship. | response.append(#word, ".") |
appendWithMeta(key, vale, metaType, meta) | add a relationship value to the object with the relationship meta data | |
copy() | Return a shallow copy of the object. | object.copy() |
dataType() | Return the primitive data-type of the object or null. | object.dataType() == #String |
delete() | Delete the object, (use this with caution). | object.delete() |
delete(key, value) | Delete the relationship. | object.delete(#type, value) |
deleteAll() | Delete all relationships. | object.deleteAll(), |
deleteAll(key) | Delete all the relationships of the type. | object.deleteAll(#type), |
findReference() | Inverse references lookup. Returns first reference. | |
findReferenceBy(key) | Inverse relationship lookup. Returns first reference. | |
findReferences() | Inverse references lookup. Returns array of objects. | |
findReferencesBy(key) | Inverse relationship lookup. Returns array of objects. | |
get(key) get(key, index) | Get a relationship value from an object, optional index. | speaker.get(#name), sentence.get(#word, 3) |
getAccessCount() | Return the object's access count. | object.getAccessCount() > 100 |
getAccessDate() | Return the object's access date. | object.getAccessDate() |
getAccessDate(key, value) | Return the relationship's access date. | object.getAccessDate(#type, value) |
getConsciousnessLevel() | Return the object's consciousness level. | object.getAccessDate() |
getConsciousnessLevel(key, value) | Return the relationship's consciousness level. | object.getAccessDate(#type, value) |
getCorrectness(key, value) | Return the relationship's correctness. | object.getCorrectness(#type, value) |
getCreationDate() | Return the object's creation date. | object.getCreationDate() |
getCreationDate(key, value) | Return the relationship's creation date. | object.getCreationDate(#type, value) |
getGroupId() | Return the object's group id. | object.getGroupId() |
getId() | Return the object's unique id. | object.getId() |
getId(key, value) | Return the relationship's unique id. | object.getId(#type, value) |
getIndex(key value) | Return the relationship's index. | list.getIndex(#element, value) |
getKey(value) | Return the related objects relationship key. | object.getKey(value) |
getLast(key) getLast(key, start) | Get a relationship value from the end of an ordered relationship. | conversation.getLast(#input, 1) |
getName() | Return the object's primitive name. | object.getName() |
getWithAssociate(key, associate, associateType) | Get a relationship value from an object most associate to the other value. | |
has(key, value) | Return if the relationship exists. | speaker.has(#name, "Bob") |
hasAny(key) | Return if the object has any relationship of the type. | object.hasAny(#type) |
hasData() | Return if the object has primitive data (String, Number, Date, etc.). | object.hasData() |
hasMeta(key, value) | Return if the relationship has a meta value. | object.hasMeta(#type, value) |
isArray() | Return if the object is an array. | object.isArray() |
isPinned() | Return if the object is pinned. | object.isPinned() |
isPinned(key, value) | Return if the relationship is pinned. | object.hasMeta(#type, value) |
isSymbol() | Return if the object is a primitive symbol. | object.isPrimitive() |
keys() | Return an array of the object relationship keys. | for (key in object.keys()) { .. } |
meta(key, value) | Return the relationship's meta value. | object.meta(#type, value) |
pin() | Pin the object. | object.pin() |
pin(key, value) | Pin the relationship. | object.pin(#type, value) |
random(key) | Return a random element of the relationship type. | object.random(#type) |
remove(key, value) | Remove the relationship value (this creates an inverse relationship). | speaker.remove(#name, "Bob") |
removeWithMeta(key, value, metaType, meta) | Remove the relationship value with the relationship meta data. | |
set(key, value) set(key, value, index) | Sets a relationship value on an object. | speaker.set(#age, 44) |
setCorrectness(key, value, value) | Sets a relationship value on an object. | speaker.setCorrectness(#gender, #male, 0.5) |
size(key) | Returns the number of relationships of the type. | object.size(#type) |
toJSON() | Convert the object to a JSON string. | object.toJSON() |
toXML() | Convert the object to an XML string. | object.toXML() |
toString() | Convert the object to string. | object.toString() |
unpin() | Unpin the object. | object.unpin() |
unpin(key, value) | Unpin the relationship. | object.unpin(#type, value) |
weakAdd(key, value) | Add a relationship value to the object with a low correctness. | |
weakAddWithMeta(key, value, metaType, meta) | Add a relationship value to the object with a low correctness with the relationship meta data. |
String Methods | Description | Example |
---|---|---|
charAt(index) | Return the string's character at the index. | "hello".charAt(0) == "h" |
concat(text) | Concatenate the two strings. | "hello".concat(" world!") == "hello world!" |
endsWith(text) | Return if the string ends with the text. | "hello world".endsWith("world") == true |
exec(text) | Convert the string to a regex pattern and evaluates if it matches the text and return the text match. | "/\d+".exec("123") == "123" |
indexOf(text) | Return the index of the substring or -1 if missing. | "hello world".indexOf("hello") == 0 |
lastIndexOf(text) | Return the last index of the substring or -1 if missing. | "hello world hello".indexOf("hello") == 12 |
length() | Return the string's length. | "hello".length() == 5 |
match(text) | Convert the string to a regex pattern and return an array of all matching values. | "/\d+".match("123 plus 456") == ["123" "456"] |
replace(token, text) | Replace all occurances of the token string with the text. | "hello world".replace("hello", "goodbye") == "goodbye world" |
setCharAt(index, char) | Return a string with the string's character at the index. | "hello".setCharAt(0, "H") == "Hello" |
size() | Return the string's length. | "hello".size() == 5 |
startsWith(text) | Return if the string starts with the text. | "hello world".startsWith("hello") == true |
substr(start, end) | Return the string substring. | "hello world".substr(0, 4) == "hell" |
substring(start, end) | Return the string substring. | "hello world".substring(0, 4) == "hell" |
test(text) | Convert the string to a regex pattern and return if it matches the text. | "/\d+".test("123") == true |
toLowerCase() | Return the string as lower case. | "HELLO".toLowerCase() == "hello" |
toUpperCase() | Return the string as upper case. | "hello".toUpperCase() == "HELLO" |
toNumber | Convert the string to a number. | "123.4".toNumber() |
toSymbol | Convert the string to a primitive symbol. | "topic".toSymbol() |
trim() | Trim leading and trailing whitespace. | "     Hello World!     ".trim() == "Hello World!" |
Array Methods | Description | Example |
---|---|---|
add(value) | Add the value to the end of the array's elements. | array.add("hello") |
delete(value) | Delete the value from the array's elements. | array.delete("hello") |
has(value) | Return if the array contains the element. | array.has("hello") |
indexOf(value) | Return the index of the element in the array. | array.indexOf("hello") |
indexOf(value, start) | Return the index of the element in the array starting at the index. | array.indexOf("hello", 4) |
lastIndexOf(value, start) | Return the index of the element in the array starting at the end. | array.lastIndexOf("hello") |
length() | Return the arrays length. | [1, 2, 3].length() == 3 |
random() | Return a random element of the array. | array.random() |
size() | Return the arrays length. | [1, 2, 3].length() == 3 |
Language Methods | Description | Example |
---|---|---|
word(text*) | Creates a compound word. | Language.word("ball", "hockey") |
sentence(text*) | Creates a sentence. | Language.sentence("How", "are", "you") |
define(text, object) | Defines the word as meaning the value. | Language.define("foobar", #foobar) |
Date Methods | Description | Example |
---|---|---|
date() | Current Date object. | var today = Date.date(); |
date(text) | Convert the text or Timestamp to a Date. | var xmas = Date.date("2017-12-25"); |
time() | Current Time object. | var time = Date.time(); |
time(text) | Convert the text or Timestamp to a Time. | var noon = Date.time("12:00:00"); |
timestamp() | Current Timestamp object. | var now = Date.timestamp(); |
timestamp(text) | Convert the text or Date to a Timestamp. | var timestamp = Date.timestamp("2017-10-02 16:52:30"); |
any(text) | Parse any date/time format. | var name = Date.parse("Sept 3, 2014") |
add(date, part, time) | Add the date value (#day, #month, #year, #hour, #minute, #second, #millisecond). | var tomorrow = Date.add(Date.date(), #day, 1); |
get(date, part) | Return the date part (#day, #month, #year, #hour, #minute, #second, #millisecond). | var day = Date.get(Date.date(), #day); |
set(date, part, value) | Set the date part (#day, #month, #year, #hour, #minute, #second, #millisecond). | var day = Date.set(Date.date(), #day, 11); |
difference(from, to, part) | Compute the date/time difference from date part (#day, #month, #year, #hour, #minute, #second, #millisecond). | var days = Date.difference(Date.date(), Date.date("2017-12-25"), #day); |
interval(part, from, to) | Compute the date/time interval from date/time formatted strings ("days", "months", "years", "hours", "minutes", "seconds", "milliseconds"). | var days = Date.interval("days", "2017-11-20", "2017-12-25") |
interval(part, from, to, format) | Compute the date/time interval from date/time Java SimpleDateFormat formatted strings ("days", "months", "years", "hours", "minutes", "seconds", "milliseconds"). | var days = Date.interval("days", "2017-11-20", "2017-12-25", "yyyy-MM-dd") |
getTimeZone() | Return the default time zone. | var gmt = Date.getTimeZone(); |
getTimeZone(zone) | Return the timezone object based on its timezone code i.e. "GMT", "GMT-5", "PST", "America/Los_Angeles". | var gmt = Date.getTimeZone("GMT"); |
setTimeZone(date, timezone) | Set the dates time zone based on its timezone code i.e. "GMT", "GMT-5", "PST", "America/Los_Angeles". | var est = Date.setTimeZone(Date.date(), "EST"); |
printAIMLDate(date, format) | Print the date using the AIML format. | |
printDate(date, format) | Print the date using Java SimpleDateFormat format. | var dateString = Date.printDate(Date.date(), "yyyy-MM-dd") |
Util Methods | Description | Example |
---|---|---|
encode(text) | Converts to URL encoded character. | Http.requestXML("http://api.com/fetch?name=" + Utils.encode(name)) |
denormalize(text) | Converts punctuation words back to characters. | Utils.denormalize("That is cool colon ) at dash at") == "That is cool :) @-@" |
normalize(text) | Converts punctuation characters to the word values. | Utils.normalize("That is cool :) @-@") == "That is cool colon ) at dash at" |
explode(text) | Expands a string to its character values. | Utils.explode("hello") == "h e l l o" |
extract(text, pattern) | Convert the pattern to a regex pattern and extracts the matching string from the text. | Utils.extract("the cost is $123", "\d+") == "123" |
extractValue(text, pattern) | Convert the pattern to a regex pattern and extracts the matching string from the text. | Utils.extractValue("tell me what is life", "what.is.(.*)") == "life" |
matches(text, pattern) | Convert the pattern to a regex pattern and returns if the text matches. | Utils.matches("123", "/\d+") == true |
gender(text) | Converts between 'he' and 'she'. | Utils.gender("he likes her") == "she likes him" |
person(text) | Converts between 1st and 2nd person. | Utils.person("I love myself") == "you love yourself" |
person2(text) | Converts between 1st and 3rd person. | Utils.person2("I love myself") == "he love himself" |
capitalize(text) | Converts the first character to upper case. | Utils.capitalize("hello there") == "Hello there" |
sentence(text) | Converts the first character to upper case. | Utils.sentence("hello there") == "Hello there" |
formal(text) | Converts the first character to upper case for each word. | Utils.formal("hello there") == "Hello There" |
lowercase(text) | Converts to lower case. | Utils.lowercase("HELLO There") == "hello there" |
uppercase(text) | Converts to upper case. | Utils.uppercase("hello there") == "HELLO THERE" |
program() | Returns the current software name and version. | |
size() | Returns to total knowledge base size (total objects). | |
version() | Returns the current software version. | |
id() | Returns the bot's internal id. |
Math Methods | Description | Example |
---|---|---|
add(x, y) | Sum of x and y values. | Math.add(2, 3); 5 |
subtract(x, y) | Subtract y from x value. | Math.subtract(8, 5); 3 |
multiply(x, y) | Multiply x and y values. | Math.multiply(2, 4); 8 |
divide(x, y) | Divide x and y values. | Math.divide(18, 9); 2 |
abs(x) | Returns the absolute value of x. | Math.abs(-7.7); 7.7 |
floor(x) | Returns the value of x rounded down to its nearest integer. | Math.floor(3.8); 3 |
ceil(x) | Returns the value of x rounded up to its nearest integer. | Math.ceil(2.2); 3 |
power(x, y) | Returns the value of x to the power of y. | Math.power(7, 2); 49 |
round(x) | Returns the value of x rounded to its nearest integer. | Math.round(4.3); 4 |
log(x) | Math.log(8); 3 | |
ln(x) | ||
sin(x) | Returns the sine of x (x is in radians). | Math.cos(0); 1 |
asin(x) | ||
cos(x) | Returns the cosine of x (x is in radians). | |
acos(x) | ||
tan(x) | Returns the tangent of an angle. | |
tanh(x) |
Http | Description | Example |
---|---|---|
toJSON(object) | Convert an object to JSON text. | |
toXML(object) | Convert an object to XML text. | |
encode(text) | URL encode the text. | |
requestJSON(url) | Fetch the JSON response. | |
requestJSON(attribute, url) | Fetch the JSON response. | |
requestJSON(attribute, url, headers) | Fetch the JSON response. Pass custom headers as JSON object. | |
requestJSONAuth(attribute, url, user, password) | Call authenticated API and fetch the JSON response. | |
requestXML(url) | Fetch the XML response. | |
requestXML(url, xpath) | Fetch the XML response. | |
requestXML(url, xpath, headers) | Fetch the XML response. Pass custom headers as JSON object. | |
requestXMLAuth(url, user, password, xpath) | Call authenticated API and fetch the XML response. | |
requestHTML(url, xpath) | Scrape the HTML page. | |
requestHTML(url, xpath, format) | Scrape the HTML page, return #text, #array, #html, or #object. | |
requestHTML(url, xpath, format, subformat) | Scrape the HTML page, return #array of #text, #html, or #object. | |
requestCSV(url) | Parse the CSV file. | |
requestText(url) | Return the raw text data. | |
requestText(url, headers) | Return the raw text data. Pass custom headers as JSON object. | |
rss(url) | Fetch the last RSS feed. | |
rssFeed(url) | Fetch the entire RSS feed. | |
postJSON(url, object) | Post the JSON object to the URL. | |
postJSONAuth(url, user, password, object) | Post the JSON object to the URL. | |
postXML(url, object) | POST the XML object to the URL. | |
postXML(url, object, xpath) | POST the XML object to the URL. Extract the XPath data. | |
postXMLAuth(url, user, password, object, xpath) | Post the XML object to the URL. Extract the XPath data. | |
postHTML(url, params, xpath) | Post the HTML form parameters to the URL. Extract the XPath data. | |
putJSON(object) | PUT the JSON object to the URL. | |
delete(url) | Send an HTTP DELETE to the URL. |
JSON | Description | Example |
---|---|---|
parse(text) | Parse an object from JSON text. | |
stringify(object) | Convert an object to JSON text. |
Description | Example | |
---|---|---|
post(message) | Post to the bot's Facebook page. | |
postComment(comment, postid) | Post to the bot's Facebook page. | |
sendMessage(message, userid) | Send a message to a user. |
FacebookMessaging | Description | Example |
---|---|---|
sendMessage(message, userid) | Send a message to a user. | |
sendMessage(message, userid, command) | Send a message to a user with a custom Facebook quick_reply or attachment command. |
Description | Example | |
---|---|---|
tweet(message) | Tweet to the bot's Twitter account. | |
sendMessage(message, userid) | Send a direct message to a user. |
Telegram | Description | Example |
---|---|---|
post(message) | Post to the bot's Telegram channel. | |
sendMessage(message, userid) | Send a message to a user. | |
sendMessage(message, userid, command) | Send a message to a user with a Telegram custom keyboard reply_markup command. | |
postJSON(url, json) | Call a Telegram bot API with the JSON parameter. |
Description | Example | |
---|---|---|
email(address, subject, message) | Send an email from the bot's email account. | Email.email("[email protected]", "Welcome", "Thanks for registering.") |
Twilio | Description | Example |
---|---|---|
sms(number, message) | Send a SMS messages from the bot's Twilio account. | Twilio.sms("613-123-4567", "Escalation alert") |
Vision | Description | Example |
---|---|---|
loadImage(url) | Load the image into the bot's memory. | |
matchImage(url, tag, error) | Search for the closest matching image for the tag. |
Context | Description | Example |
---|---|---|
push(object) | Push the object to the current context stack. | |
top() | Return the top of the context stack. | |
top(index) | Return the nth top of the context stack. | |
search(match) | Search the context stack for a matching object. |
Avatar | Description | Example |
---|---|---|
setAction(action) | Set the avatar's action. | |
setPose(pose) | Set the avatar's pose. | |
setCommand(command) | Set a JSON command object. |
Mood | Description | Example |
---|---|---|
setEmotion(emotion, value) | Set the value of the emotion (between -1.0 and +1.0). | Mood.setEmotion(#Happiness, 1.0) |
State Operation | Description | Example |
---|---|---|
state | A state defines the current input processing. | pattern "my name is *" template Template("Pleased to meet you {star}"); |
case | A case can transition to another state if the case variable matches the current input. | case "lol" template "Very funny." |
pattern | A pattern can match an input and evaluate a template response. | pattern "hello" template "Hi there"; |
answer | An answer of a state is evaluated if the input processing is complete. | answer Template("Pleased to meet you {star}"); |
function | An function can be called from an answer or another function. | function todayResponse() { var response = new (#sentence); response.append(#word, "Hello World!"); return response; } |
var | A variable can be matched with the current input, or store context. | var name { instantiation : #name; } |
Operator | Description |
---|---|
* | Matches one or more words. |
_ | Matches one or more words, takes priority over all other words and wildcards, except $. |
^ | Matches zero or more words. |
# | Matches zero or more words, takes priority over all other words and wildcards, except $. |
$ | Pattern priority marker to make a pattern word match highest priority. |
() | Optional set of words. |
[] | Required set of words. |
<set> | Set tag to evaluate a pattern based on words defined in a predefined set. |
/ | Regular expression pattern. |
{} | Self code. |