This document describes the specifics of the Voice-Mail IAP. For a general description of an IAP, refer iap.html.
The Voice-Mail IAP is a primitive voice-mail service in itself. The only interface it has (for voice-mail) is the IAP interface. The voice-mail records and stores voice-mail messages. It supports only incoming calls (is a server IAP) and incoming DTMF -- none in the outgoing direction.
The specifics of the Voice-Mail IAP are:
The voice-mail can be called in two different ways. The first is when the user directly dials into the voice-mail service. The second is when a user calling another is redirected by the callee's preference registry to the voice-mail. In the first case, the callee of the call is the voice-mail itself. In the second case, the callee id would be that of the user who the caller was trying to reach. The voice-mail uses this information to put itself in one of two modes of operation: (a) voice-mail access, or (b) voice-mail recording.
In the first case, the user can access her stored voice-mail messages or record a new playback message. In the second case, the caller hears the callee's playback message, and is allowed to record a message for the callee.
In the first case, the DTMF tones used are the following:
Obviously, this interface is not a complete one. Also, there is no interactive system to guide the user. These are possible additions to the IAP.
Running the Voice-Mail IAPAdd the following line to the iSpace configuration file.
iceberg.iap.vm_iap.Vm_Iap voice-mail-files-directory ipop-host[:port]The directory is where the voice-mail files will be stored. The ipop-host is the location of the iPOP host and the port is the iSpace port of the iPOP (defaults to 1099).
Voice-mail message files and meta-files
Each user has a file "uid.info" with the following bytes in it: "uid:quota:playback_msg:num_msgs:msg1_id:msg2_id:...". There is no terminating new-line. Each message is identified by an id (given at the time of recording). Associated with each message is a file "msgid.msginfo" with the following bytes in it: "caller:date:status:length". Again, there is no terminating new-line. The date is in the format of a long integer (returned by System.currentTimeMillis() in java). The status is one of "NEW", "READ", or "DELETED". The length is in bytes. Each message is stored as a separate file "msgid.msg".
Naming service and preference registry entries
Since the voice-mail IAP has an identity of its own (that is, users may try to reach the mediamanager IAP as an entity), it needs a naming service entry and preference registry entry.
Naming service entries
The naming service entry is of the form:
dn: uid=vm, l3=cs, l2=berkeley, l1=edu, type=uniq uid: vm iPOPUrl: jake.cs.berkeley.edu:9900/iceberg.ipop.CAD objectClass: uidobj
You can also add a separate entry for any of the other name-spaces. For instance, the mediamanager IAP can be assigned a cell-phone number in the example cell-phone number space (see cpnums) by adding the entry:
dn: cpnum=864, type=gsm aliasedObjectName: "uid=vm, l3=cs, l2=berkeley, l1=edu, type=uniq" objectClass: alias
For information on adding naming service entries, refer the naming service documentation).
To add a preference profile for the mediamanager IAP, use the preference manager. The profile for this could be very simple with only one "outgoing interface" and a single rule specifying that to be the default. See the preference manager documentation for details on adding preference profiles.