SER Users:
Thanks in advance for any help!
I am running ser 0.9.6 and have a relatively simple cfg file. I have only four (4) digit extensions, no PSTN, no NAT and I do not care about authorization so my config file is basically the Hello World ser.cfg with my system parameters and a few statements in route that allowed me to create standing conference rooms and an echo application with sems.
Now I need to implement call forwarding and I have been able to setup the MySQL ser usr_preferences table per chapter 10 of the 'SER - Getting Started' and the 'mySQL newbie? Problems with mySQL and SER?' documents. After adding the call forwarding functionality discussed in chapter 10 inside my config file any number dialed to a SIP device rings busy. All SIP devices register and can call the conference rooms or the echo application but they can not call each other. I will spare you my WireShark logs but can provide if that is needed.
I'm looking for trouble shooting suggestions. Is there a way to print to the std i/o from inside the cfg file? This is the first time I needed to handle the INVITE message so I've included my INVITE Message Handler and the Call Forwarding Handler that I added for this effort:
if (method=="ACK") {
route(1);
break;
} if (method=="INVITE") {
route(3);
break;
} if (method=="REGISTER") {
route(2);
break;
};
...
route[3] {
# ----------------------------------------------------------------------
# INVITE Message Handler
# ----------------------------------------------------------------------
# Note: We are using this fuction only as a hook into the
# blind call forwarding feature. Simply want to change the
# R-URI and relay the message.
if (avp_db_load("$ruri/username", "s:callfwd")) {
setflag(22);
avp_pushto("$ruri", "s:callfwd");
# Would love to do a printf here to see if this code is being hit!!!
# Wireshark show INVITE messages are being sent.
# debug/printf("\n\n****** Inside route(3) ********\n\n");
# At this point the a blind call forwarding record was found and the
# new destination was written in the R-URI.
# DEBUG: try just calling route(1).
# route(1);
# Send to Call Forwarding Handler
route(6);
break;
};
route(1);
}
route[6] {
# ----------------------------------------------------------------------
# Blind Call Forwarding Handler
#
# This must be done as a route block because sl_send_reply() cannot be
# called from the failure_route block
# ----------------------------------------------------------------------
lookup("aliases");
if (!is_uri_host_local()) {
if (!isflagset(22)) {
append_branch();
};
route(1);
break;
};
if (!lookup("location")) {
if (uri=~"^sip:[0-9]{4}@") {
route(1);
break;
};
sl_send_reply("404", "User Not Found");
break;
};
# DEBUG: There are no alias' and we are not sending calls to other
# networks. We may just need to call route(1) and not this
# function.
route(1);
}