[Serusers] TM module error. Please help!!

Cesc cesc.santa at gmail.com
Mon Dec 11 19:02:03 CET 2006


Sorry, i re-read the email and sounds veery harsh. I apologize for
that. The idea behind the email stands, though.

And sorry, i can't help you.

Cesc

On 12/11/06, Cesc <cesc.santa at gmail.com> wrote:
> NO MATTER HOW MANY TIMES YOU RE-SEND YOUR EMAIL, IF PEOPLE CAN'T OR
> DON'T WANT TO ANSWER ... YOU ARE NOT GOING TO GET A REPLY!
>
> So please, adhere to the netiquette rules, remember this is opensource
> (not PAID Tech Support), thus ... if someone finds a moment, they will
> answer.
>
> Meanwhile, you can do your own googling and try to figure out your
> problem yourself ...
>
> Cesc
>
> On 12/11/06, Meidiana Ten <gotcha_em at yahoo.com> wrote:
> > Hi there,
> > I have problem in loading module TM for voicemail setup here.
> > I use SER 0.9.7 as server and the latest SEMS for voicemail usage.
> > I tried to add my ser.cfg with script that can handle the voicemail but I
> > found errors when run SER.
> > Below is my ser.cfg: (Please take a look at line 54 and 56)
> >
> >
> > debug=9
> > fork=yes
> > log_stderror=yes
> >
> > listen=202.95.149.2       # put your server IP address here
> > port=5060
> > children=4
> >
> > dns=no
> > rev_dns=no
> >
> > fifo="/tmp/ser_fifo"
> > fifo_db_url="mysql://ser:heslo@localhost/ser"
> > fifo_mode=0666
> > unix_sock="/tmp/ser_sock"
> >
> > loadmodule "/usr/local/lib/ser/modules/mysql.so"
> > loadmodule "/usr/local/lib/ser/modules/sl.so"
> > loadmodule "/usr/local/lib/ser/modules/tm.so"
> > loadmodule "/usr/local/lib/ser/modules/rr.so"
> > loadmodule "/usr/local/lib/ser/modules/maxfwd.so"
> > loadmodule "/usr/local/lib/ser/modules/usrloc.so"
> > loadmodule "/usr/local/lib/ser/modules/registrar.so"
> > loadmodule "/usr/local/lib/ser/modules/auth.so"
> > loadmodule "/usr/local/lib/ser/modules/auth_db.so"
> > loadmodule "/usr/local/lib/ser/modules/nathelper.so"
> > loadmodule "/usr/local/lib/ser/modules/textops.so"
> > loadmodule "/usr/local/lib/ser/modules/uri_db.so"
> > loadmodule "/usr/local/lib/ser/modules/uri.so"
> > loadmodule "/usr/local/lib/ser/modules/avp.so"
> > loadmodule "/usr/local/lib/ser/modules/avpops.so"
> > loadmodule "/usr/local/lib/ser/modules/domain.so"
> > loadmodule "/usr/local/lib/ser/modules/permissions.so"
> > loadmodule "/usr/local/lib/ser/modules/msilo.so"
> >
> > modparam("auth_db|permissions|uri_db|usrloc","db_url",
> > "mysql://ser:heslo@localhost/ser")
> > modparam("auth_db|uri_db|usrloc", "db_url",
> > "mysql://ser:heslo@localhost/ser")
> > modparam("auth_db", "calculate_ha1", 1)
> > modparam("auth_db", "password_column", "password")
> >
> > modparam("nathelper", "natping_interval", 30)
> > modparam("nathelper", "ping_nated_only", 1)
> > modparam("nathelper", "rtpproxy_sock", "/var/run/rtpproxy.sock")
> >
> > modparam("usrloc", "db_mode", 2)
> >
> > modparam("registrar", "nat_flag", 6)
> >
> > modparam("rr", "enable_full_lr", 1)
> >
> > modparam("tm", "fr_inv_timer", 27)
> > modparam("tm", "fr_inv_timer_avp", "inv_timeout")
> >
> > modparam("tm", "fr_timer", 10 )
> > modparam("tm", "wt_timer", 10 )
> > line 54: modparam("tm", "pass_provisional_replies", 1)
> > # configure tm to append this when tw_appent voicemail_headers is used
> > line 56: modparam("tm",
> > "tw_append","voicemail_headers:P-Email-Address=avp[$email]")
> > # appends for dtmf per INFO
> > modparam( "tm",
> > "tw_append","info_append:hdr[Content-Length];hdr[Content-Type];msg[body]")
> >
> > modparam("permissions", "db_mode", 1)
> > modparam("permissions", "trusted_table", "trusted")
> >
> > modparam("msilo", "db_url", "mysql://ser:heslo@localhost/ser")
> > modparam("msilo", "db_table", "silo")
> > modparam("msilo","registrar","sip:registrar at pcr.ac.id")
> > modparam("msilo","expire_time",259200)
> > modparam("msilo","check_time",30)
> > modparam("msilo","clean_period",5)
> >
> > # configure avpops db connection
> > modparam( "avpops", "avp_url", "mysql://ser:heslo@localhost/ser" )
> > modparam( "avpops", "avp_table", "subscriber" )
> > modparam( "avpops", "uuid_column", "id" )
> >
> > # configure aliases, the number doesn't matter as long as there are no
> > collisions)
> > modparam( "avpops", "avp_aliases", "email=i:67" )
> >
> > # scheme to access the database
> > modparam( "avpops", "db_scheme",
> >
> > "email_scheme:table=subscriber;value_col=email_address;value_type=string")
> > #modparam( "avpops", "db_scheme",
> > #
> > "language_scheme:table=subscriber;value_col=language;value_type=string")
> >
> > alias="pcr.ac.id"
> > route {
> >         #
> > -----------------------------------------------------------------
> >         # Sanity Check Section
> >         #
> > -----------------------------------------------------------------
> >
> >         if (!mf_process_maxfwd_header("10")) {
> >                 sl_send_reply("483", "Too Many Hops");
> >                 break;
> >         };
> >
> >         if (msg:len > max_len) {
> >                 sl_send_reply("513", "Message Overflow");
> >                 break;
> >         };
> >       /*
> >       if (method != "ACK" && method != "INVITE" && method != "BYE"
> >             && method != "CANCEL" && method != "INFO" ){
> >                   log("unsupported method\n");
> >                   sl_send_reply("500","unsupported
> > method");
> >                   break;
> >       }
> >       */
> >
> >       # make transaction
> >       if (!t_newtran()){
> >             log("could not create transaction\n");
> >             sl_send_reply("500","could not create transaction");
> >             break;
> >       }
> >
> >       # actively absorb ACKs
> >       if (method == "ACK") {
> >             t_relay();
> >             break;
> >       }
> >
> >       # pass INFO to SEMS
> >       if (method=="INFO") {
> >
> > if(!t_write_unix("/tmp/sems_sock","sems/info_append")){
> >                         log("could not contact sems\n");
> >                         t_reply("500","could not contact media server");
> >             }
> >       }
> >
> >       if (uri =~ "sip:101.*@") {
> >             if (!t_write_unix("/tmp/sems_sock","myapp")){
> >                   log("could not contact media server\n");
> >                   t_reply("500","could not contact media server");
> >                   break;
> >             }
> >             break;
> >       }
> >
> >       if (uri =~ "sip:102.*@") {
> >             if
> > (!t_write_unix("/tmp/sems_sock","myconfigurableapp")){
> >                   log("could not contact media server\n");
> >                   t_reply("500","could not contact media server");
> >                   break;
> >             }
> >             break;
> >       }
> >
> >       if (uri =~ "sip:103.*@") {
> >             if
> > (!t_write_unix("/tmp/sems_sock","myannounceapp")){
> >                   log("could not contact media server\n");
> >                   t_reply("500","could not contact media server");
> >                   break;
> >             }
> >             break;
> >       }
> >
> >       if (uri =~ "sip:104.*@") {
> >             if
> > (!t_write_unix("/tmp/sems_sock","myjukebox")){
> >                   log("could not contact media server\n");
> >                   t_reply("500","could not contact media server");
> >                   break;
> >             }
> >             break;
> >       }
> >
> >       if (uri =~ "sip:105.*@") {
> >             if (!t_write_unix("/tmp/sems_sock","mycc")){
> >                   log("could not contact media server\n");
> >                   t_reply("500","could not contact media server");
> >                   break;
> >             }
> >             break;
> >       }
> >
> >       if (uri =~ "sip:106.*@") {
> >             if
> > (!t_write_unix("/tmp/sems_sock","ivr_announce")){
> >                   log("could not contact media server\n");
> >                   t_reply("500","could not contact media server");
> >                   break;
> >             }
> >             break;
> >       }
> >
> > ############ default sems apps
> >       if (uri =~ "sip:110.*@") {
> >             if (!t_write_unix("/tmp/sems_sock","echo")){
> >                   log("could not contact echo\n");
> >                   t_reply("500","could not contact media server");
> >                   break;
> >             }
> >             break;
> >       }
> >
> >
> >       if (uri =~ "sip:111.*@") {
> >             if
> > (!t_write_unix("/tmp/sems_sock","announcement")){
> >                   log("could not contact announcement\n");
> >                   t_reply("500","could not contact media server");
> >                   break;
> >             }
> >             break;
> >       }
> >
> >       if (uri =~ "sip:112.*@") {
> >             if
> > (!t_write_unix("/tmp/sems_sock","conference")){
> >                   log("could not contact conference\n");
> >                   t_reply("500","could not contact media server");
> >                   break;
> >             }
> >             break;
> >       }
> >
> >
> >       if (uri =~ "sip:113.*@") {
> >             if (!t_write_unix("/tmp/sems_sock","mailbox")){
> >                   log("could not contact mailbox\n");
> >                   t_reply("500","could not contact media server");
> >                   break;
> >             }
> >             break;
> >       }
> >
> >       if (uri =~ "sip:114.*@") {
> >             if
> > (!t_write_unix("/tmp/sems_sock","early_announce")){
> >                   log("could not contact early_announce\n");
> >                   t_reply("500","could not contact media server");
> >                   break;
> >             }
> >             break;
> >       }
> >
> >       if (uri =~ "sip:115.*@") {
> >             # load email avp with some email address
> >             avp_write("root at localhost","$email");
> >             # use voicemail_headers append to pass it to sems
> >             if
> > (!t_write_unix("/tmp/sems_sock","voicemail/voicemail_headers")){
> >                   log("could not contact voicemail\n");
> >                   t_reply("500","could not contact media server");
> >                   break;
> >             }
> >             break;
> >       }
> >       t_reply("404","Not found");
> >
> >         #
> > -----------------------------------------------------------------
> >         # Record Route Section
> >         #
> > -----------------------------------------------------------------
> >
> >         if (method!="REGISTER") {
> >                 record_route();
> >         };
> >
> >         if (method=="BYE" || method=="CANCEL") {
> >                 unforce_rtp_proxy();
> >         }
> >
> >         #
> > -----------------------------------------------------------------
> >         # Loose Route Section
> >         #
> > -----------------------------------------------------------------
> >
> >         if (loose_route()) {
> >                 if (has_totag() && (method=="INVITE" || method=="ACK")) {
> >                         if (nat_uac_test("19")) {
> >                                 setflag(6);
> >                                 force_rport();
> >                                 fix_nated_contact();
> >                         };
> >                     force_rtp_proxy("l");
> >                 };
> >                 route(1);
> >                 break;
> >         };
> >
> >         #
> > -----------------------------------------------------------------
> >         # Offline Message Store Section
> >         #
> > -----------------------------------------------------------------
> >       if (is_from_local()) {
> >             if (method=="REGISTER") {
> >             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;
> >         };
> >
> >         # domestic SIP destinations are handled using our USRLOC DB
> >
> >         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();
> >         };
> >
> >        #
> > -----------------------------------------------------------------
> >         # Call Type Processing Section
> >         #
> > -----------------------------------------------------------------
> >
> >         if (uri!=myself) {
> >                         route(5);
> >                         route(1);
> >                         break;
> >         };
> >
> >         if (uri==myself) {
> >                 if (method=="ACK") {
> >                         route(6);
> >                         break;
> >                 } else if (method=="CANCEL") {
> >                         route(3);
> >                         break;
> >                 } else if (method=="INVITE") {
> >                         route(3);
> >                         break;
> >                 } else  if (method=="REGISTER") {
> >                         route(2);
> >                         break;
> >                 };
> >                 lookup("aliases");
> >                 if (uri!=myself) {
> >                         route(5);
> >                         route(1);
> >                         break;
> >                 };
> >
> >                 if (!lookup("location")) {
> >                         sl_send_reply("404", "User Not Found");
> >                         break;
> >                 };
> >         };
> >         route(1);
> > }
> >
> > failure_route[1] {
> >     # forwarding failed -- check if the request was a MESSAGE
> >     if (!method=="MESSAGE")
> >     {
> >         break;
> >     };
> >
> >     log(1,"MSILO:the downstream UA doesn't support MESSAGEs\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");
> >     }else{
> >         log("MSILO: offline message NOT stored\n");
> >         t_reply("503", "Service Unavailable");
> >     };
> > }
> >
> > route[1] {
> >
> >         #
> > -----------------------------------------------------------------
> >         # Default Message Handler
> >         #
> > -----------------------------------------------------------------
> >
> >         t_on_reply("1");
> >         if (!t_relay()) {
> >                 if (method=="INVITE" && isflagset(6)) {
> >                   unforce_rtp_proxy();
> >                 };
> >                 sl_reply_error();
> >         };
> > }
> >
> > route[2] {
> >
> >         #
> > -----------------------------------------------------------------
> >         # REGISTER Message Handler
> >         #
> > ----------------------------------------------------------------
> >
> >         if (!search("^Contact:\ +\*") && nat_uac_test("19")) {
> >                 setflag(6);
> >                 fix_nated_register();
> >                 force_rport();
> >         };
> >         sl_send_reply("100", "Trying");
> >
> >         if (!www_authorize("pcr.ac.id","subscriber")) {
> >                 www_challenge("pcr.ac.id","0");
> >                 break;
> >         };
> >
> >         if (!check_to()) {
> >                 sl_send_reply("401", "Unauthorized");
> >                 break;
> >         };
> >         consume_credentials();
> >         if (!save("location")) {
> >                 sl_reply_error();
> >         };
> > }
> >
> > route[3] {
> >
> >         #
> > -----------------------------------------------------------------
> >         # CANCEL and INVITE Message Handler
> >         #
> > -----------------------------------------------------------------
> >
> >         if (!allow_trusted() && nat_uac_test("19")) {
> >                  setflag(6);
> >         }
> >         lookup("aliases");
> >         if (method=="INVITE" && !allow_trusted())
> >         {
> >                 if (!proxy_authorize("pcr.ac.id","subscriber")) {
> >                         proxy_challenge("pcr.ac.id","0");
> >                         break;
> >                 } else if (!check_from()) {
> >                         sl_send_reply("403", "Use From=ID");
> >                         break;
> >                 };
> >                 consume_credentials();
> >         };
> >
> >         if (uri=~"^sip:9[0-9]*@") {
> >                 route(4);
> >                 break;
> >         };
> >
> >         if (uri!=myself) {
> >                 route(5);
> >                 route(1);
> >                 break;
> >         };
> >
> >         if (!lookup("location")) {
> >                 if (uri=~"^sip:[0-9]{10}@") {
> >                 route(4);
> >                 break;
> >                 };
> >                 sl_send_reply("404", "User Not Found");
> >                 break;
> >         };
> >
> >         if (isflagset(6)) {
> >                 force_rport();
> >                 fix_nated_contact();
> >                 force_rtp_proxy();
> >         };
> >         t_on_reply("1");
> >
> >         if (!t_relay()) {
> >                 if(isflagset(6)) {
> >                         unforce_rtp_proxy();
> >                 }
> >                 sl_reply_error();
> >         };
> > }
> >
> > route[4] {
> >
> >  #
> > -----------------------------------------------------------------
> >  # PSTN Handler
> >  #
> > -----------------------------------------------------------------
> >
> >  rewritehostport("202.95.149.2:5060"); # INSERT YOUR PSTN GATEWAY IP ADDRESS
> >  avp_write("i:45", "inv_timeout");
> >
> >  if (isflagset(6)) {
> >                 force_rport();
> >                 fix_nated_contact();
> >                 force_rtp_proxy();
> >                 };
> >  route(1);
> >  }
> >
> > onreply_route[1] {
> >         if (isflagset(6) &&
> > status=~"(180)|(183)|2[0-9][0-9]") {
> >                 if (!search("^Content-Length:\ +0")) {
> >                         force_rtp_proxy();
> >                 };
> >         };
> >
> >         if (nat_uac_test("1")) {
> >                 fix_nated_contact();
> >         };
> > }
> >
> > --------------------------------------------------------------------------------------------------------------------
> >
> >  If I uncomment line 54 and 56, below is the output when I run SER:
> >
> > 0(4425) set_mod_param_regex: parameter <pass_provisional_replies> not found
> > in module <tm>
> >  0(4425) parse error (54,19-20): Can't set module parameter
> >  0(4425) set_mod_param_regex: tm matches module tm
> >  0(4425) set_mod_param_regex: found <tw_append> in module tm
> > [/usr/local/lib/ser/modules/tm.so]
> >  0(4425) ERROR:tm:parse_tw_append: bad alias spec <$email>
> >  0(4425) parse error (56,19-20): Can't set module parameter
> >  0(4425) set_mod_param_regex: tm matches module
> > tm-----------------------------------------------------------------------------------------------------------------------
> >
> > If I comment line 54 and 56, below is the output:
> >
> >  0(0) ERROR:tm:fixup_t_write: unknown append name <voicemail_headers>
> >  0(0) ERROR: fix_expr : fix_actions error
> > ERROR: error -6 while trying to fix configuration
> >  0(0) MSILO: destroy module ...
> >  0(0) DEBUG: tm_shutdown : start
> >  0(0) DEBUG: unlink_timer_lists : emptying DELETE list
> >  0(0) DEBUG: tm_shutdown : emptying hash table
> >  0(0) DEBUG: tm_shutdown : releasing timers
> >  0(0) DEBUG: tm_shutdown : removing semaphores
> >  0(0) DEBUG: tm_shutdown : destroying tmcb lists
> >  0(0) DEBUG: tm_shutdown : done
> >  0(5050) shm_mem_destroy
> >  0(5050) destroying the shared memory lock
> > -----------------------------------------------------------------------------------------------------------
> > 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.
> >
> > Thanx before...
> >
> > Regards,
> > Meidiana
> >
> >
> >  ________________________________
> > Want to start your own business? Learn how on Yahoo! Small Business.
> >
> >
> > _______________________________________________
> > Serusers mailing list
> > Serusers at lists.iptel.org
> > http://lists.iptel.org/mailman/listinfo/serusers
> >
> >
> >
>



More information about the sr-users mailing list