## org.opencyc.chat
Class ChatterBot

    java.lang.Object
      |
      +--org.opencyc.chat.ChatterBot

public class ChatterBot
extends java.lang.Object

Provides a chat conversation interface to Cyc.

The chat conversation is in the form of a text conversation using asynchronous receiving and sending of messages. This class intializes the Cyc server connection, and initializes the chat interpreter, for each chat partner, then delegates the conversation understanding and responses to the chat partner's chat interpreter.

Author:
  Stephen L. Reed

  Copyright 2001 Cycorp, Inc., license is open source GNU LGPL.

  the license

  www.opencyc.org

  OpenCyc at SourceForge

  THIS SOFTWARE AND KNOWLEDGE BASE CONTENT ARE PROVIDED ``AS IS'' AND ANY EXPRESSED OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE OPENCYC ORGANIZATION OR ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE AND KNOWLEDGE BASE CONTENT, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.

Field Summary
`protected java.util.HashMap` `chatInterpreters` Dictionary of chat interpreters, chatUserUniqueId --> ChatInterpreter
`protected ChatSender` `chatSender` Sends messages to the chat system.
`protected java.util.HashMap` `chatUserModels` Dictionary of chat user models, chatUserUniqueId --> ChatUserModel
`protected CycAccess` `cycAccess` Provides wrappers for the Cyc API and manages the connection to the Cyc server.

Constructor Summary
`ChatterBot(ChatSender chatSender)` Creates a new ChatterBot object, given a ChatSender.

Method Summary
`void` `finalize()` Closes this ChatterBot, in particular the connection to the Cyc server.
`ChatUserModel` `getChatUserModel(java.lang.String chatUserUniqueId)` Returns the chat user model for the given chat partner.
`void` `initialize()` Initializes this ChatterBot, in particular the connection to the Cyc server.
`protected ChatInterpreter` `makeCharInterpreter(java.lang.String chatUserNickname, java.lang.String chatUserUniqueId)` Makes a new chat interpreter object for a new chat partner, and stores it in the dictionary for later lookup.
`void` `receiveChatMessage(java.lang.String chatUserNickname, java.lang.String chatUserUniqueId, java.lang.String chatMessage)` Receives the given chat message from the given chat partner.
`void` `sendChatMessage(java.lang.String chatMessage)` Sends the given chat message into the chat system.

Methods inherited from class java.lang.Object
`clone, equals, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait`

Field Detail

### chatSender

    protected ChatSender chatSender

  Sends messages to the chat system.

### chatUserModels

    protected java.util.HashMap chatUserModels

  Dictionary of chat user models, chatUserUniqueId --> ChatUserModel

### chatInterpreters

    protected java.util.HashMap chatInterpreters

  Dictionary of chat interpreters, chatUserUniqueId --> ChatInterpreter

### cycAccess

    protected CycAccess cycAccess

  Provides wrappers for the Cyc API and manages the connection to the Cyc server.

Constructor Detail

### ChatterBot

    public ChatterBot(ChatSender chatSender)

  Creates a new ChatterBot object, given a ChatSender.
  Parameters:
    `chatSender` - the object which connects the ChatterBot to the chat system.

Method Detail

### initialize

    public void initialize()
                    throws CycApiException,
                           java.net.UnknownHostException,
                           java.io.IOException,
                           ChatException

  Initializes this ChatterBot, in particular the connection to the Cyc server.

### makeCharInterpreter

    protected ChatInterpreter makeCharInterpreter(java.lang.String chatUserNickname,
                                                  java.lang.String chatUserUniqueId)

  Makes a new chat interpreter object for a new chat partner, and stores it in the dictionary for later lookup.
  Parameters:
    `chatUserNickname` - the preferred name (possibly not unique) of the chat partner
    `chatUserUniqueId` - the unique id assigned to the user by the chat system
  Returns:
    the new chat interpreter

### finalize

    public void finalize()

  Closes this ChatterBot, in particular the connection to the Cyc server.
  Overrides:
    `finalize` in class `java.lang.Object`

### receiveChatMessage

    public void receiveChatMessage(java.lang.String chatUserNickname,
                                   java.lang.String chatUserUniqueId,
                                   java.lang.String chatMessage)
                            throws CycApiException,
                                   java.io.IOException,
                                   java.net.UnknownHostException,
                                   ChatException

  Receives the given chat message from the given chat partner. Delegates the message understanding and response to the chat interpreter.
  Parameters:
    `chatUserNickname` - the preferred name (possibly not unique) of the chat partner
    `chatUserUniqueId` - the unique id assigned to the user by the chat system
    `chatMessage` - the chat message

### sendChatMessage

    public void sendChatMessage(java.lang.String chatMessage)
                         throws ChatException

  Sends the given chat message into the chat system.
  Parameters:
    `chatMessage` - the chat message

### getChatUserModel

    public ChatUserModel getChatUserModel(java.lang.String chatUserUniqueId)

  Returns the chat user model for the given chat partner. If not cached, retrieves the stored user model from the KB, or creates a new one if the chat partner is new.
  Parameters:
    `chatUserUniqueId` - the unique id assigned to the user by the chat system
  Returns:
    the chat user model