     * [1]Main Page
     * [2]Related Pages
     * [3]Namespaces
     * [4]Data Structures
     * [5]Files
     * [6]Directories
     * [7]Examples

How to set up the proxy for voicemail and voicebox in SEMS

Introduction

   This text describes how one can set up a SER based home proxy SIP proxy
   with voicemail and voicebox service implemented in SEMS.

   With minor modifications, this should work with home proxies
   implemented with SER derivatives ([8]Kamailio 1.x, [9]OpenSIPS), and
   also with [10]sip-router (e.g. Kamailio 3.0) based proxy
   configurations. For other types of proxies or SIP platforms, it should
   give an idea of what is required to use a SEMS based voicemail system.

Features of a voicemail system with SEMS

   The voicemail system that comes with SEMS supports the following
   features
     * voicemail2email and/or dial-in voicebox
     * greeting only mode
     * voicebox plays message count
     * new and saved messages
     * user can record personal greeting message (as a separate service
       number)
     * multi-domain capable
     * multi-language capable (e.g. as user setting), supports
       single-digits pre and post
     * supports domain and user aliases (domain/user string or domain-ID
       (DID)/user-ID (UID) )
     * prompts per domain/language
     * default greeting message per domain/language
     * configurable key bindings for menu

Parameters to voicemail applications

   Usually, when a call should be sent to the voicemail system, the home
   proxy already knows some parts or all of the user profile, for example
   the email address of a user, or the voicemail settings; for example the
   user profile is already loaded from a DB (or LDAP, RADIUS, DIAMETER
   etc). For this reason, in a SEMS based voicemail system, the proxy adds
   the relevant information as parameters to the INVITE request. Those
   parameters are set in the P-App-Param header.

   Example:
     INVITE sip:1000@sems01.iptel.org:5080 SIP/2.0.

     From: "sayer@iptel" <sip:sayer@iptel.org>;tag=d3olt2dqvl.

     To: <sip:1000@iptel.org>.

     ...
     P-App-Name: voicebox.

     P-App-Param: usr=sayer;dom=iptel.org;lng=en;uid=3ab0a114-ceff-11da-8607-000
2b3abca3a;did=2f2091f5-ceff-11da-8220-0002b338cf3a;.

   If the proxy does not support this, or does not have access to the user
   profile, there are two solutions:
     * add another SER-based proxy in front of SEMS that has access to
       user profile, and adds those headers
     * add the functionality for accessing the user profile to SEMS (e.g.
       access DB in SEMS)

   For both solutions, the main complexity lies in the fact that the right
   user needs to be identified (with support for multi domain, aliases,
   call forwarding etc).

Features of a voicemail system with SEMS

   There is three applications involved in a voicemail/voicebox system in
   SEMS: voicemail, voicebox and annrecorder. Voicemail is the application
   that records a message, and sends the message as email or stores it
   into the voicebox storage. Voicebox is the application that users can
   dial into, listen to their messages, delete or save them. Annrecorder
   is an application that lets users record their personal greeting
   message.

   If only voicemail2email is to be used, the voicemail application alone
   can be employed. In that case, the mode must be set to voicemail (see
   voicemail application parameters below).

Storage for voice message files and greetings

   The storage for voice messages is implemented in a separate module.
   This way for example a specialized adapter to some replicated storage
   system can be implemented and loaded without changing the other
   applications.

   A storage module only needs to support a few very simple functions:
   Create, get and delete messages, mark a message as read, list a user's
   directory, and get the number of messages in the user's directory. The
   sender and the message record time is encoded in the message name.

   The default storage module, msg_storage, is an implementation that just
   uses the normal file system calls (fopen(), readdir(), opendir() etc).
   As 'saved' flag, the mtime of the file is compared to the atime.

   Note:
          If your file system does not support atime, this will not work,
          i.e. all messages will always appear as unread!

Domain/User text or domain ID (DID) and user ID (UID)

   If the platform supports user and domain aliases (e.g. sip.iptel.org
   and iptel.org, or numeric aliases), there may not be a canonical user
   name available. For that case, the user ID and domain ID (canonical
   user/domain ID) may be used, by setting UID/DID application parameters.
   This overrides the user name and domain name, so that the correct user
   and domain is identified.

Voicemail application modes

   The voicemail application has four modes:
     * voicemail : send email (default)
     * box : leave in voicebox (store in msg_storage)
     * both : send email and leave in voicebox
     * ann : just play greeting, don't record message.

   For voicemail and both mode, the email address must be given as
   parameter.

Voicemail specific AVPs

   The following user AVPs should be configured in SerWeb to be
   user-configurable:
     * voicemail : voicemail mode - 'voicemail', 'box', 'both', or 'ann'
     * email: email address
     * lang: language - selectable from those for which prompts are
       present

Proxy configuration for ser-oob.cfg

   These route fragments could be inserted into a typical ser-oob or
   default Kamailio configuration.

Leaving a message

   This should be added to native SIP destinations which are not found in
   usrloc, i.e. instead of replying 480 User temporarily not available,
   and in FAILURE_ROUTE:
       append_hf("P-App-Name: voicemail\r\n");
       append_hf("P-App-Param: mod=%$t.voicemail%|;eml='%$t.email%|';usr=%@ruri.
user%|;snd='%@from.uri%|';dom=%@ruri.host%|;uid=%$t.uid%|;did=%$t.did%|;");
       rewritehostport("voicemail.domain.net:5080");
       route(FORWARD);

Calling voicebox

   This should be added to SITE-SPECIFIC route:
     if (uri=~"^sip:1000") {               # 1000 is voicebox access number
         append_hf("P-App-Name: voicebox\r\n");
         append_hf("P-App-Param: usr=%@from.uri.user%|;dom=%@from.uri.host%|;lng
=%$f.lang%|;uid=%$f.uid%|;did=%$f.did%|;\r\n");
         rewritehostport("voicemail.domain.net:5080");
         route(FORWARD);
     }

Recording the greeting

   This is very similar to the one above, and should be added to
   SITE_SPECIFIC as well:
     if (uri=~"^sip:1001") {               # 1001 is recod greeting number
         append_hf("P-App-Name: annrecorder\r\n");
         append_hf("P-App-Param: usr=%@from.uri.user%|;dom=%@from.uri.host%|;lng
=%$f.lang%|;uid=%$f.uid%|;did=%$f.did%|;typ=vm;\r\n");
         rewritehostport("voicemail.domain.net:5080");
         route(FORWARD);
     }

   Note the type (typ) here; the annrecorder application can be used to
   record different greetings (e.g. away greeting when recording message,
   or normal away greeting). This type can be used when sending a call to
   voicemail application.
     __________________________________________________________________


    Generated on Thu Feb 3 02:29:25 2011 for SEMS by  [11]doxygen 1.6.1

References

   1. file://localhost/home/stefan/devel/sems/sems/doc/doxygen_doc/html/index.html
   2. file://localhost/home/stefan/devel/sems/sems/doc/doxygen_doc/html/pages.html
   3. file://localhost/home/stefan/devel/sems/sems/doc/doxygen_doc/html/namespaces.html
   4. file://localhost/home/stefan/devel/sems/sems/doc/doxygen_doc/html/annotated.html
   5. file://localhost/home/stefan/devel/sems/sems/doc/doxygen_doc/html/files.html
   6. file://localhost/home/stefan/devel/sems/sems/doc/doxygen_doc/html/dirs.html
   7. file://localhost/home/stefan/devel/sems/sems/doc/doxygen_doc/html/examples.html
   8. http://kamailio.org/
   9. http://opensips.org/
  10. http://sip-router.org/
  11. http://www.doxygen.org/index.html
