I'm sure this is pretty straightforward to some of you, but I could use some help with a few issues if someone has the time. Below is my config file. This is running on RedHat 9.
I am having numerous problems.
1) Having issues with correctly increasing the number of children. If I increase it, it fails because it can't connect with mysql. I have tried increasing the number of connections in mysql in the my.cnf file, but it seems to cause even more problems.
2) I only want the call to fail to route 2 for calls that terminate in my network. I don't want calls leaving the network to try to go to voicemail after the time hits.
3) I can't seem to figure out how to format the rewrite/append/etc to trigger the voicemail call. Maybe I don't understand the routing loop. Can someone take a look at the config and give me some ideas?
4) The append to the null/parallel destination that allows the trigger to activate I don't understand at all. Why does it need to be there? Where should it be pointed to?
5) I'm not seeing the activity/routing logs going anywhere. If I run ser manually, I see information on the stderr, but nothing in the database or logs in terms of the connections.
I would really appreciate any help. I have other questions that aren't related to the configuration file, so I will save those to amuse people later.
Thanks,
Stephen
debug = 7 log_stderror=yes check_via=no dns=no rev_dns=no fifo="/tmp/ser_fifo" children=4
# ------------------ module loading ---------------------------------- # modules not listed here for brevity
modparam("tm", "fr_inv_timer", 15 ) modparam("tm", "fr_timer", 10 ) modparam("usrloc", "db_mode", 2) #modparam("auth_db", "db_url","sql://ser:heslo@localhost/ser") modparam("auth_db", "calculate_ha1", yes) modparam("auth_db", "password_column", "password") modparam("voicemail", "db_url","sql://ser:heslo@localhost/ser")
modparam("rr", "enable_full_lr", 1) # -- acc params -- modparam("acc", "report_ack", 1) modparam("acc", "log_level", 1) modparam("acc", "log_flag", 1 ) modparam("acc", "db_flag", 1 ) modparam("acc", "log_missed_flag", 3 ) modparam("acc", "db_missed_flag", 3 ) # report to syslog: From, i-uri, status, digest id modparam("acc", "log_fmt", "fisu" )
# ------------------------- request routing logic -------------------
alias="209.242.10.153" alias="test.net"
route{
if (!mf_process_maxfwd_header("10")) { log("LOG: Too many hops\n"); sl_send_reply("483","Too Many Hops"); break; }; if (len_gt( max_len )) { sl_send_reply("513", "Wow -- Message too large"); break; };
if (loose_route()) { t_relay(); break; }; if (method=="INVITE") {record_route();};
# account completed transactions via syslog setflag(1);
if (src_ip==66.155.138.5) { log("gateway-originated request"); } else { if (uri==myself) { if (method=="REGISTER") { if (!www_authorize("test.net", "subscriber")) { www_challenge("test.net", "0"); break; }; save("location"); break; }; }; }; if (uri=~"sip:voicemail+@") { t_newtran(); t_reply("100", "trying -- just a second"); if (!vm("/tmp/am_fifo","announcement")) { t_reply("500", "SEMS error"); }; break; };
if (uri=~"sip:2[0-9]+@.*") { # JUST FOR TESTING USING 2 AS LOCAL PREFIX if (!lookup("location")) { if (method=="INVITE" || method=="ACK") { t_newtran(); t_reply("100", "trying -- just a second"); if(!vm("/tmp/am_fifo","voicemail")){
t_reply("500", "SEMS error"); }; break; }; break; }; # WHAT SHOULD THIS APPEND BRANCH ACTUALLY POINT TO? # WITHOUT IT, THE CALL GOES DIRECTLY TO VOICEMAIL append_branch("sip:stall@209.242.10.153:9"); } else { rewritehostport("66.155.138.5:5060"); };
t_on_failure("1");
if (!t_relay()) { sl_reply_error(); break; }; }
failure_route[1]{ log(1,"call sent to voicemail due to no answer\n"); if (uri=~"sip:2[0-9]+@.*") { if (method=="INVITE" || method=="ACK") { append_branch("sip:voicemail@209.242.10.153"); t_relay(); }; break; }; }
At 10:26 PM 9/9/2003, Steve Dolloff wrote:
This works great if the user is offline. Is there anyway for voicemail to pick up after a certain time period or after a certain number of rings?
Roughly yes. The closest example is at http://www.iptel.org/ser/doc/seruser/seruser.html#REPLYPROCESSING
There is no number of rings in SIP -- there is the invite_fr timeout.
-Jiri
At 07:29 PM 9/10/2003, Steve Dolloff wrote:
I'm sure this is pretty straightforward to some of you, but I could use some help with a few issues if someone has the time. Below is my config file. This is running on RedHat 9.
I am having numerous problems.
- Having issues with correctly increasing the number of children. If I
increase it, it fails because it can't connect with mysql. I have tried increasing the number of connections in mysql in the my.cnf file, but it seems to cause even more problems.
Number of mysql connections grows linearly with number of children. We will certainly put effort in keeping the number of connections lower by reusing them, but it is not outthere yet. Keep children count low (very wise advice which will save you lot of money in general :)) or mysql connections high.
What problems do you have with high number of connections in my.cnf?
- I only want the call to fail to route 2 for calls that terminate in
my network. I don't want calls leaving the network to try to go to voicemail after the time hits.
Sure. What is the question, script? If so, that's easy: set t_on_failure only from within the uri==myself condition.
Actually, most of your script should be within this condition. If a request for other domain comes (i.e., uri==msyelf does not hold), you just forward using t_relay and that's it. All the script processing, uri rewriting, redirection makes only sense if you "own" the request.
For example, now if someone from your domain calls some other domain's sip:voicemail+foo@somewhereelse.com, you will mistakenly process the request too with your current script. That's called domain hijacking :) So you want to have all the voicemail stuff, failure handling, etc. inside (uri==myself).
- I can't seem to figure out how to format the rewrite/append/etc to
trigger the voicemail call. Maybe I don't understand the routing loop. Can someone take a look at the config and give me some ideas?
The "user-offline" part is I guess ok. There are some nits though: - you ignore non-VoIP messages to off-line users -- is an instant MESSAGE comes, you just break. you should indicate the status sip-wise instead. Use sl_send_reply("404","not found"); - I don't know what the append_branch in your script is good for, but I don't think you need it.
- The append to the null/parallel destination that allows the trigger
to activate I don't understand at all. Why does it need to be there? Where should it be pointed to?
append_branch does not need be there where you inserted it.
- I'm not seeing the activity/routing logs going anywhere. If I run
ser manually, I see information on the stderr, but nothing in the database or logs in terms of the connections.
If you start manually, force messages and see them on your console, then everything is all right, isn't it? If you start from an init script and keep forcing use of stderr, you will obviously will not see anything -- you need to turn stderr off and watch syslog output.
Let us know as you get to the next iteration.
-Jiri