Hello,
during the week before freezing the code for release kamailio (openser) 1.5.0, I have added several enhancements to the dialog module. I am going to present them in several emails, as I get the documentation properly updated.
There is now a new function called dlg_bridge(From, To, outbound_proxy). It can be used to connect From and To users. The mechanism is a simple call transfer scenario.
kamailio => INVITE (hold) =>From kamailio <= 200ok <= From kamailio => REFER (To) =>From kamailio <= 200ok <= From ... From => INVITE ... =>To ... kamailio => BYE =>From kamailio <= 200ok <= From
The function can be called from configuration file or via MI interface. It opens the door for several cute features you can do with the sip server. Here are couple of usage examples: - easy integration with web/external applications for Click-To-Dial. Doing it with kamctl will look loke:
kamctl fifo dlg_bridge sip:from@kamailio.org sip:to@kamailio.org
- wake up/reminder/scheduled call - use rtimer module to run scheduled calls - you can connect your user to a media server playing a message, to a conference room or where the user sets its preference
- call again - when a user is calling a busy destination, when that destination becomes available, the server can initiate the call to connect the caller with the destination
Documentation is available at: http://kamailio.org/docs/modules/1.5.x/dialog.html
Cheers, Daniel
2009/2/4 Daniel-Constantin Mierla miconda@gmail.com:
There is now a new function called dlg_bridge(From, To, outbound_proxy). It can be used to connect From and To users. The mechanism is a simple call transfer scenario.
kamailio => INVITE (hold) =>From kamailio <= 200ok <= From kamailio => REFER (To) =>From kamailio <= 200ok <= From ... From => INVITE ... =>To ... kamailio => BYE =>From kamailio <= 200ok <= From
Hi Daniel, this seems to imitate the mechanism in RFC 3725 (Third Party Call Control). Have you considered using initial REFER? It's widely *not* supported by common phones, but it would be a first step to improve SIP world :)
Please read the thread I opened some days ago about "Initial REFER vs RFC 3725 (Third Party Call Control)" in SIP-Implementors: https://lists.cs.columbia.edu/pipermail/sip-implementors/2009-January/021485...
Of course, initial REFER wouldn't work in most of the cases, but I have a "custom" solution:
REFER initial-dialog is much cleaner than INVITE of 3PCC, but it's usually not allowed by common phones. So a PBX or SIP server implementing click2dial could try first a REFER initial-request, and in case it receives a negative response (i.e. "403 Forbidden" or "501 Not Implemented") the the server could use the 3PCC INVITE.
BTW I'm trying to convince some vendors (softphones basically) to allow initial REFER (asking permission for the phone user, of course). :)
Regards.
Hi Inaki,
On 02/04/2009 06:18 PM, Iñaki Baz Castillo wrote:
2009/2/4 Daniel-Constantin Mierla miconda@gmail.com:
There is now a new function called dlg_bridge(From, To, outbound_proxy). It can be used to connect From and To users. The mechanism is a simple call transfer scenario.
kamailio => INVITE (hold) =>From kamailio <= 200ok <= From kamailio => REFER (To) =>From kamailio <= 200ok <= From ... From => INVITE ... =>To ... kamailio => BYE =>From kamailio <= 200ok <= From
Hi Daniel, this seems to imitate the mechanism in RFC 3725 (Third Party Call Control).
right. There is a script in examples directory, that could be used to initiate via MI, however, that is heavy. This new option is one step command. Moreover you can do it from config file, e.g., you can get a sip options with some special headers and kamailio/openser will connect the users.
Have you considered using initial REFER? It's widely *not* supported by common phones, but it would be a first step to improve SIP world :)
You can do initial refer with uac_req_send(). Do you see a potential issue doing so? http://kamailio.org/docs/modules/1.5.x/uac.html#id2467913
Please read the thread I opened some days ago about "Initial REFER vs RFC 3725 (Third Party Call Control)" in SIP-Implementors: https://lists.cs.columbia.edu/pipermail/sip-implementors/2009-January/021485...
Of course, initial REFER wouldn't work in most of the cases, but I have a "custom" solution:
REFER initial-dialog is much cleaner than INVITE of 3PCC, but it's usually not allowed by common phones. So a PBX or SIP server implementing click2dial could try first a REFER initial-request, and in case it receives a negative response (i.e. "403 Forbidden" or "501 Not Implemented") the the server could use the 3PCC INVITE.
You can do it with kamailio/openser - uac module first, then dialog module.
The admin can even build a list of devices supporting first or second option.
BTW I'm trying to convince some vendors (softphones basically) to allow initial REFER (asking permission for the phone user, of course). :)
good luck!
Cheers, Daniel
El Miércoles, 4 de Febrero de 2009, Daniel-Constantin Mierla escribió:
REFER initial-dialog is much cleaner than INVITE of 3PCC, but it's usually not allowed by common phones. So a PBX or SIP server implementing click2dial could try first a REFER initial-request, and in case it receives a negative response (i.e. "403 Forbidden" or "501 Not Implemented") the the server could use the 3PCC INVITE.
You can do it with kamailio/openser - uac module first, then dialog module.
The admin can even build a list of devices supporting first or second option.
Great :)
On 02/04/2009 09:34 PM, Iñaki Baz Castillo wrote:
El Miércoles, 4 de Febrero de 2009, Daniel-Constantin Mierla escribió:
REFER initial-dialog is much cleaner than INVITE of 3PCC, but it's usually not allowed by common phones. So a PBX or SIP server implementing click2dial could try first a REFER initial-request, and in case it receives a negative response (i.e. "403 Forbidden" or "501 Not Implemented") the the server could use the 3PCC INVITE.
You can do it with kamailio/openser - uac module first, then dialog module.
The admin can even build a list of devices supporting first or second option.
Great :)
with the mention that if you want to do via MI, then the right modules are tm (for sending single request) and dialog.
Cheers, Daniel