[alicebot-developer] Subconscious Alice

Steve Prior alicebot-developer@list.alicebot.org
Wed, 25 May 2005 23:51:30 -0400


Dave Sienkiewicz wrote:
...
> I can code a pattern of RAISE ARM with a template composed of the 
> utterance “OK” plus a system call to the OOPIC of a code that commands 
> the actuator to be raised.
> 
> I can then program the OOPIC controller to return a string of characters 
> when the arm is raised. The string could essentially be a status word, 
> e.g. “ARMISRAISED” which the user does not see, but could for example 
> trigger a template with the utterance, “Uh, my arm is raised as high as 
> it can go.” It kind of works like “think” but the data is being 
> externally input from an unseen source instead of directly from the user.
...
> 
> Imaging conversing with ALICE, and having her suddenly say, “there’s 
> someone coming to the front door”, just before the door bell rings. 
> Being able to accept hidden status information in the form of simple 
> ASCII strings, I think, opens up an entire new level of realism.
> 
> Dave Sienkiewicz
> 

Given that my personal project is home automation, I have done some things
similar to what you're talking about, but I took a different approach.
I have a simple natural language interpreter I wrote in Prolog which handles
the "action" type inputs like "Please turn on the outside lights." which
calls some Prolog libs I wrote which make CORBA calls to an X10 server which
turns on the lights.  Then the Prolog side returns a string like "The lights
are now on" which is passed back to the chat window the user typed in.  In
the event that the sentence is not parsable by my Prolog engine, the input
string is passed through the http interface to an Alicebot which provides the
answer to the chat interface.  The user doesn't know that two different
systems cooperated to provide a seamless user interface (in fact the programs
are on different computers), but the effect is pretty impressive.
Since the chat interface I provide for the user is actually also a CORBA service
I can send it asynchronous messages like your "someone is coming to the front 
door." without any problems.

The thing I'm missing at the moment is for the two systems to share "context"
information so that if the Alicebot learned something in the conversation, the
Prolog side doesn't have access to it.  Since both systems can access MySQL 
tables there is a possibility I can use this, but first I'd have to rip out
the caching that Alicebot does for those tables - haven't gotten around to that
yet.  The other thing I don't handle well yet is multiple userid support
between the two pieces like Alicebot does through its web interface.

Steve