[Serusers] incoming call routing, voicemail on busy/no answer, load balancing, call forwarding & call display

Greger V. Teigre greger at teigre.com
Wed Jun 8 10:16:57 CEST 2005


Inline.

Chris St Denis wrote:
> I am implementing a rather large scale SER server and there are some
> features I am having trouble figuring out how to implement.
>
> 1. Multi-number Incoming call routing.
> My users register with my using an id number which then needs to be
> mapped to 0 or more real phone numbers for incoming call routing, and
> 0 or 1 for outgoing call display. Is there anyway to do something
> like this using radius? The backend database of my system will be MS
> SQL server (not my choice) so radius is being used to connect to it.
> Multiple numbers will use distinctive rings by inserting an alert
> info header in with append_hf.

I'm not sure I understand what you are asking here?  You use the RADIUS AV 
pair SIP-Rpid (in <= 0.9.2) and SIP-AVP=rpid:number (CVS HEAD) to return the 
caller-id to ser and append_rpid_hf to add Remote-Party-Id to the PSTN GW. 
Ex. for Cisco
append_rpid_hf("<sip:","@localhost; user=phone>; 
party=calling;screen=yes;privacy=off")

When you say "id number", I assume you mean numbers from your internal call 
plan. AFAIK, there is currently no way to read out aliases through RADIUS 
avpairs. I believe Juha has a patch for this, but I don't know if it is 
publicly available.

> 2. Voicemail on busy and no answer and no connect to phone.
> I think busy can be detected by looking for a response code but not
> I'm quite sure how, and I think I can use fr_timer for can't connect
> to phone timeout however, how do I detect no answer with a user
> customizable timeout? I am also not certain how to send it to the
> asterisk voicemail server at this point.

Dependent on your timeframe, you may want to hold on a bit on this. The 
ONsip.org Getting Started document will cover this in a future issue.

> 3. Call forwarding
> How can I retrieve call forwarding information from a database
> (preferably using radius) and forward to it? this also leads to the
> no answer question above.

The avp_load_radius("callee") will load avpairs (SIP-AVP) returned with the 
RADIUS reply and those avpairs will be available in failure route as 
callee_name.  You then use something like this (from memory, not tested):
if (t_check_status("486")) {  # Busy
  if(avp_check("s:callee_fwdonbusy,"re/[0-9].*/g")) {
    avp_pushto("$ruri/username", "s:callee_fwdonbusy");
   append_branc();
   t_relay();
  }
}

You should have a RADIUS attribute like this returned for callee:
SIP-AVP=fwdonbusy:12345678

> 4. Load balancing
> I have gotten failover to work with failure_route and t_on_failure
> however, I want to not just fail over but also load balance between
> multiple PSTN gateways. Can this be done using SRV records?
> round-robin DNS? is there some 'random' type command?

Look at the LCR module.

> 5. Call display
> I need to be able to block call display for incoming and/or outgoing
> calls. How can this be achieved from within SER?

Short-cut, not RFC-compliant for IPtoIP: Change From header
RFC-compliant: Use UAC module.

IP-PSTN calls:
append_rpid_hf("<sip:","@localhost; user=phone>; 
party=calling;screen=yes;privacy=full")

(this is the short story, there's a long discussion on "what is privacy 
etc")

>
> How can I do these things with stable SER? And, anyone know when .9 is
> planned to be released? Is it combing soon?

Forget about stable SER, 0.9.2 is very stable and right around the corner.
g-) 




More information about the sr-users mailing list