Hi there,<BR>I have problem in loading module TM for voicemail setup here.<BR>I use SER 0.9.7 as server and the latest SEMS for voicemail usage.<BR>I tried to add my ser.cfg with script that can handle the voicemail but I found errors when run SER.<BR>Below is my ser.cfg: (Please take a look at line 54 and 56)<BR><BR> <DIV class=MsoPlainText>debug=9<BR>fork=yes<BR>log_stderror=yes<BR><BR>listen=202.95.149.2<SPAN> </SPAN># put your server IP address here<BR>port=5060<BR>children=4<BR><BR>dns=no<BR>rev_dns=no<BR><BR>fifo="/tmp/ser_fifo"<BR>fifo_db_url="mysql://ser:heslo@localhost/ser"<BR>fifo_mode=0666<BR>unix_sock="/tmp/ser_sock"<BR><BR>loadmodule "/usr/local/lib/ser/modules/mysql.so"<BR>loadmodule "/usr/local/lib/ser/modules/sl.so"<BR>loadmodule "/usr/local/lib/ser/modules/tm.so"<BR>loadmodule "/usr/local/lib/ser/modules/rr.so"<BR>loadmodule "/usr/local/lib/ser/modules/maxfwd.so"<BR>loadmodule
"/usr/local/lib/ser/modules/usrloc.so"<BR>loadmodule "/usr/local/lib/ser/modules/registrar.so"<BR>loadmodule "/usr/local/lib/ser/modules/auth.so"<BR>loadmodule "/usr/local/lib/ser/modules/auth_db.so"<BR>loadmodule "/usr/local/lib/ser/modules/nathelper.so"<BR>loadmodule "/usr/local/lib/ser/modules/textops.so"<BR>loadmodule "/usr/local/lib/ser/modules/uri_db.so"<BR>loadmodule "/usr/local/lib/ser/modules/uri.so"<BR>loadmodule "/usr/local/lib/ser/modules/avp.so"<BR>loadmodule "/usr/local/lib/ser/modules/avpops.so"<BR>loadmodule "/usr/local/lib/ser/modules/domain.so"<BR>loadmodule "/usr/local/lib/ser/modules/permissions.so"<BR>loadmodule "/usr/local/lib/ser/modules/msilo.so"<BR><BR>modparam("auth_db|permissions|uri_db|usrloc","db_url", "mysql://ser:heslo@localhost/ser")<BR>modparam("auth_db|uri_db|usrloc", "db_url", "mysql://ser:heslo@localhost/ser")<BR>modparam("auth_db", "calculate_ha1", 1)<BR>modparam("auth_db", "password_column", "password")<BR><BR>modparam("nathelper",
"natping_interval", 30)<BR>modparam("nathelper", "ping_nated_only", 1)<BR>modparam("nathelper", "rtpproxy_sock", "/var/run/rtpproxy.sock")<BR><BR>modparam("usrloc", "db_mode", 2)<BR><BR>modparam("registrar", "nat_flag", 6)<BR><BR>modparam("rr", "enable_full_lr", 1)<BR><BR>modparam("tm", "fr_inv_timer", 27)<BR>modparam("tm", "fr_inv_timer_avp", "inv_timeout")<SPAN> </SPAN><SPAN> </SPAN>modparam("tm", "fr_timer", 10 )<BR>modparam("tm", "wt_timer", 10 )<BR><SPAN style="BACKGROUND-COLOR: rgb(64,160,255)"><FONT style="BACKGROUND-COLOR:
#ffffff">line 54: modparam("tm", "pass_provisional_replies", 1)</FONT></SPAN><BR># configure tm to append this when tw_appent voicemail_headers is used<BR><SPAN style="BACKGROUND-COLOR: rgb(64,160,255)"><FONT style="BACKGROUND-COLOR: #ffffff">line 56: modparam("tm", "tw_append","voicemail_headers:P-Email-Address=avp[$email]")</FONT></SPAN><BR># appends for dtmf per INFO <BR>modparam( "tm", "tw_append","info_append:hdr[Content-Length];hdr[Content-Type];msg[body]")<BR><BR>modparam("permissions", "db_mode", 1)<BR>modparam("permissions", "trusted_table", "trusted")<BR><BR>modparam("msilo", "db_url", "mysql://ser:heslo@localhost/ser")<BR>modparam("msilo", "db_table", "silo")<BR>modparam("msilo","registrar","sip:<SPAN id=lw_1165835779_0 style="BORDER-BOTTOM: #0066cc 1px dashed">registrar@pcr.ac.id</SPAN>")<BR>modparam("msilo","expire_time",259200)<BR>modparam("msilo","check_time",30)<BR>modparam("msilo","clean_period",5)<BR><BR># configure avpops db connection<BR>modparam(
"avpops", "avp_url", "mysql://ser:heslo@localhost/ser" )<BR>modparam( "avpops", "avp_table", "subscriber" )<BR>modparam( "avpops", "uuid_column", "id" )<BR><BR># configure aliases, the number doesn't matter as long as there are no collisions)<BR>modparam( "avpops", "avp_aliases", "email=i:67" )<BR><BR># scheme to access the database<BR>modparam( "avpops", "db_scheme", <BR><SPAN> </SPAN><SPAN> </SPAN>"email_scheme:table=subscriber;value_col=email_address;value_type=string")<BR>#modparam( "avpops", "db_scheme", <BR>#<SPAN> </SPAN><SPAN> </SPAN>"language_scheme:table=subscriber;value_col=language;value_type=string")<BR><BR>alias="pcr.ac.id"<BR>route {<BR><SPAN> </SPAN># -----------------------------------------------------------------<BR><SPAN> </SPAN># Sanity Check Section<BR><SPAN>
</SPAN># -----------------------------------------------------------------<BR><BR><SPAN> </SPAN>if (!mf_process_maxfwd_header("10")) {<BR><SPAN> </SPAN>sl_send_reply("483", "Too Many Hops");<BR><SPAN> </SPAN>break;<BR><SPAN> </SPAN>};<BR><BR><SPAN> </SPAN>if (msg:len > max_len) {<BR><SPAN> </SPAN>sl_send_reply("513", "Message Overflow");<BR><SPAN> </SPAN><SPAN> </SPAN>break;<BR><SPAN> </SPAN>};<BR><SPAN>
</SPAN>/*<BR><SPAN> </SPAN>if (method != "ACK" && method != "INVITE" && method != "BYE" <BR><SPAN> </SPAN>&& method != "CANCEL" && method != "INFO" ){<BR><SPAN> </SPAN>log("unsupported method\n");<BR><SPAN> </SPAN>sl_send_reply("500","unsupported method");<BR><SPAN> </SPAN>break;<BR><SPAN> </SPAN>}<BR><SPAN> </SPAN>*/<BR><BR><SPAN> </SPAN># make transaction<BR><SPAN> </SPAN>if
(!t_newtran()){<BR><SPAN> </SPAN>log("could not create transaction\n");<BR><SPAN> </SPAN>sl_send_reply("500","could not create transaction");<BR><SPAN> </SPAN>break;<BR><SPAN> </SPAN>}<BR><BR><SPAN> </SPAN># actively absorb ACKs<BR><SPAN> </SPAN>if (method == "ACK") {<BR><SPAN> </SPAN>t_relay();<BR><SPAN> </SPAN>break;<BR><SPAN> </SPAN>}<BR><SPAN> </SPAN><BR><SPAN> </SPAN># pass INFO to SEMS <BR><SPAN> </SPAN>if (method=="INFO")
{<BR><SPAN> </SPAN><SPAN> </SPAN><SPAN> </SPAN>if(!t_write_unix("/tmp/sems_sock","sems/info_append")){<BR><SPAN> </SPAN><SPAN> </SPAN>log("could not contact sems\n");<BR><SPAN> </SPAN><SPAN> </SPAN>t_reply("500","could not contact media server");<BR><SPAN> </SPAN><SPAN> </SPAN>}<BR><SPAN> </SPAN>}<BR><BR><SPAN> </SPAN>if (uri =~ "sip:101.*@") {<BR><SPAN> </SPAN>if
(!t_write_unix("/tmp/sems_sock","myapp")){<BR><SPAN> </SPAN>log("could not contact media server\n");<BR><SPAN> </SPAN>t_reply("500","could not contact media server");<SPAN> </SPAN><BR><SPAN> </SPAN>break;<BR><SPAN> </SPAN>}<BR><SPAN> </SPAN>break;<BR><SPAN> </SPAN>}<BR><BR><SPAN> </SPAN>if (uri =~ "sip:102.*@") {<BR><SPAN> </SPAN>if
(!t_write_unix("/tmp/sems_sock","myconfigurableapp")){<BR><SPAN> </SPAN>log("could not contact media server\n");<BR><SPAN> </SPAN>t_reply("500","could not contact media server");<SPAN> </SPAN><BR><SPAN> </SPAN><SPAN> </SPAN>break;<BR><SPAN> </SPAN>}<BR><SPAN> </SPAN>break;<BR><SPAN> </SPAN>}<BR><BR><SPAN> </SPAN>if (uri =~ "sip:103.*@") {<BR><SPAN> </SPAN>if
(!t_write_unix("/tmp/sems_sock","myannounceapp")){<BR><SPAN> </SPAN>log("could not contact media server\n");<BR><SPAN> </SPAN>t_reply("500","could not contact media server");<SPAN> </SPAN><BR><SPAN> </SPAN>break;<BR><SPAN> </SPAN>}<BR><SPAN> </SPAN>break;<BR><SPAN> </SPAN>}<BR><BR><SPAN> </SPAN>if (uri =~ "sip:104.*@") {<BR><SPAN> </SPAN>if
(!t_write_unix("/tmp/sems_sock","myjukebox")){<BR><SPAN> </SPAN>log("could not contact media server\n");<BR><SPAN> </SPAN>t_reply("500","could not contact media server");<SPAN> </SPAN><BR><SPAN> </SPAN>break;<BR><SPAN> </SPAN>}<BR><SPAN> </SPAN>break;<BR><SPAN> </SPAN>}<BR><BR><SPAN> </SPAN>if (uri =~ "sip:105.*@") {<BR><SPAN> </SPAN>if
(!t_write_unix("/tmp/sems_sock","mycc")){<BR><SPAN> </SPAN>log("could not contact media server\n");<BR><SPAN> </SPAN>t_reply("500","could not contact media server");<SPAN> </SPAN><BR><SPAN> </SPAN>break;<BR><SPAN> </SPAN>}<BR><SPAN> </SPAN>break;<BR><SPAN> </SPAN>}<BR><BR><SPAN> </SPAN>if (uri =~ "sip:106.*@") {<BR><SPAN> </SPAN>if
(!t_write_unix("/tmp/sems_sock","ivr_announce")){<BR><SPAN> </SPAN>log("could not contact media server\n");<BR><SPAN> </SPAN>t_reply("500","could not contact media server");<SPAN> </SPAN><BR><SPAN> </SPAN>break;<BR><SPAN> </SPAN>}<BR><SPAN> </SPAN>break;<BR><SPAN> </SPAN>}<BR><BR>############ default sems apps<BR><SPAN> </SPAN>if (uri =~ "sip:110.*@") {<BR><SPAN> </SPAN>if
(!t_write_unix("/tmp/sems_sock","echo")){<BR><SPAN> </SPAN>log("could not contact echo\n");<BR><SPAN> </SPAN>t_reply("500","could not contact media server");<SPAN> </SPAN><BR><SPAN> </SPAN>break;<BR><SPAN> </SPAN>}<BR><SPAN> </SPAN>break;<BR><SPAN> </SPAN>}<BR><BR><BR><SPAN> </SPAN>if (uri =~ "sip:111.*@") {<BR><SPAN> </SPAN>if
(!t_write_unix("/tmp/sems_sock","announcement")){<BR><SPAN> </SPAN>log("could not contact announcement\n");<BR><SPAN> </SPAN>t_reply("500","could not contact media server");<SPAN> </SPAN><BR><SPAN> </SPAN>break;<BR><SPAN> </SPAN>}<BR><SPAN> </SPAN>break;<BR><SPAN> </SPAN>}<BR><BR><SPAN> </SPAN>if (uri =~ "sip:112.*@") {<BR><SPAN> </SPAN>if
(!t_write_unix("/tmp/sems_sock","conference")){<BR><SPAN> </SPAN>log("could not contact conference\n");<BR><SPAN> </SPAN>t_reply("500","could not contact media server");<SPAN> </SPAN><BR><SPAN> </SPAN>break;<BR><SPAN> </SPAN>}<BR><SPAN> </SPAN>break;<BR><SPAN> </SPAN>}<BR><BR><BR><SPAN> </SPAN>if (uri =~ "sip:113.*@") {<BR><SPAN> </SPAN>if
(!t_write_unix("/tmp/sems_sock","mailbox")){<BR><SPAN> </SPAN>log("could not contact mailbox\n");<BR><SPAN> </SPAN>t_reply("500","could not contact media server");<SPAN> </SPAN><BR><SPAN> </SPAN>break;<BR><SPAN> </SPAN>}<BR><SPAN> </SPAN>break;<BR><SPAN> </SPAN>}<BR><BR><SPAN> </SPAN>if (uri =~ "sip:114.*@") {<BR><SPAN> </SPAN>if
(!t_write_unix("/tmp/sems_sock","early_announce")){<BR><SPAN> </SPAN>log("could not contact early_announce\n");<BR><SPAN> </SPAN>t_reply("500","could not contact media server");<SPAN> </SPAN><BR><SPAN> </SPAN>break;<BR><SPAN> </SPAN>}<BR><SPAN> </SPAN>break;<BR><SPAN> </SPAN>}<BR><BR><SPAN> </SPAN>if (uri =~ "sip:115.*@") {<BR><SPAN> </SPAN># load email avp with some email
address<BR><SPAN> </SPAN>avp_write("root@localhost","$email");<BR><SPAN> </SPAN># use voicemail_headers append to pass it to sems<BR><SPAN> </SPAN>if (!t_write_unix("/tmp/sems_sock","voicemail/voicemail_headers")){<BR><SPAN> </SPAN>log("could not contact voicemail\n");<BR><SPAN> </SPAN>t_reply("500","could not contact media server");<SPAN> </SPAN><BR><SPAN> </SPAN>break;<BR><SPAN>
</SPAN>}<BR><SPAN> </SPAN>break;<BR><SPAN> </SPAN>}<BR><SPAN> </SPAN>t_reply("404","Not found");<BR><BR><SPAN> </SPAN># -----------------------------------------------------------------<BR><SPAN> </SPAN># Record Route Section<BR><SPAN> </SPAN># -----------------------------------------------------------------<BR><BR><SPAN> </SPAN>if (method!="REGISTER") {<BR><SPAN> </SPAN><SPAN> </SPAN>record_route();<BR><SPAN> </SPAN>};<BR><BR><SPAN> </SPAN>if (method=="BYE" || method=="CANCEL")
{<BR><SPAN> </SPAN>unforce_rtp_proxy();<BR><SPAN> </SPAN>}<BR><BR><SPAN> </SPAN># -----------------------------------------------------------------<BR><SPAN> </SPAN># Loose Route Section<BR><SPAN> </SPAN># -----------------------------------------------------------------<BR><BR><SPAN> </SPAN>if (loose_route()) {<BR><SPAN> </SPAN>if (has_totag() && (method=="INVITE" || method=="ACK")) {<BR><SPAN> </SPAN>if (nat_uac_test("19"))
{<BR><SPAN> </SPAN>setflag(6);<BR><SPAN> </SPAN><SPAN> </SPAN>force_rport();<BR><SPAN> </SPAN>fix_nated_contact();<BR><SPAN> </SPAN>};<BR><SPAN>
</SPAN>force_rtp_proxy("l");<BR><SPAN> </SPAN>};<BR><SPAN> </SPAN>route(1);<BR><SPAN> </SPAN>break;<BR><SPAN> </SPAN>};<BR><BR><SPAN> </SPAN># -----------------------------------------------------------------<BR><SPAN> </SPAN># Offline Message Store Section<BR><SPAN> </SPAN># -----------------------------------------------------------------<BR><SPAN> </SPAN>if (is_from_local()) {<SPAN> </SPAN><BR><SPAN> </SPAN><SPAN> </SPAN>if
(method=="REGISTER") {<BR><SPAN> </SPAN>save("location");<BR><SPAN> </SPAN>log("REGISTER received -> dumping messages with MSILO\n");<BR><BR><SPAN> </SPAN># MSILO - dumping user's offline messages<BR><SPAN> </SPAN>if (m_dump())<BR><SPAN> </SPAN>{<BR><SPAN> </SPAN>log("MSILO: offline messages dumped - if they were\n");<BR><SPAN> </SPAN><SPAN> </SPAN>}else{<BR><SPAN> </SPAN>log("MSILO: no offline messages
dumped\n");<BR><SPAN> </SPAN>};<BR><SPAN> </SPAN>break;<BR><SPAN> </SPAN>};<BR><BR><SPAN> </SPAN># domestic SIP destinations are handled using our USRLOC DB<BR><BR><SPAN> </SPAN>if(!lookup("location"))<BR><SPAN> </SPAN>{<BR><SPAN> </SPAN>if (! t_newtran())<BR><SPAN> </SPAN>{<BR><SPAN> </SPAN>sl_reply_error();<BR><SPAN>
</SPAN>break;<BR><SPAN> </SPAN>};<BR><SPAN> </SPAN># we do not care about anything else but MESSAGEs<BR><SPAN> </SPAN>if (!method=="MESSAGE")<BR><SPAN> </SPAN>{<BR><SPAN> </SPAN>if (!t_reply("404", "Not found"))<BR><SPAN> </SPAN>{<BR><SPAN> </SPAN>sl_reply_error();<BR><SPAN>
</SPAN>};<BR><SPAN> </SPAN>break;<BR><SPAN> </SPAN>};<BR><SPAN> </SPAN>log("MESSAGE received -> storing using MSILO\n");<BR><SPAN> </SPAN># MSILO - storing as offline message<BR><SPAN> </SPAN>if (m_store("0"))<BR><SPAN> </SPAN>{<BR><SPAN> </SPAN>log("MSILO: offline message stored\n");<BR><SPAN> </SPAN>if (!t_reply("202",
"Accepted"))<BR><SPAN> </SPAN>{<BR><SPAN> </SPAN>sl_reply_error();<BR><SPAN> </SPAN>};<BR><SPAN> </SPAN>}else{<BR><SPAN> </SPAN>log("MSILO: offline message NOT stored\n");<BR><SPAN> </SPAN>if (!t_reply("503", "Service Unavailable"))<BR><SPAN>
</SPAN>{<BR><SPAN> </SPAN>sl_reply_error();<BR><SPAN> </SPAN>};<BR><SPAN> </SPAN>};<BR><SPAN> </SPAN>break;<BR><SPAN> </SPAN>};<BR><SPAN> </SPAN># if the downstream UA does not support MESSAGE requests<BR><SPAN> </SPAN># go to failure_route[1]<BR><SPAN> </SPAN>t_on_failure("1");<BR><SPAN> </SPAN>t_relay();<BR><SPAN> </SPAN>break;<BR><SPAN>
</SPAN>};<BR><SPAN> </SPAN><SPAN> </SPAN># forward to current uri now; use stateful forwarding that<BR><SPAN> </SPAN># works reliably even if we forward from TCP to UDP<BR><SPAN> </SPAN>if (!t_relay()) {<BR><SPAN> </SPAN>sl_reply_error();<BR><SPAN> </SPAN>};<BR><BR><SPAN> </SPAN># -----------------------------------------------------------------<BR><SPAN> </SPAN># Call Type Processing Section<BR><SPAN> </SPAN># -----------------------------------------------------------------<BR><BR><SPAN> </SPAN>if (uri!=myself)
{<BR><SPAN> </SPAN>route(5);<BR><SPAN> </SPAN>route(1);<BR><SPAN> </SPAN>break;<BR><SPAN> </SPAN>};<BR><BR><SPAN> </SPAN>if (uri==myself) {<BR><SPAN> </SPAN>if (method=="ACK") {<BR><SPAN>
</SPAN>route(6);<BR><SPAN> </SPAN>break;<BR><SPAN> </SPAN><SPAN> </SPAN>} else if (method=="CANCEL") {<BR><SPAN> </SPAN>route(3);<BR><SPAN> </SPAN>break;<BR><SPAN> </SPAN>} else if (method=="INVITE") {<BR><SPAN>
</SPAN>route(3);<BR><SPAN> </SPAN>break;<BR><SPAN> </SPAN>} else<SPAN> </SPAN>if (method=="REGISTER") {<BR><SPAN> </SPAN>route(2);<BR><SPAN> </SPAN>break;<BR><SPAN> </SPAN>};<BR><SPAN>
</SPAN>lookup("aliases");<BR><SPAN> </SPAN>if (uri!=myself) {<BR><SPAN> </SPAN>route(5);<BR><SPAN> </SPAN>route(1);<BR><SPAN> </SPAN><SPAN> </SPAN>break;<BR><SPAN> </SPAN>};<BR><BR><SPAN> </SPAN>if (!lookup("location"))
{<BR><SPAN> </SPAN>sl_send_reply("404", "User Not Found");<BR><SPAN> </SPAN>break;<BR><SPAN> </SPAN>};<BR><SPAN> </SPAN>};<BR><SPAN> </SPAN>route(1);<BR>}<BR><BR>failure_route[1] {<BR><SPAN> </SPAN># forwarding failed -- check if the request was a MESSAGE<BR><SPAN> </SPAN>if (!method=="MESSAGE")<BR><SPAN> </SPAN>{<BR><SPAN> </SPAN>break;<BR><SPAN> </SPAN>};<BR><BR><SPAN> </SPAN>log(1,"MSILO:the
downstream UA doesn't support MESSAGEs\n");<BR><SPAN> </SPAN># we have changed the R-URI with the contact address, ignore it now<BR><SPAN> </SPAN>if (m_store("1"))<BR><SPAN> </SPAN>{<BR><SPAN> </SPAN>log("MSILO: offline message stored\n");<BR><SPAN> </SPAN>t_reply("202", "Accepted");<BR><SPAN> </SPAN>}else{<BR><SPAN> </SPAN>log("MSILO: offline message NOT stored\n");<BR><SPAN> </SPAN>t_reply("503", "Service Unavailable");<BR><SPAN> </SPAN>};<BR>}<BR><BR>route[1] {<BR><BR><SPAN> </SPAN># -----------------------------------------------------------------<BR><SPAN> </SPAN># Default Message
Handler<BR><SPAN> </SPAN># -----------------------------------------------------------------<BR><BR><SPAN> </SPAN>t_on_reply("1");<BR><SPAN> </SPAN>if (!t_relay()) {<BR><SPAN> </SPAN>if (method=="INVITE" && isflagset(6)) {<BR><SPAN> </SPAN>unforce_rtp_proxy();<BR><SPAN> </SPAN>};<BR><SPAN> </SPAN>sl_reply_error();<BR><SPAN> </SPAN>};<BR>}<BR><BR>route[2] {<BR><BR><SPAN> </SPAN>#
-----------------------------------------------------------------<BR><SPAN> </SPAN># REGISTER Message Handler<BR><SPAN> </SPAN># ----------------------------------------------------------------<BR><BR><SPAN> </SPAN>if (!search("^Contact:\ +\*") && nat_uac_test("19")) {<BR><SPAN> </SPAN>setflag(6);<BR><SPAN> </SPAN>fix_nated_register();<BR><SPAN> </SPAN>force_rport();<BR><SPAN> </SPAN>};<BR><SPAN> </SPAN>sl_send_reply("100", "Trying");<BR><BR><SPAN>
</SPAN>if (!www_authorize("pcr.ac.id","subscriber")) {<BR><SPAN> </SPAN>www_challenge("pcr.ac.id","0");<BR><SPAN> </SPAN>break;<BR><SPAN> </SPAN>};<BR><BR><SPAN> </SPAN>if (!check_to()) {<BR><SPAN> </SPAN>sl_send_reply("401", "Unauthorized");<BR><SPAN> </SPAN>break;<BR><SPAN> </SPAN>};<BR><SPAN> </SPAN>consume_credentials();<BR><SPAN> </SPAN>if (!save("location"))
{<BR><SPAN> </SPAN>sl_reply_error();<BR><SPAN> </SPAN>};<BR>}<BR><BR>route[3] {<BR><BR><SPAN> </SPAN># -----------------------------------------------------------------<BR><SPAN> </SPAN># CANCEL and INVITE Message Handler<BR><SPAN> </SPAN># -----------------------------------------------------------------<BR><BR><SPAN> </SPAN>if (!allow_trusted() && nat_uac_test("19")) {<BR><SPAN> </SPAN>setflag(6);<BR><SPAN> </SPAN>}<BR><SPAN>
</SPAN>lookup("aliases");<BR><SPAN> </SPAN>if (method=="INVITE" && !allow_trusted())<BR><SPAN> </SPAN>{<BR><SPAN> </SPAN>if (!proxy_authorize("pcr.ac.id","subscriber")) {<BR><SPAN> </SPAN>proxy_challenge("pcr.ac.id","0");<BR><SPAN> </SPAN>break;<BR><SPAN> </SPAN>} else if (!check_from()) {<BR><SPAN>
</SPAN>sl_send_reply("403", "Use From=ID");<BR><SPAN> </SPAN>break;<BR><SPAN> </SPAN>};<BR><SPAN> </SPAN>consume_credentials();<BR><SPAN> </SPAN>};<BR><BR><SPAN> </SPAN>if (uri=~"^sip:9[0-9]*@") {<BR><SPAN> </SPAN>route(4);<BR><SPAN> </SPAN>break;<BR><SPAN> </SPAN>};<BR><BR><SPAN> </SPAN>if (uri!=myself)
{<BR><SPAN> </SPAN>route(5);<BR><SPAN> </SPAN>route(1);<BR><SPAN> </SPAN>break;<BR><SPAN> </SPAN>};<BR><BR><SPAN> </SPAN>if (!lookup("location")) {<BR><SPAN> </SPAN>if (uri=~"^sip:[0-9]{10}@") {<BR><SPAN> </SPAN>route(4);<BR><SPAN> </SPAN>break;<BR><SPAN>
</SPAN>};<BR><SPAN> </SPAN>sl_send_reply("404", "User Not Found");<BR><SPAN> </SPAN>break;<BR><SPAN> </SPAN>};<BR><BR><SPAN> </SPAN>if (isflagset(6)) {<BR><SPAN> </SPAN>force_rport();<BR><SPAN> </SPAN>fix_nated_contact();<BR><SPAN> </SPAN>force_rtp_proxy();<BR><SPAN> </SPAN>};<BR><SPAN> </SPAN>t_on_reply("1");<BR><BR><SPAN>
</SPAN>if (!t_relay()) {<BR><SPAN> </SPAN>if(isflagset(6)) {<BR><SPAN> </SPAN>unforce_rtp_proxy();<BR><SPAN> </SPAN>}<BR><SPAN> </SPAN>sl_reply_error();<BR><SPAN> </SPAN>};<BR>}<BR><BR>route[4] {<BR><BR><SPAN> </SPAN># -----------------------------------------------------------------<BR><SPAN> </SPAN># PSTN Handler<BR><SPAN> </SPAN># -----------------------------------------------------------------<BR><BR><SPAN> </SPAN>rewritehostport("202.95.149.2:5060"); # INSERT YOUR PSTN GATEWAY IP
ADDRESS<BR><SPAN> </SPAN>avp_write("i:45", "inv_timeout");<BR><BR><SPAN> </SPAN>if (isflagset(6)) {<BR><SPAN> </SPAN>force_rport();<BR><SPAN> </SPAN>fix_nated_contact();<BR><SPAN> </SPAN><SPAN> </SPAN>force_rtp_proxy();<BR><SPAN> </SPAN>};<BR><SPAN> </SPAN>route(1);<BR><SPAN> </SPAN>}<BR><BR>onreply_route[1] {<BR><SPAN> </SPAN>if (isflagset(6) && status=~"(180)|(183)|2[0-9][0-9]") {<BR><SPAN> </SPAN>if (!search("^Content-Length:\ +0"))
{<BR><SPAN> </SPAN>force_rtp_proxy();<BR><SPAN> </SPAN>};<BR><SPAN> </SPAN>};<BR><BR><SPAN> </SPAN>if (nat_uac_test("1")) {<BR><SPAN> </SPAN>fix_nated_contact();<BR><SPAN> </SPAN>};<BR>}<BR></DIV> <DIV class=MsoPlainText>--------------------------------------------------------------------------------------------------------------------</DIV> <DIV class=MsoPlainText></DIV> <DIV class=Default><SPAN> </SPAN>If I uncomment line 54 and 56, below is the output when I run SER:<BR></DIV> <DIV class=Default>0(4425) set_mod_param_regex:
parameter <pass_provisional_replies> not found in module <tm></DIV> <DIV class=Default><SPAN> </SPAN>0(4425) parse error (54,19-20): Can't set module parameter</DIV> <DIV class=Default><SPAN> </SPAN>0(4425) set_mod_param_regex: tm matches module tm</DIV> <DIV class=Default><SPAN> </SPAN>0(4425) set_mod_param_regex: found <tw_append> in module tm [/usr/local/lib/ser/modules/tm.so]</DIV> <DIV class=Default><SPAN> </SPAN>0(4425) ERROR:tm:parse_tw_append: bad alias spec <$email></DIV> <DIV class=Default><SPAN> </SPAN>0(4425) parse error (56,19-20): Can't set module parameter</DIV> <DIV class=Default><SPAN> </SPAN>0(4425) set_mod_param_regex: tm matches module tm</DIV>-----------------------------------------------------------------------------------------------------------------------<BR> <DIV class=Default>If I comment line 54 and 56, below is the output:<BR></DIV> <DIV class=Default><SPAN> </SPAN>0(0)
ERROR:tm:fixup_t_write: unknown append name <voicemail_headers></DIV> <DIV class=Default><SPAN> </SPAN>0(0) ERROR: fix_expr : fix_actions error</DIV> <DIV class=Default>ERROR: error -6 while trying to fix configuration</DIV> <DIV class=Default><SPAN> </SPAN>0(0) MSILO: destroy module ...</DIV> <DIV class=Default><SPAN> </SPAN>0(0) DEBUG: tm_shutdown : start</DIV> <DIV class=Default><SPAN> </SPAN>0(0) DEBUG: unlink_timer_lists : emptying DELETE list</DIV> <DIV class=Default><SPAN> </SPAN>0(0) DEBUG: tm_shutdown : emptying hash table</DIV> <DIV class=Default><SPAN> </SPAN>0(0) DEBUG: tm_shutdown : releasing timers</DIV> <DIV class=Default><SPAN> </SPAN>0(0) DEBUG: tm_shutdown : removing semaphores</DIV> <DIV class=Default><SPAN> </SPAN>0(0) DEBUG: tm_shutdown : destroying tmcb lists</DIV> <DIV class=Default><SPAN> </SPAN>0(0) DEBUG: tm_shutdown : done</DIV> <DIV class=Default><SPAN> </SPAN>0(5050)
shm_mem_destroy</DIV> <DIV class=Default><SPAN> </SPAN>0(5050) destroying the shared memory lock</DIV> <DIV class=Default>-----------------------------------------------------------------------------------------------------------</DIV> <DIV class=Default>Please tell me what's wrong. And please tell me whether if my configuration on ser.cfg is right or wrong because I doubt it.<BR></DIV> <DIV class=Default>Thanx before...</DIV><BR> <DIV class=Default>Regards,</DIV> <DIV class=Default>Meidiana<BR></DIV><p> 
<hr size=1>Want to start your own business? Learn how on <a href="http://us.rd.yahoo.com/evt=41244/*http://smallbusiness.yahoo.com/r-index">Yahoo! Small Business.</a>