[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