ORIX Message Specification

All ORIX Core Messages are structured as in the following examples:

*announce:{"name":"ACS Remote Control","alert":1} *say:Hello! My name is Fred. *menu:{"operator":"fc76e4a6-c76b-41d5-9c76-dc0ae28d9c0d","menu":"remotemain"} *stand:


 * The first character is *, indicating an ORIX Device-to-Core message


 * Following that is the command name, such as "announce:", which MUST end in a colon.


 * Following that is one of the following:


 * A set of arguments specified in a JSON format, or

All ORIX Cores must listen for ORIX Core messages on channel -15180924. (Optionally, it may also listen for messages on channel 9360. If so, messages received on either channel should be treated identically.)
 * A single string argument, or
 * Nothing (if the command needs no arguments)

Messages received on this channel that do not fit the structure of an ORIX command, or which contain a command the Core does not recognize, should be ignored.

Commands the Core recognizes, but that contain improper or invalid argument values, or that omit required arguments, may be handled in any way the Core chooses. It may ignore them, it may return an error message to the sending device, or it may have a different effect (e.g. causing the robot to speak an error message).

Commands the Core recognizes, that contain enough valid arguments to allow it to execute the command, but also contain additional arguments that the Core does not recognize, should be executed ignoring the unrecognized arguments. This allows a device to send a Core message that takes advantage of a feature some Cores possess, while still allowing a Core that does not have that feature to respond to the message in whatever way it can.

Required ORIX Core Messages
Every ORIX Core must recognize and respond to the following commands:
 * *hello:
 * *help:
 * *announce:
 * *login:
 * *goodbye:
 * ping:
 * pong:

Optional ORIX Core Messages
A Core that only responded to the required messages would be a very dull core indeed. However, no two Cores will offer exactly the same features. Each Core will recognize the messages that are useful for the features it implements, and ignore the others.

It is strongly recommended that if a Core is capable of doing what a particular message requests, it should do so. For example, if your Core has the ability to be turned on and off (as most Cores probably do), it should respond to *power:1 by turning on, and to *power:0 by turning off. This will allow for the maximum compatibility with other devices that may be capable of instructing a Core to power on or off. However, it is entirely acceptable for your Core to ignore those messages if it does not have the ability to be turned on and off, or to return an error message if the necessary conditions for being turned on or off are not met (e.g. needing to be logged in).

The following ORIX Core Messages are available:
 * say:
 * whisper:
 * emote:
 * think:


 * poseanim:
 * voice:
 * power:
 * motion:
 * speech:
 * control:
 * sit:
 * stand:
 * set:
 * to:
 * panel:
 * shape:
 * behavior:
 * clothes:
 * rlvfolder:
 * rlvsearch:
 * bolt:
 * uninstall:


 * seq:
 * timer:
 * trigger:
 * if:


 * listanims:
 * echo:
 * fixanim:
 * menu:
 * exampanel:
 * panelstate:
 * lowpower:
 * psstat:
 * move:
 * tetherto:
 * offer:
 * upload:
 * addcharge:
 * delete:
 * upgrade:
 * ident:
 * interfere: