Quek Eric inputdev@yahoo.com wrote: thx Steve, can u simplify wad to do or where can i learn to create voice mail? due to I'm totally new to SIP...I'm actually a student taking over a project which was done by a student too. rgds, Eric
Steve Blair blairs@isc.upenn.edu wrote:
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@lists.iptel.org http://lists.iptel.org/mailman/listinfo/serusers