Hi all,
I am trying to implement a very simple call forwarding use case with
SER. This use case is directly taken from a book entitled "Internet
Applications with SIP".
Here are the actors:
- SIP caller, wants to call <alice@domain>
- Proxy server of <domain>
- SIP phone which is default terminal for <alice(a)domain.com>
- Voicemail server
Here is the scenario:
0) SIP caller INVITEs <alice@domain>
1) Proxy receives INVITE
2) Proxy forwards INVITE to alice default SIP phone
3) Proxy responses 100 TRYING to SIP caller
4) SIP phone responses 100 TRYING to proxy
5) SIP phone responses 180 RINGING to proxy
6) Proxy reponses 180 RINGING to caller
7) After timeout, proxy send CANCEL to default SIP phone
8) SIP phone responses OK to proxy...
...
X) Proxy forward original INVITE to voice mail server...
The fact is that the proxy first notifies the caller that it is trying
to locate alice, listens for "180 RINGING" and forward it to the caller,
then cancels on the SIP phone side because of a timeout -- then the
proxy forwards the INVITE to the voice mail.
I have tried some configurations, but I did not see how to listen for
the 180 RINGING and forward them to the caller... is there a way to bind
a "route" to a provisional response like:
route[0]
{
...
#In case a 180 occur, we execute route[1]
t_on_provisional("180", "1");
#But we're also waiting for an OK or a timer
#event to arrive
t_on_negative("2");
t_relay();
...
}
route[1]
{
#Forwards the 180 Ringing from the SIP phone to
#the caller
t_relay();
}
BTW, I was wondering if t_on_negative is a *blocking* action ?
TIA,
-- Sebastien