Rayo is a message-oriented XML protocol for controlling phone calls, audio mixers
and a variety of advanced media resources
So why another protocol? While call and media control protocols are nothing new,
existing system are either way too low level and difficult to use (e.g. SIP, MRCP, MGCP, etc.)
or far too restrictive for highly interactive applications (e.g. VoiceXML, TwiML).
Rayo bridges the gap by providing a unified call+media control protocol that’s both simple to
use yet flexible enough to adapt to a wide array of network scenarios.
Call Control: Incoming calls are "offered" to clients at which point they can be answered, rejected, redirected to another destination, etc. Evey attempt is made to be shield the Rayo client from the low level telephony protocol (e.g. SIP, Jingle, PSTN, etc.)
Audio File Playback: A compatible Rayo server will fetch a file from a a specified URL and play the containing audio to the caller.
Speech Synthesis / TTS: In cases where dynamic data must be spoken, a Speech Synthesis engine many be used to play computer generated speech to the caller.
DTMF / Touch-tone Events: Rayo surfaces real-time event when the caller presses keys on their touch-tone keypad.
Speech Recognition: Enables the phone application to take spoken queues allowing for sophisticated voice-driven menus and directory services.
Call Recording: Can be used to capture the caller’s voice (e.g. Voicemail) or both sides of the call for auditing and compliance purposes.
Mixing: Typically referred to as an audio “conference”; calls can be joined together so that the participants can hear each other in real-time.
Clients and Servers
Rayo is a client/server protocol. The server interfaces with low level telephony components while the client controls calls by sending XML messages to the server. The communication between client and server is bidirectional with the client sending commands to the server and the server sending events to the client.