Eric:
You need to decide what application will provide voice mail service
SEMS, Asterisk, etc. That decision will drive what needs to be in your
config file. Basically you'll need to add t_on_failure("N") and
failure_route[N] statements to handle the unanswered call. In the
failure_route you will want to do hostname and/or port number
re-writing as necessary then t_relay the call to this new (voicemail
server) destination.
-Steve
Quek Eric wrote:
Hi all,
Im a new learner who is a beginner learning on SIP...
I will like to know how do I enable Voice Mail in my
ser.cfg file...
Here's my ser.cfg:
#
# $Id: ser.cfg,v 1.21.4.1 2003/11/10 15:35:15 andrei
Exp $
#
# simple quick-start config script
#
# ----------- global configuration parameters
------------------------
debug=3 # debug level (cmd line: -dddddddddd)
fork=yes
log_stderror=yes # (cmd line: -E)
/* Uncomment these lines to enter debugging mode
debug=7
fork=no
log_stderror=yes
*/
listen=172.16.221.38
listen=127.0.0.1
alias="sip.nyp.edu.sg"
alias=172.16.221.38
alias=127.0.0.1
check_via=yes # (cmd. line: -v)
dns=yes # (cmd. line: -r)
rev_dns=no # (cmd. line: -R)
port=5060
children=4
fifo="/tmp/ser_fifo"
# ------------------ module loading
----------------------------------
loadmodule "/usr/lib/ser/modules/mysql.so"
loadmodule "/usr/lib/ser/modules/sl.so"
loadmodule "/usr/lib/ser/modules/tm.so"
loadmodule "/usr/lib/ser/modules/rr.so"
loadmodule "/usr/lib/ser/modules/maxfwd.so"
loadmodule "/usr/lib/ser/modules/usrloc.so"
loadmodule "/usr/lib/ser/modules/registrar.so"
loadmodule "/usr/lib/ser/modules/auth.so"
loadmodule "/usr/lib/ser/modules/auth_db.so"
loadmodule "/usr/lib/ser/modules/acc.so"
loadmodule "/usr/lib/ser/modules/exec.so"
loadmodule "/usr/lib/ser/modules/group.so"
loadmodule "/usr/lib/ser/modules/domain.so"
loadmodule "/usr/lib/ser/modules/print.so"
loadmodule "/usr/lib/ser/modules/textops.so"
loadmodule "/usr/lib/ser/modules/uri.so"
loadmodule "/usr/lib/ser/modules/msilo.so"
loadmodule "/usr/lib/ser/modules/vm.so"
# ----------------- setting module-specific parameters
---------------
# -- tm parameters --
modparam("tm", "fr_timer", 12)
modparam("tm", "fr_inv_timer", 24)
# -- rr parameters --
#add value to ;lr param to make some broken UAs happy
modparam("rr", "enable_full_lr", 1)
# -- usrloc parameters --
#2 enables write-back to persistent mysql storage for
speed
#disable=0, write-through=1
modparam("usrloc", "db_mode", 2)
#minimize write back window - default is 60 seconds
modparam("usrloc", "timer_interval", 120)
#database location
modparam("usrloc", "db_url",
"sql://ser:heslo@localhost/ser")
# -- auth parameters --
#database location
modparam("auth_db", "db_url",
"sql://ser:heslo@localhost/ser")
#allows clear text password in the mysql database
modparam("auth_db", "calculate_ha1", yes)
#name of password column in mysql database
modparam("auth_db", "password_column", "password")
# -- acc parameters --
modparam("acc", "log_level", 1)
modparam("acc", "log_flag", 1)
modparam("acc", "log_missed_flag", 3)
# -- msilo parameters --
modparam("msilo", "db_table", "silo")
# ------------------------- request routing logic
-------------------
# main routing logic
route{
#checks messages with max_forwards==0
if (!mf_process_maxfwd_header("10"))
{
sl_send_reply("483","too many hops");
break;
};
#or excessively long requests
if ( msg:len > max_len )
{
sl_send_reply("513", "message is too big");
break;
};
# we record-route all messages -- to make sure that
# subsequent messages will go through our proxy;
that's
# particularly good if upstream and downstream
entities
# use different transport protocol
record_route();
# loose-route processing
if (loose_route())
{
t_relay();
break;
};
# labeled all transaction for accounting
setflag(1);
# record-route INVITES to make sure BYEs will visit
our server too
if (method=="INVITE") record_route();
# if the request is for other domain use UsrLoc
# (in case, it does not work, use the following
command
# with proper names and addresses in it)
if (uri==myself)
{
if (method=="REGISTER")
{
#make sure that users don't register infinite loops
if
(search("^(Contact|m):.*@(172\.16\.221\.38|(proxy\.)?sip\.nyp\.edu\.sg)"))
{
log(1, "LOG: alert: someone trying to set
aor==contact\n");
sl_send_reply("476", "no server address in
contacts allowed");
break;
};
#Uncomment this if you want to use digest
authentication
# if (!www_authorize("sip.nyp.edu.sg",
"subscriber"))
# {
# www_challenge("sip.nyp.edu.sg", "0");
# break;
# };
save("aliases");
save("location");
log("REGISTER received -> dumping messages with
MSILO\n");
#MSILO - dumping user's offline messages
if (m_dump())
{
log("MSILO: offline messages dumped - if they
were\n");
}
else
{
log("MSILO: no offline messages dumped\n");
};
break;
};
#native SIP destinations are handled using our
USRLOC DB
if (!lookup("location"))
{
if (! t_newtran())
{
sl_reply_error();
break;
};
if (!method=="MESSAGE")
{
if (!t_reply("404", "not found on LDAP or SER"))
{
sl_reply_error();
};
break;
};
log("MESSAGE received -> storing using MSILO\n");
# MSILO - storing as offline message
if (m_store("0"))
{
log("MSILO: offline message stored\n");
if (!t_reply("202", "accepted for later
delivery"))
{
sl_reply_error();
};
}
else
{
log("MSILO: offline message NOT stored\n");
if (!t_reply("503", "service unavailable"))
{
sl_reply_error();
};
};
break;
sl_send_reply("404", "not found on LDAP or SER");
break;
};
#if the downstream UA does not support MESSAGE
requests
#go to failure_route[1]
t_on_failure("1");
t_relay();
break;
#native SIP destinations are handled using our
USRLOC DB
if (!lookup("location"))
{
if (!exec_dset("/etc/ser/sipldap"))
{
sl_send_reply("404", "not found on LDAP or SER");
break;
}
else
{
log(1, "sipldap call");
};
};
};
setflag(3);
#forward to current uri now; use stateful forwarding;
that
#works reliably even if we forward from TCP to UDP
if (!t_relay())
{
sl_reply_error();
break;
};
#does user wish redirection on no availability?
#(is he in the voicemail (ser->grp) group?
if (is_user_in("Request-URI", "voicemail"))
{
t_on_failure("4");
setflag(1);
};
}
failure_route[1] {
#forwarding failed -- check if the request was a
MESSAGE
if (!method=="MESSAGE")
{
break;
};
log(1,"MSILO: the downstream UA does not support
MESSAGE requests ...\n");
#we have changed the R-URI with the contact address
-- ignore it now
if (m_store("1"))
{
log("MSILO: offline message stored\n");
t_reply("202", "accepted for later delivery");
}
else
{
log("MSILO: offline message NOT stored\n");
t_reply("503", "service unavailable");
};
}
failure_route[4] {
append_branch("sip:80000@sip.nyp.edu.sg");
append_urihf("CC-Diversion: ", "\r\n");
append_hf("P-hint: OFFLINE-VOICEMAIL\r\n");
t_relay();
}
Pls do help me...
rgds,
Eric
__________________________________
Do you Yahoo!?
Yahoo! Personals - Better first dates. More second dates.
http://personals.yahoo.com
_______________________________________________
Serusers mailing list
serusers(a)lists.iptel.org
http://lists.iptel.org/mailman/listinfo/serusers
--
ISC Network Engineering
The University of Pennsylvania
3401 Walnut Street, Suite 221A
Philadelphia, PA 19104
voice: 215-573-8396
215-746-8001
fax: 215-898-9348
sip:blairs@upenn.edu