EscapeE home  | About Us  | Search  | Print to IVR
Interactive Voice Response  
RedToMe Introduction

IVR release

- pronounced "read to me" - A "tome" is a large book, often one volume of a multi-volume scholarly work.
The RedTitan Interactive Voice Response (IVR) is an automated system that answers a phone call. In response to touch tones from a phone keypad, pre-recorded or dynamically created audio messages are played.
Traditional IVR uses dedicated servers and a array of voice modems connected to a "hunt group" of telephone lines - an expensive solution.
RedTitan IVR is based on Voice Over IP technology using a Public Switched Telephone Network gateway provider. This has a number of advantages over older systems.
Phone handset
VOIP advantages
  • Telephone numbers can be selected to be "local" for client populations.e.g. Choose a New Jersey number even if the server is in Atlanta.
  • The phone numbers follow the IVR server. You can re-locate to a disaster recovery site without the need to change the phone numbers  
  • A single telephone number is sufficient to handle multiple concurrent incoming calls - a high speed connection to the Internet is all that is required
  • Client calls from increasingly popular VOIP phones are often cheap or free.
  • A subscription to a PSTN Gateway Provider is minimal (for incoming calls) - very low ongoing cost
Voice synthesis
In a typical application, a phone call is answered with a request for an account code and a password. Validated users may select message replay from a menu. Replay messages
Hear sample
A message is a text file that is spoken to the user using voice synthesis, this data can be can be generated from a database or even recovered directly from print files using RedTitan EscapeE. Static messages can be professionally recorded in a digital audio format.
IVR release
How RedToMe works.
An Internet phone works by connecting a telephone handset to the Internet using a TCP/IP protocol called SIP or H.323. To get started you need to register your phone to a Public Switched Telephone Network gateway provider. RedToMe uses the SIP protocol from a provider like BROADVOICE or VOIPTALK to make the connection to "land line" services. When purchasing a SIP service you are often able to choose your own telephone number and you are give a login identification and password. If you ever want to "dial out" you must also purchase "credits" - we don't!
In fact, the Session Initiation Protocol (SIP) is just a way starting a telephone call. When an incoming call is received, SIP is used to establish the connection and then the audio traffic is passed on to Real Time Transport protocol (RTP). There a lot of ports that have to pass through a firewall to make this work!
How RedToMe speaks.
There are many competing Text To Speech (TTS) Engines available for Windows. The default Microsoft engines are very good but there are specialised engines for most languages. RedToMe uses TTS to convert text from a script to audio and RTP to play the audio to a "dial in" user. Of course, the system will also play digital audio from other sources.
RedToMe "reads" from a pre-prepared script which has special functions designed to provide hints for the more difficult reading tasks. e.g
say '$100.23'
; is better written
currency '$100.23'
; and will be read as one hundred dollars and twenty three cents
RedToMe scripting language (RSL)
Every dial in user causes an RSL script to be processed. (There is an RSL summary manual at the end of this document)
say 'Welcome to flood watch'
say 'There are no flood warnings'
date_dmy '22062006'
say 'High tide today will be at '
time '4:32 PM. '
say 'The height is predicted to be'
number_decimal '10.23'
say 'feet.'
How RedTome interacts.
RedTome uses the phone keyboard DTMF tones for simple interaction. RSL provides two functions for this purpose.
input identifier
Read a number from the phone terminated by the * or the # key.
key identifier
Read a single key. (* has value 11, # has value 12)
There is no time-out.
How RedTome manages message security.
Security is not mandated; the "flood watch" script above, would work for all clients that knew the telephone number. Enforcing security is the responsibilty of the RSL script author. RSL provides two functions for "login" checking against a validation database of accounts and passwords.
login identifier
Read an ACCOUNT NUMBER from the phone terminated by the * or the # key. If a sub-directory exists in the application root directory corresponding to the number entered, the reserved identifier "account_status" is set to "1".  This is the message directory for the client.
A "client" message is an RSL script. The number of RSL scripts that exist in the message directory for the client is set in the reserved identifier "message_status".
password identifier
Read a PASSWORD from the phone terminated by the * or the # key. If the number entered is correct for the account number the reserved identifier "password_status" is set to "1". If message_status>0 the script could go on to play messages using the function messages
Speak messages in the client folder correspondind to the account number. Each message is prefaced by the creation time and date.
Delete messages in the client messages folder (if any)
RedToMe encrypts the account number and the password using a one way block cipher. Plain text passwords are not stored on file.
RedToMe Script Language elements.
Strings must be quoted e.g. 'hello world'
Identifiers are used to hold numbers and must start with an alpha character and contain nothing other that alphanumeric characters plus "_".
White space is ignored. A semi-colon is used to introduce a comment.
Flow control
if {conditional_expression} {condition_block}
conditional_expression::=identifier conditional_operator identifier
conditional_operator::= > | < | >= | <= | = | <>
goto label_identifier
A label is denoted in the script using the notation  label_identifier :
e.g if {message_status=0} {goto theend}
RedToMe scripting language functions
login, password, messages, delete (documented above under security)
say string
Read the text. Punctuation is not required but full stops and commas help with the phrasing.
sayplural identifier , string
This function used to read identifier as an integer using an extended form. The system attempts to use a plural form of the cited string as required.
e.g. sayplural x,'note'
x=3 .. three notes
x=1 .. one note
x=0 .. no notes 
wave string
Play a pre-recorded ".wav" file. The file must be made in 11KHz 8bit Mono WAV format.
inc identifier
dec identifier
Increment or decrement the number stored in the cited identifier.
let identifier = number
Assign a value to the cited identifier
 silence number
Pause for a number of milliseconds e.g. silence 1000 - pause for a second
Various "helper" functions are provided to "read as" in a special format.
date_mdy string month day year.
date_dmy string day month year.
date_ym string year month.
date_mdy string month day year
date_my string month year
date_dm string day month
date_md string month day
date_year string year
date_time string time
number_fraction string fraction
number_decimal string decimal
number_digit string | identifier read number as a series of digits
currency string currency amount in appropriate international notation
phone_number string read as a phone number
web_url string read as a web site address
number_cardinal string | identifier positive integer
Note that only number_digit and number_cardinal accept either identifier or literal string parameters. This allows key pad entry or "status" reserved identifiers to be spoken.
Complex Pronunciation
pronounce  string
RedTome speech synthesis engines may need help with words that are not in the lexicon. For example, end users might be offended by "Microsoft Anna" getting their name wrong! RSL uses a phonetic notation to voice these types of words correctly.
The string parameter for the pronounce function uses a series of short comands to voice the word correctly and emphasise the correct syllable
e.g. pronounce 'h eh - l ow 1'
- syllable boundary (hyphen)
! Sentence terminator (exclamation mark)
& word boundary (ampersand)
, Sentence terminator (comma)
. Sentence terminator (period)
? Sentence terminator (question mark)
_ Silence (underscore)
1 Primary stress
2 Secondary stress
aa as in father
ae as in cat
ah as in cut
ao as in dog
aw as in foul
ax as in ago
ay as in bite
b as in big
ch as in chin
d as in dig
dh as in then
eh as in pet
er as in fur
ey as in ate
f as in fork
g as in gut
h as in help
ih as in fill
iy as in feel
jh as in joy
k as in cut
l as in lid
m as in mat
n as in no
ng as in sing
ow as in go
oy as in toy
p as in put
r as in red
s as in sit
sh as in she
t as in talk
th as in thin
uh as in book
uw as in took
v as in vat
as in with
y as in yard
z as in zap
as in sure

Example script
; Read account number
wave 'ring.wav'
silence 300
say 'Please enter your account code followed by the star key'
input account
login account
say 'Thank you'
silence 300
say 'Now enter your password followed by the star key'
input pw
; validate password
password pw
if {password_status=1} {goto okpass}
say 'Account '
number_digit account
say 'not authorised.'
say 'please try again.'
goto start
say 'You have'
sayplural message_status,'message'

if {message_status=0} {goto theend}
say 'to play all messages press 1'
say 'to delete all messages press 2'
key a
if {a=1} {goto playit}
if {a=2} {goto dele}
if {a=3} {goto secret}
goto loop
wave 'drydemo.wav'
goto loop
say 'Playing messages';
goto loop
say 'Please press 2 to confirm that you want to delete all messages'
key a
if {a<>2} {goto loop}
say 'all messages deleted'
theend: say 'Thank you for calling the RedTitan Interactive Voice Response system'

RedTome version 1.3 2007
© RedTitan Technology 2014. All rights reserved. | company info | search |