[Serusers] Help when make a Call Busy Forward Failed? Does 'best practice' release??

Charles Wang lazy.charles at gmail.com
Wed Feb 23 18:32:52 CET 2005


Dear ALL:

I use Paul's ser.cfg for 0.9.0 post last year and wanna implement a
call busy forward.
I think Paul is busy on testing 'Best Practice', so he doesn't answer
too much mail.

I try to make a call from UA1 to UA2, and UA2 is busy. 
So the call will forward to another Trunk 3.
Ex: UA1 ==> UA2(busy) ==(failure_route[1])==> Trunk 3

PS: UA1 and UA2 behind different NATs.


But when I watch the log, I find that miss the following log 
(diff with call from UA1 to UA2 and directly forward to Trunk 3
Ex: UA1 ==> UA2(callfwd) ==> Trunk 3

When I make a callfwd call, the call will run route[3] but not failure_route[1].
UA1==>UA2(callfwd)==>route[2]==>Trunk 3

route[2]  ====> SIP to SIP call
route[3]  ====> SIP to PSTN call
failure_route[1] ====> NoAnswer or Busy Forward logic 

And I make a fwdbusy call, the call will run route[2] then go to
failure_route[1], and return to route[3].
UA1==>UA2(fwdbusy)==>failure_route[1]==>route[3] =XXX=> Trunk 3 ????

Why does the method be failed? Do I must "end_media_session()" before
start a busy call?
How can I modify it?


My snippet ser.cfg :
--------------------------------------------------------------------------------------------------------------
route[3] {
log(1, "SER: International Call Off-Net section route(3)\n");

# All Domestic Calls Go To CISCO
if (method=="INVITE") {
if (!proxy_authorize("", "subscriber")) {
proxy_challenge("", "0");
break;
} else if (!check_from()) {
log(1, "Spoofed SIP call attempt");
sl_send_reply("403", "Use From=ID");
break;
} else if (!(is_from_local() || is_uri_host_local())) {
sl_send_reply("403", "Please register to use our service");
break;
};
# enable caller id blocking for PSTN calls
if (isflagset(25)) {
append_rpid_hf();
};
};
# SIP->PSTN calls get 45 seconds to timeout
log(1, "SER: Connecting to PSTN.....\n");
avp_write("i:45", "inv_timeout");

rewritehost("xxx.xxx.190.243");           #### A Trunking Gateway

if (uri=~"[@:](192\.168\.|10\.|172\.(1[6-9]|2[0-9]|3[0-1])\.)" &&
!search("^Route:")){
sl_send_reply("479", "We don't forward to private IP addresses");
break;
};
if (method=="INVITE" || method=="ACK") {
use_media_proxy();
};
if (isflagset(31)) {  # is voice mail?
t_on_failure("1");
};
t_on_reply("1");
if (!t_relay()) {
if (method=="INVITE" || method=="ACK") {
end_media_session();
};
sl_reply_error();
};
}
failure_route[1] {
      log(1, "SER: Failure Route section failure_route(1)\n");

      # if caller hung up then don't sent to voicemail
      if (t_check_status("487")) {
              break;
      };
      if (isflagset(26) && t_check_status("486")) {
              # forward busy is flag 26

              if (avp_pushto("$ruri", "s:fwdbusy")) {
                      log(1, "SER: fork to fwdbusy\n");
                      avp_delete("s:fwdbusy");
                      append_branch();
                      resetflag(26);

                      # test for domestic PSTN gateway
                      if (uri=~"^sip:0[0-9]{9}@") {
                      # if (avp_check("$fwd_busy_type", "eq/dom/i")) {
                              # test for domestic PSTN gateway
                              log(1, "SER: Busy Failure and Jump to
route(3)\n");
                              route(3);
                      } else if (uri=~"^sip:002[1-9][0-9]*@") {
                      # } else if (avp_check("$fwd_busy_type", "eq/int/i")) {
                              # test for international PSTN gateway
                              log(1, "SER: Busy Failure and Jump to
route(6)\n");
                              route(6);
                      } else {
                              # default to sip call
                              log(1, "SER: Busy Failure and Jump to
route(2)\n");
                              route(2);
                      };
                      break;
              };
      };

      # here we can have either voicemail __OR__ forward no answer
      if (isflagset(27) && t_check_status("408")) {
              # forward no answer is flag 27

              if (avp_db_load("$ruri/username", "s:fwdnoanswer")) {
                      avp_pushto("$ruri", "s:fwdnoanswer");
                      log(1, "SER: fork to fwdnoanswer\n");
                      avp_delete("s:fwdnoanswer");
                      append_branch();
                      resetflag(27);

                      if (uri=~"^sip:0[0-9]{9}@") {
                      # if (avp_check("$fwd_no_answer_type", "eq/dom/i")) {
                              # test for domestic PSTN gateway
                              log(1, "SER: No Answer Failure and Jump
to route(3)\n");
                              route(3);
                } else if (uri=~"^sip:002[1-9][0-9]*@") {
                      # } else if (avp_check("$fwd_no_answer_type",
"eq/int/i")) {
                              # test for international PSTN gateway
                              log(1, "SER: No Answer Failure and Jump
to route(6)\n");
                              route(6);
                      } else {
                              # default to sip call
                              log(1, "SER: No Answer Failure and Jump
to route(2)\n");
                              route(2);
                      };
                      break;
              };
      } else if (isflagset(31) && avp_pushto("$ruri", "$voicemail")) {
              avp_delete("$voicemail");
              log(1, "SER: No Answer Failure and Jump to route(4)\n");
              route(4);
              break;
      };
}


In SysLog:
------------------------------------------------------------------------------------------------------
proxydispatcher[13265]: command request
06DC9503-1938-4D9D-8628-E648F112BEC5 at 192.168.11.7
192.168.11.7:8000:audio 61.217.225.225 ser.xxx.net.tw local
xxx.xxx.190.243 remote X-PRO=20build=201082
info=from:1011 at ser.xxx.net.tw,to:9012 at ser.xxx.net.tw,fromtag:2069977709,totag:
Feb 24 00:59:21 ser proxydispatcher[13265]: domain ser.xxx.net.tw
doesn't define any mediaproxy.
Feb 24 00:59:21 ser proxydispatcher[13265]: will use default
mediaproxy for this call.
Feb 24 00:59:21 ser mediaproxy[1087]: command request
06DC9503-1938-4D9D-8628-E648F112BEC5 at 192.168.11.7
192.168.11.7:8000:audio 61.217.225.225 ser.xxx.net.tw local
xxx.xxx.190.243 remote X-PRO=20build=201082
info=from:1011 at ser.xxx.net.tw,to:9012 at ser.xxx.net.tw,fromtag:2069977709,totag:,dispatcher
Feb 24 00:59:21 ser mediaproxy[1087]: command execution time:  0.35 ms
Feb 24 00:59:21 ser proxydispatcher[13265]: forwarding to mediaproxy
on /var/run/mediaproxy.sock: got: 'xxx.xxx.190.248 35030'
Feb 24 00:59:21 ser proxydispatcher[13265]: command execution time: 311.69 ms




More information about the sr-users mailing list