[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