From AI Wiki

Jump to: navigation, search



Chat-bots are possibly the earliest existing virtual bots. Eliza is a famous early example of a computer pretending to be a human through a chat interface. I.e. you communicate with a chat-bot by typing some text in a terminal and it responds by printing some text on the screen.

Since our framework allows you to easily manipulate an avatar in a Blue Mars world, it's obviously a very easy way to give a chat-bot a visual representation. If you have some sort of chat-bot, integrating it takes just a few simple steps. In the 'receiveSay()' function of a behavior you receive what a user typed, whereas calling the 'say()' function will display a response. If the chat-bot is in Java it would literally take only minutes to do. If your chat-bot is not in Java some extra work will be necessary. But since it's not that hard to call from Java into a dynamic library, interfacing with a chat-bot should not be hard even if it's written in another programming language.

Of course this would not do anything for a chat-bot to become more alive. Apart from providing conversation, it will just stand wherever it was spawned. Any actions like moving it around and performing actions (through animations) will still have to be added separately.


Avatar Reality developed a special language for chat-bots called [CHAT-L]. Using CHAT-L a proprietary chat-bot was developed by Bruce Wilcox called Suzette. Suzette is a project separate from the bot-framework and runs on a server within Avatar Reality. The Suzette sample Iam shows how you can access Suzette using the Iam-framework. A stand-alone sand-box version of the CHAT-L engine is also freely available for chat-bot development using CHAT-L. More information about it can be found at the [Chatbot] pages. The Suzette sample project that queries the server for chat-responses can be downloaded Another sample project allows you to create your own CHAT-L based chat-bot and can be found here: [Marvin CHAT-L sandbox] This contains a dynamic library containing the CHAT-L engine and some glue to use this in a behavior for an Iam. Note that this will not contain any of Suzette's many CHAT-L rules, only a few default ones.


AIML stands for Artificial Intelligence Markup Language and was developed by Dr. Richard Wallace specifically to support the development of chat-bots. It has been widely adopted by enthusiasts wishing to build their own chat-bot. There exist several 'AIML' engines and many, many AIML sets. Our Alice sample Iam leverages an open-source AIML engine called 'Program W'. Together with a popular AIML set called 'AAA' it provides a chat-bot character by the name of A.L.I.C.E. You can download a sample project that shows how to interface the Iam-framework with Program W here: [Alice]. There's another AIML based chat-bot called Chomsky that has a lot more patterns than A.L.I.C.E. for which we also have a sample project available for download here: Careful observers will note that the only difference between the Alice project and the Chomsky sample is in the collection of AIML files.

One thing that deserves mentioning is that the underlying Program W is rather strict about the correctness of the AIML files. If you've never put your AIML files through a strict parser chances are your chat-bot will contain some errors that have gone unnoticed until now. And if your chat-bot was built upon some other AIML set then the number of errors can easily run into the hundreds as they have propagated over time.

The original file specifying what constituted correct AIML excluded all HTML tags. Obviously there's limited application for HTML in a Blue Mars type of environment anyway, but we've added some often-used HTML tags to be allowed. But they go largely ignored. In the future, web-links will most likely be supported (and maybe images). JavaScript is not supported and it's hard to see how it could in a meaningful way, so it will be flagged as errors.

Chat Processor

Within the Iam-framework there's a class called ChatProcessor that supports a sub-set of the CHAT-L language. This is meant to be used for situations where you only have a relatively small number of phrases that you want to respond to with a specific action. This in contrast to the thousands or tens of thousands of phrases generally stored in a full-fledged chat-bot. The [Tour Guide] and the [Shop-keeper] contain good examples of how to put this class to good use. More about this in the Natural Language Processing section.

Personal tools