The Voice-Mail IAP

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:

Voice-mail operation

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.

The files

Running the Voice-Mail IAP

Add 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 "" 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
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).

Preference profile

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.

Bhaskaran Raman,
Last modified: Sat Jun 3 00:20:21 PDT 2000