|Eva Nautiyal||Manica Piputbundit|
|Columbia University, New York, NY 10027|
The Phone Announcement Server is a utility by which announcements can be made to multiple phones simultaneously. Phone numbers to which an announcement is to be made may be specified as a range of numbers with a common prefix. In this paper we discuss the implementation of the Phone Announcement Server within the SIPUA component of the CINEMA software.
The Phone Announcement Server is a useful telephony feature allowing a user to articulate a message to several endpoints at once over the network. It is helpful for conveying departmental messages to users with a common prefix in their phone number. In addition, it is a practical tool to make emergency announcements with. A Phone Announcement Server has been integrated with the CINEMA SIP user agent (SIPUA). An "announce" command has been added to the list of existing commands that can be executed on the SIPUA command line. With it, the user can specify the text of a message, its recipient(s), and number of times to retry failed numbers in order to make the announcement.
Background information about CINEMA can be found here. Instructions on how to use SIPUA can be found a here.
The SIPUA command "announce" carries out the functionality of the Phone Announcement Server. The command is used on the SIPUA command-line in the following way:sipua>set x Conference call for accounting department.
In the above, the first line is setting the text of the message to "Conference call for accounting department.", and the second line is setting the user conveying the message. In the third line, the announce command is executed by having the the text assigned to the variable in which the message is set, setting the user id in the same way, and specifying a range of number to announce to. A range digit can be specified by a '?'. The user can specify a range of up to four digits. In addition, multiple ranges/numbers can be specified if separated by a comma as follows:sipua>announce text=[x] from=[f] 191737300??,191783377??,12129397063
The following diagram illustrates what happens when the announce command is executed:
As soon as the announce command is executed, the time out value, retry value, and text for the announcement are parsed and set. Then the text-to-speech conversion tools are initialized and convert the text to audio format, placing the data into an audio buffer. Once the conversion is complete, the destination(s) specified are parsed, and the number range is expanded if need be. All the destionations are placed into a vector list. Then, we iterate through the list and spawn a MakeCallThread for each individual destination. In this thread, a MySIPCall object is created, and we wait for the specified timeout value for the other end to respond. If the destination endpoint picks up, the call is established, and the OnCallEstablished() method of MySIPCall uses the MyAnnounceThread to send the audio packets to the other end. When we find that the call is active, we terminate the thread. However, if the call is unsuccessful, we retry for the number of times the retry value is set. A list of successful and unsuccessful calls is made as the process takes place.
Tests were successfully conducted to see if announcements went through on actual telephones.
One useful enhancement that can be made in this project is the integration of DTMF digit conversion so that a menu with various options can be given to the user. However, this might not be useful in all cases, as sometimes a call containing an emergency announcement might go to voicemail.