I am struggling with call transfers.
I have connected a hardware phone with a SIP endpoint from Plivo. I can make and receive calls without any problems but call transfers using the inbuilt "TRANSFER" button on the phone dont work.
Dialling into the SIP phone from a mobile works great. Then i press transfer on the phone and the mobile hears hold music, then the sip phone dials the new number, then all the connections just seem to die. I know its trying a blind transfer (from logs on the SIP phone)
I assume i have to set it up in Plivo and the SIPTransfer XML element, but i cant see what URL gets called during that SIP transfer. Could anyone please give me a basic guide on how the process works? How much is down o the phone itself, or plivo?
Transfer works in potentially two different ways:
In this mode: A transfer B to C by requesting (REFER) B to establish a new call to C. If Plivo is B, it needs to support REFER for this to work.
A B C
<=conversation=>
----REFER------>
<-202 Accepted--
----INVITE----->
<---200 OK------
----ACK-------->
<=conversation=>
<---NOTIFY-----
---- 200 OK--->
---BYE-------->
<--- 200 OK----
In this mode: A transfer B to C by sending a REFER (or perhaps other signal) to a network application server (e.g. TAS implementating supplementary services in IMS). The TAS (as B2BUA between A & B) will be the one handling the REFER:
A TAS B C
<=conversation=><=conversation=>
----REFER------>
<-202 Accepted--
----RE-INVITE--->
<---200 OK ------
----INVITE--------------------->
<---200 OK----------------------
----ACK--------->
------------ACK---------------->
<=conversation=>
<=conversation=================>
<---NOTIFY-----
---- 200 OK--->
---BYE-------->
<--- 200 OK----
In this case, B doesn't receive any REFER, it only needs to support to receive RE-INVITE (that will switch voice connection from A to C)
Which one is used, depends on your voice provider. In simple, PBX-like environment, you can probably see 1). In network, IMS-like environments, it is likely that you will see 2).
Network based works similarly to PSTN transfer (specially billing-wise) as the transfer-target leg is usually still associated to A (and will be billed for it) and B's connection is not really affected.
While in the end-point based transfer, B just does blindly A's request (and if that has some billing implications they will be B's responsibility).
Some references are: