[Serusers] TM module error. Please help!!

Cesc cesc.santa at gmail.com
Mon Dec 11 18:32:46 CET 2006


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