mirror of https://github.com/sipwise/sems.git
You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
238 lines
8.5 KiB
238 lines
8.5 KiB
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)
|