Hello.
I am having configuration issues with ser when dealing with users who
have voicemail and desire a timeout after a set number of rings, and
those who don't have voicemail and desire a very long ring count. Here
is the example:
Phone A has voicemail
Phone B does not have voicemail
Works:
Phone B calls A. A does not answer. After a set period of time
(fr_inv_timer=24), the user is proxy'ed to voicemail.
Doesn't work:
Phone A calls B. B does not answer. After a set period of time, the
proxy responds with a 408 and the transaction is CANCELed .
The example above is a case when I just want to proxy the INVITE to a
user without setting a timer, stateless. I would consider sending the
original INVITE using forward() for users without voicemail, but the
parameters require a port and IP, of which exists in ser.location and I
may fork to multiple contacts for the user.
In addition, when responding with a 408, how does the proxy
differentiate between a timed out INVITE (after a set of retries) and a
transactional timeout (that had a provisional response)?
Looking forward to the Paris show (and the food and the wine and... :->
)
Regards,
Chris
modparam("tm", "fr_timer", 12)
modparam("tm", "fr_inv_timer", 24)
modparam("tm", "wt_timer", 180)
route[7]
{
setflag(5);
if ( is_user_in("Request-URI", "mail" ) )
{
t_on_failure("5"); /*_media_server_info_*/
}
else
{
log( "------------------------------------>route7 \n");
t_on_failure("1"); /*_media_server_info_*/
}
}
failure_route[5]
{
if ( is_user_in("Request-URI", "mail" ) && (
t_check_status( "486"
) || t_check_status( "600" ) || t_check_status( "408" ) ) )
{
rewritehostport("66.115.232.216:5060");
/*_media_server_info_*/
append_branch();
if( t_check_status( "486" ) || t_check_status( "600" ) )
{
append_urihf("Diversion: ", " ; reason=user-busy
\r\n");
}
else if( t_check_status( "408" ) )
{
append_urihf("Diversion: ", " ; reason=unavailable
\r\n");
}
append_hf("P-hint: Forwarding to Voicemail Media Server\n");
t_relay();
}
else if ( is_user_in("Request-URI", "mail" ) )
{
t_relay();
}
else if ( !is_user_in("Request-URI", "mail" ) ||
t_check_status(
"408" ) )
{
log( "------------------------------------>failureroute5
conditional \n");
t_on_failure("1");;
}
log( "------------------------------------>failureroute5
\n");
break ;
}
failure_route[ 1 ]
{
if( t_check_status( "408" ) || t_check_status( "400" ) )
{
log( "------------------------------------>failureroute1
\n");
append_branch( );
t_on_failure("1");
}
t_relay();
break;
}