At 11:08 PM 9/10/2003, Steve Dolloff wrote:
Sure. What is
the question, script? If so, that's easy: set
t_on_failure
only from within the uri==myself condition.
Unless I am mistaken, that will only help calls originating outside of
my network.
uri==myself is a destination test, it does not care about where a call
originates from.
If I place a call to 18885551212, even if it's
not a local
destination, the uri still looks like sip:18885551212@209.242.10.153 and
matches uri==myself.
There is some misunderstadning here. myself is not related to the number, it
tests domain. (like with email -- it doesn't care about 888 in 888(a)iptel.org,
it cares about if
iptel.org is owned by the server). The options are then:
- 209.242.10.153 is IP of your host, then the request belongs to the server
and uri==myself returns true; you can then do whatever you want to do with it
- if it is not your host, uri==myself will return false and you should
forward the request there
I did place this portion inside the myself check
and it still tries to transfer to vm after the time expires.
I'm puzzled -- did not you want to transfer to vm after the time expires?
This is the part that I really need help with! When
the call timer
fails, the call goes to the route[1]. How do I get it into voice mail
from that point?
see bellow, I think that should work.
This did send the syslog to the messages file, but
where are the call
transaction records?
presumably at the same place and in mysql database as well.
Here is my lastest config.
modparam("tm", "fr_inv_timer", 5 )
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="test.net"
alias="209.242.10.153"
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 (uri==myself) {
if (src_ip==66.155.138.5) {
log("gateway-originated request");
} else {
if (method=="REGISTER") {
log(1,"authenticating");
if (!www_authorize("test.net",
"subscriber")) {
www_challenge("test.net",
"0");
break;
};
save("location");
break;
};
};
if (uri=~"sip:voicemail\+@") {
log(1,"call matches 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]+@.*") {
log(1,"call matches local number");
if (!lookup("location")) {
log(1,"failed lookup");
if (method=="INVITE" || method=="ACK")
{
t_newtran();
t_reply("100", "trying -- one
moment");
if(!vm("/tmp/am_fifo","voicemail")){
t_reply("500", "SEMS
error");
YOU REALLY WANT TO HAVE THIS HERE
break; /* we are done with INVITE */
};
sl_send_reply("404", "not found"); /*
non-NIVITEs need to be made happy too */
break;
};
s
};
} 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") {
THE SAME STUFF LIKE ABOVE, YOU DON'T WANT TO t_relay ANYTHING
if(!vm("/tmp/am_fifo","voicemail")){
t_reply("500", "SEMS
error");
};
break;
#WHAT DO I PUT HERE TO TRIGGER
THE VM?
t_relay();
};
break;
};
}
--
Jiri Kuthan
http://iptel.org/~jiri/