[Serusers] Missed Call Return
Andreas Granig
andreas.granig at inode.info
Tue Oct 11 17:05:55 CEST 2005
Iqbal wrote:
> I never got round to tying this, just got bogged down with other
> configs, if you have any luck give me a shout, I might take a look
> towards the end of the week
I played around a little with it and got it to work with SER 0.9.x. Here
is the config snippet (assuming you use 1000 at your.domain for callbacks):
modparam("avpops", "use_domain", 1)
modparam("avpops", "avp_url", "mysql://ser:heslo@localhost/ser")
modparam("avpops", "avp_table", "dummy") # it complains if not set
modparam("avpops", "avp_aliases","callback=i:995")
route {
# the usual stuff like basic checks, NAT fixes and proxy
# authentication goes here...
# check for callback
if(uri =~ "^sip:1000@") {
# load callback-avp from callback table
if(avp_db_load("$from", "$callback/callback")) {
avp_pushto("$ruri", "$callback");
avp_db_delete("$from", "$callback/callback");
avp_delete("$callback");
} else {
# announcement that no callback available or a 4xx reply
# goes here...
}
}
# lookup aliases and location here...
# if it's a call to a local user, prepare for storing callback
t_on_failure("2");
# then do some additional stuff and t_relay() here...
}
failure_route[2] {
# set callback if callee is busy or N/A
if(t_check_status("480|486") && method == "INVITE") {
# store caller into callback table
avp_write("$from", "$callback");
avp_db_store("$ruri", "$callback/callback");
avp_delete("$callback");
}
}
And here's the callback table for MySQL:
CREATE TABLE `callback` (
`uuid` varchar(64) NOT NULL default '',
`username` varchar(100) NOT NULL default '',
`domain` varchar(128) NOT NULL default '',
`attribute` varchar(32) NOT NULL default '',
`value` varchar(128) NOT NULL default '',
`type` int(11) NOT NULL default '0',
`modified` timestamp NOT NULL default CURRENT_TIMESTAMP on update
CURRENT_TIMESTAMP,
PRIMARY KEY (`username`,`domain`,`attribute`,`value`)
);
Hth,
Andy
More information about the sr-users
mailing list