I think resending your request multiple times will not improve the response
time, quality or anything. Especially during the weekend you should not
expect replies within hours!
Regards
Nils
On Saturday 24 April 2004 19:25, gaillac harry wrote:
Hi all,
Here is my ser.cg file. I try to configure send IM, Missed calls,
Voicemail.
I just can configure Send IM.
Now I can call isdngw, ivr
I need help to configure lookup location logic for missed calls and
voicemail (offline users)
Anybody could help me to configure the others functions (problem with
logic !!).
harry
Regards
#
# $Id: ser.cfg,v 1.21.4.1 2003/11/10 15:35:15 andrei Exp $
#
# simple quick-start config script
#
#
# $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=no # (cmd line: -E)
/* Uncomment these lines to enter debugging mode
debug=7
fork=no
log_stderror=yes
*/
check_via=no # (cmd. line: -v)
dns=no # (cmd. line: -r)
rev_dns=no # (cmd. line: -R)
listen=192.168.0.1
port=5060
children=4
fifo="/tmp/ser_fifo"
fifo_mode=0666
# -- module loading --
# Uncomment this if you want to use SQL database
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/domain.so"
loadmodule "/usr/lib/ser/modules/msilo.so"
loadmodule "/usr/lib/ser/modules/acc.so"
loadmodule "/usr/lib/ser/modules/vm.so"
loadmodule "/usr/lib/ser/modules/uri.so"
# Uncomment this if you want digest authentication
# mysql.so must be loaded !
loadmodule "/usr/lib/ser/modules/auth.so"
loadmodule "/usr/lib/ser/modules/auth_db.so"
# -- setting module-specific parameters --
# -- usrloc params --
#modparam("usrloc", "db_mode", 0)
# Uncomment this if you want to use SQL database
# for persistent storage and comment the previous line
modparam("usrloc", "db_url",
"mysql://ser:heslo@localhost/ser")
modparam("usrloc", "db_mode", 2)
modparam("usrloc", "use_domain", 1)
# -- auth params --
# Uncomment if you are using auth module
#
modparam("auth_db", "calculate_ha1", yes)
#
# If you set "calculate_ha1" parameter to yes (which true in this
config),
# uncomment also the following parameter)
#
modparam("auth_db", "password_column", "password")
# -- rr params --
# add value to ;lr param to make some broken UAs happy
modparam("rr", "enable_full_lr", 1)
# --registrar params--
modparam("registrar", "use_domain", 1)
# --domain params--
modparam("domain", "db_url",
"mysql://ser:heslo@localhost/ser")
modparam("domain", "db_mode", 1) # Use chaching
# --acc params--
modparam("acc", "db_url",
"mysql://ser:heslo@localhost/ser")
modparam("acc", "db_missed_flag", 3)
# --msilo params--
modparam("msilo", "db_url",
"mysql://ser:heslo@localhost/ser")
modparam("msilo", "db_table", "silo")
modparam("msilo","registrar","sip:registrar@192.168.0.1")
# --uri params--
modparam("uri", "db_url",
"mysql://ser:heslo@localhost/ser")
modparam("uri", "subscriber_table", "subscriber")
# --vm params--
modparam("voicemail", "db_url",
"mysql://ser:heslo@localhost/ser")
# -- request routing logic --
# main routing logic
route{
# initial sanity checks -- messages with
# max_forwards==0, or excessively long requests
if (!mf_process_maxfwd_header("10")) {
sl_send_reply("483","Too Many Hops");
break;
};
if ( msg:len > max_len ) {
sl_send_reply("513", "Message 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;
};
# isdn gateway
if(method=="INVITE" || method=="BYE" ||
method=="CANCEL"){
if (uri=~"sip:[0-9]{10}@.*") {
route(2);
break;
};
};
# ivr conf
if(method=="INVITE" || method=="BYE" ||
method=="CANCEL"){
if (uri=~"sip:5000@.*") {
route(4);
break;
};
};
# 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 (is_from_local()) {
if (method=="REGISTER") {
# Uncomment this if you want to use digest authentication
if (!www_authorize("", "subscriber")) {
www_challenge("", "0");
break;
};
save("location");
# 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
lookup("aliases");
if (!lookup("location")) {
if (! t_newtran()) {
sl_reply_error();
break;
};
# we do not care about anything else but
MESSAGEs
if (!method=="MESSAGE") {
if (!t_reply("404", "Not found")) {
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")) {
sl_reply_error();
};
}else{
log("MSILO: offline message NOT
stored\n");
if (!t_reply("503", "Service
Unavailable")) {
sl_reply_error();
};
};
break;
};
# if the downstream UA does not support MESSAGE
requests
# go to failure_route[1]
t_on_failure("1");
t_relay();
break;
};
# 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();
};
}
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 delivery");
}else{
log("MSILO: offline message NOT stored\n");
t_reply("503", "Service Unavailable");
};
}
route[2] {
# ############################## #
# isdngw specific configuration #
# ############################## #
if(t_newtran()){
if(method=="INVITE" || method=="BYE" ||
method=="CANCEL"){
# send a response right at the start to
avoid retransmissions
t_reply("100","Trying -- just wait a
minute !");
# isdngw only gets activated on invite
requests
if(method=="INVITE"){
# filename is defined in
sems.conf.
if(uri=~"sip:[0-9]{10}@.*"){
if(!vm("/tmp/am_fifo","isdngw")){ log("could not contact
isdngw\n");
t_reply("500","could not contact isdngw"); };
# Allow the announcement module
of sems to be used as well.
# This can be useful for testing
the isdngw.
} else
if(uri=~"sip:announcement@.*"){
if(!vm("/tmp/am_fifo","announcement")){ log("could not contact
announcement\n");
t_reply("500","could not contact announcement"); };
# we dont feel responsible for
sip addresses of any other kind,
# so send the right error code.
} else {
t_reply("404","Not
Found");
};
# stop routing here, the message
is now processed by the media server
break;
};
# The following handles the call
termination, we must pass these requests
# to the media server as follows. Again
make shure the fifo name and permissions
# are set correctly (like im sems.conf).
if((method=="BYE")||(method=="CANCEL")){
if(!vm("/tmp/am_fifo","bye")){ log("could not contact the media
server\n");
t_reply("500","could not contact the media server"); };
break;
};
# other methods than INVITE, BYE and CANCEL are
not handled by this SIP Server
# so we sent an error message
} else {
log("ERROR: method not supported\n");
t_reply("500", "sorry, method not
supported");
};
} else {
# for any reason the transaction could not be created,
send error code
log("could not create new transaction\n");
sl_send_reply("500","could not create new
transaction");
};
# in isdngw.conf. Don't change this setting.
t_relay();
# end of routing.
}
route[3] {
# Voicemail specific configuration - begin
if(method=="ACK" || method=="INVITE" ||
method=="BYE"){
if (!t_newtran()) {
log("could not create new transaction\n");
sl_send_reply("500","could not create new
transaction");
break;
};
t_reply("100","Trying -- just wait a minute !");
if(method=="INVITE"){
log("**************** vm start - begin
******************\n");
if (uri=~"sip:*@example.com" ||
uri=~"sip:*@support.example.com") {
if (!vm("/tmp/am_fifo",
"announcement"))
{
log("couldn't contact
announcement server\n");
t_reply("500", "couldn not
contact announcement server");
};
} else {
if(!vm("/tmp/am_fifo","voicemail")){
log("could not contact the
answer machine\n");
t_reply("500","could not contact
the answer machine");
};
};
log("**************** vm start - end
******************\n");
} else if(method=="BYE"){
log("**************** vm end - begin
******************\n");
if(!vm("/tmp/am_fifo","bye")){
log("could not contact the answer
machine\n");
t_reply("500","could not contact the
answer machine");
};
log("**************** vm end - end
******************\n");
};
break;
};
if (method=="CANCEL") {
sl_send_reply("200", "cancels are junked here");
break;
};
sl_send_reply("501", "method not understood here");
}
route[4] {
# ivr specific configuration - begin
if(method=="ACK" || method=="INVITE" ||
method=="BYE"){
if (!t_newtran()) {
log("could not create new transaction\n");
sl_send_reply("500","could not create new
transaction");
break;
};
t_reply("100","Trying -- just wait a minute !");
if(method=="INVITE"){
log("**************** vm start - begin
******************\n");
if (uri=~"sip:5000@.*") {
if (!vm("/tmp/am_fifo", "ivr")) {
log("couldn't contact ivr server\n");
t_reply("500", "couldn not
contact ivr server");
};
};
log("**************** vm start - end
******************\n");
} else if(method=="BYE"){
log("**************** vm end - begin
******************\n");
if(!vm("/tmp/am_fifo","bye")){
log("could not contact ivr\n");
t_reply("500","could not contact
ivr");
};
log("**************** vm end - end
******************\n");
};
break;
};
if (method=="CANCEL") {
sl_send_reply("200", "cancels are junked here");
break;
};
sl_send_reply("501", "method not understood here");
}
_______________________________________________
Serusers mailing list
serusers(a)lists.iptel.org
http://lists.iptel.org/mailman/listinfo/serusers