To start, the robot listens on
                  a TCP/IP port (see sample server code), awaiting a connection
                  from Brainhat. At some point, Brainhat will make a connection
                  and (perhaps) delegate commands to the robot. When a command
                  comes into the robot, it will look something like this:
                   
                  
                    - 
                      start
tag=00004839
command=put
object=ball
color=red
target=bin
orientation=in
end
 
This could be the equivalent
                  of a robot command: "put the red ball in the bin."
                  
The tag value is a
                  unique identifier that the robot and Brainhat share to track
                  the state of a delegated command. We will see how it used,
                  below.
                  
The command is a
                  primitive action that the robot will understand. Examples
                  might be get, put or position. The
                  vocabulary of verbs that the robot might use is virtually
                  unlimited, and you may extend it as you like. External action
                  verbs for robot (and other) commands are identified in the
                  data files as children of a special concept called extaction,
                  as in:
                   
                  
                    - 
                      define	toget-1
	child		action
	label		to get
	child		extaction
 
Extaction
                  verbs are organized the same as others, with an infinitive
                  form and subordinate forms connected as children. They may be
                  used for non-robot commands, just as any other verb.
                  
Object
                  is the object the robot is manipulating.
                  
Target,
                  when present, will be the object of the preposition for
                  commands that specify a source or destination for an action.
                  Likewise, orientation will be the preposition for those
                  commands that specify a source or destination.
                  
The sample above shows
                  "color=red" as one of the elements of the command to
                  the robot. "Color" is not a primitive for robot
                  commands. Rather, "color" just happens to be
                  non-prepositional attribute associated with the object in the
                  example (the ball). Any other attribute might have been
                  included as well. If the ball was big, for example, a
                  attribute/value pair like "size=big" might have been
                  part of the command. Accordingly, the number and variety of
                  attribute/value pairs is unlimited.
                  
How you dispatch commands
                  within the robot depends the robot or service you have
                  created. When the command is completed, the robot should
                  inform Brainhat so that Brainhat can direct the robot to the
                  next task and/or tell the speaker that the command is
                  finished. Here's what you need to do: If the command completes
                  successfully, the robot may simply send Brainhat an
                  acknowledgement. The syntax for the successful completion is:
                   
                  
                    - 
                      #####:Y
 
where "#####"
                  represents the tag number taken from the command as delegated
                  to the robot by Brainhat. The "Y" stands for
                  "yes" (meaning completion was successful). To finish
                  our example above, for instance, the robot would send Brainhat
                  the message:
                   
                  
                    - 
                      4839:Y
 
Upon receipt of the message,
                  Brainhat would tell the speaker "the robot did put the
                  ball in the bin." You may also change the "Y"
                  to an "N" to signify failure:
                   
                  
                    - 
                      4839:N
 
Brainhat will inform the
                  speaker "the robot did not put the ball in the bin"
                  and perform any follow-on action associated with the failure.
                  You may tack on a reason as well, if you like:
                   
                  
                    - 
                      4839:N:the ball is lost
 
Brainhat will report
                  "the robot did not put the ball in the bin because the
                  ball is lost."
                  
Messages from the robot do
                  not have to be associated with commands. At any time you can
                  send Brainhat a message without a tag, such as
                   
                  
                    - 
                      the water is cold
 
Brainhat will voice the
                  message and incorporate it into the conversation just as if it
                  had come from the user.
                  
Note that the messages to
                  Brainhat can come asynchronously, while Brainhat is busy doing
                  other things; no sequencing is necessary. Likewise, you may
                  issue many messages to Brainhat. They will be processed as
                  they arrive.