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