voicemail (voicemail2email) application 

This application plays a greeting message to the caller and records a 
voicemail. The voicemail is sent out as email via SMTP, saved in voicebox,
or both. 

In announcement mode, only the greeting message is played.

Audio Files
-----------

If try_personal_greeting=yes is set, the voicemail application tries to find 
a personal greeting message from msg_storage. Then the voicemail application
looks in various file system paths or database tables for announce and beep 
messages to be played. 

If file system is used to store audio files, the announcement file to be
played is looked for in the following order:

 <announce_path><did><uid>'.wav'
 <announce_path><did><language><default_announce>
 <announce_path><did><default_announce>
 <announce_path><language><default_announce>
 <announce_path><default_announce>

where <announce_path> and <default_announce> is set in voicemail.conf,
<domain> is the host part of the request URI, <user> the user part of 
the request URI (if not overridden by uid="..." or "usr=..."), and 
<language> is the App-Param 'Language' (see below).

If MySQL database is used to store audio files, the announcement to be
played is looked for first from user_audio table, then from domain_audio
table, and last from default_audio table.  The last two tables are
defined as described in Readme.conference.  user_audio table is defined
as follows:

CREATE TABLE user_audio (
  id int(10) unsigned NOT NULL auto_increment,
  application varchar(32) NOT NULL,
  message varchar(32) NOT NULL,
  domain varchar(128) NOT NULL,
  userid varchar(64) NOT NULL,
  audio mediumblob NOT NULL,
  PRIMARY KEY  (id),
  UNIQUE KEY application (application,message,domain,userid)
) ENGINE=MyISAM  DEFAULT CHARSET=latin1;

Beep sound to be played is looked for only from default_audio table.

Application value is 'voicemail' and message values are 'greeting_msg'
and 'beep_snd'.

When an audio file is fetched from database, it is stored in /tmp
directory.

Mail Server
-----------

The mail server to send the email with is configured in voicemail.conf 
in smtp_server/smtp_port (use e.g. postfix).

Other Items
-----------

Further configuration items (voicemail.conf):

max_record_time - voicemail records voicemail up to the number of 
                  seconds set here

rec_file_ext - extension of recorded voicemail file. this defines the 
               format of the recorded message: default is .wav, .mp3 
	       will record a voicemail as MP3 file (the mp3 plugin needs
	       to be loaded so that mp3 encoding is possible)

App-Params
----------

These must be passed as headers with the INVITE request to SEMS, so that 
SEMS knows at least the email address to send the email to.

There is a short and a long form. The short form may be preferred to 
avoid packet fragmentation (UDP).

  long            short       content
  -----------------------------------------------------------------------
  Email-Address   eml         - mandatory (!): the email address to send the mail to
  Mode            mod         - message leave mode: 
                                  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.
  User            usr         - voicebox user 
  Sender          snd         - sender. If empty, From will be used
  Domain          dom         - domain specific announcement files/email template. 
                                defaults to RURI domain.
  Language        lng         - optional: language for announcement file/email template
  Type            typ         - optional (default: 'vm'): prompt file to play, for user recorded
                                greeting (see annrecorder app)
  UserID          uid         - optional: override user by user id (see Note below)
  DomainID        did         - optional: override domain by domain id (see Note below)
  

  Example:
    P-App-name: voicemail
    P-App-Param: Email-Address=user@maildomain.net;Language=Latvian

  or 

    P-App-name: voicemail
    P-App-Param: eml=user@maildomain.net;mod=both;lng=english;snd=someone@iptel.org;dom=iptel.org;

Using UserID (UID) and DomainID (DID)
-------------------------------------

If the platform supports aliases and multiple domains, the canonical user name and domain
name may not be available when sending the INVITE request to the voicemail/voicebox server.
Also, domain ID is case insensitive, thus iptel.org and Iptel.org may appear as different 
domains to the case sensitive msg_storage engine.
Thus, the user and domain may be overridden by user id and domain id. These values are not 
used in the email template, they are used only for selection of the user's voicebox and 
personal greeting message.


Voicebox mode
-------------

This mode uses a msg_storage plugin to save the message to disk. This way it can be 
saved so that users can call in to listen to the messages. If no msg_storage module 
is loaded, Mode=box and Mode=both is not available. See documentation of msg_storage 
voicebox plug-ins for more details.

Voicemail email templates 
-------------------------

The format of the email can be configured using email templates.  Email
templates will help you to customize the emails sent by Voicemail. Just
configure the path where the templates can be found and edit your
template files.  You will find detailed informations in the following
sections.

Configuration parameters within voicemail.conf:
----------------------------------------------

This is needed in template files are kept in file system:

email_template_path: 

	- sets the directory which will be searched for
	  email template files (*.template).

	- each template file stands for a different domain:
	    <domain>.template
	    Ex: iptel.org.template

	- additionaly, a default template must be present in
	  the directory configured with that configuration
	  parameter. It must be named 'default.template'.

If you configured email_template_path well and turned debug informations
on, you should find in the log file during loading process following lines:

(9834) DEBUG: loadEmailTemplates (AnswerMachine.cpp:102): loading plug-in/voicemail/default.template ...
(9834) DEBUG: loadEmailTemplates (AnswerMachine.cpp:102): loading plug-in/voicemail/iptel.org.template ...
(9834) DEBUG: loadEmailTemplates (AnswerMachine.cpp:102): loading plug-in/voicemail/susie.at.template ...

If template files are kept in MySQL database, they are looked for first
from domain_template table and then from default_template table, which
are defined as follows:

CREATE TABLE domain_template (
  id int(10) unsigned NOT NULL,
  application varchar(32) NOT NULL,
  message varchar(32) NOT NULL,
  domain varchar(128) NOT NULL,
  `language` char(2) NOT NULL default '',
  template text NOT NULL,
  PRIMARY KEY  (id)
) ENGINE=MyISAM DEFAULT CHARSET=latin1;

CREATE TABLE default_template (
  id int(10) unsigned NOT NULL auto_increment,
  application varchar(32) NOT NULL,
  message varchar(32) NOT NULL,
  `language` char(2) NOT NULL default '',
  template text NOT NULL,
  PRIMARY KEY  (id)
) ENGINE=MyISAM  DEFAULT CHARSET=latin1;

Application value is 'voicemail' and message value is 'email_tmpl'.
Language value is a two letter code of a language or '' if language is
unknown.

When an audio file is fetched from database, it is stored in /tmp
directory.

Email template format:
----------------------

to: <destination email address>
from: <source email address>
subject: <subject line>
[header: <additional header>]
<empty line>
<body>

The optional header line adds a freely configurable 
header to the mail. For example, the voicemail can be 
securely filtered for the header X-Content if the following 
is used in the voicemail template:
header: X-Content: Voicemail
This line is optional. 

Multiple headers can be set by inserting  a \n, for example
header: X-Content: Voicemail\nX-Anotherheader: %domain%

Variables:
----------

If you want to customize the email depending on call datas, 
please use folowing syntax: %variable%

Following variables are supported:

 - %to% : local URI.
 - %domain% : local domain.
 - %user% : local user.
 - %email% : email address of the local user.

 - %from%/%sender% : Sender or remote URI.
 - %from_user% : remote user.
 - %from_domain% : remote domain.

 - %vmsg_length% : voice message length in seconds

 - %uid% : user id
 - %did% : domain id
 - %ts%  : unix timestamp (seconds)