User`s guide

Dialogic
®
System Release 6.0 PCI for Windows
®
Release Update, Rev 62 — January 30, 2008 196
Dialogic Corporation
Attended Transfer When REFER Is Not Globally Supported
If protecting or exposing the Transfer Target is not a concern, it is possible to complete an
attended transfer when only the Transferor and one other party support REFER. Note that
a 405 Method Not Allowed might be returned instead of the 501 Not Implemented
response.
Figure 7. SIP Attended Call Transfer, Recovery from REFER Unsupported
Attended Transfer When Contact URI Is Not Globally Routable
It is a requirement of RFC3261 that a Contact URI be globally routable even outside the
dialog. However, due to RFC2543 User Agents and some architectures (NAT/firewall
traversal, screening proxies, ALGs, etc.), this will not always be the case. As a result, the
methods of attended transfer shown in Figure 6 and Figure 7 may fail since they use the
Contact URI in the Refer-To header field. Figure 8 shows such a scenario involving a
Screening Proxy in which the transfer initially fails but succeeds on a second try. The
failure response (403 Forbidden, 404 Not Found, or a timeout after no response) is
communicated back to the Transferor. Since this may be caused by routing problems with
the Contact URI, the Transferor retries the REFER, this time with Refer-To containing the
Address of Record (AOR) of the Target (the same URI the Transferor used to reach the
Transfer Target). However, the use of the AOR URI may result in routing features being
A
(Transferring,
Transferor)
App
A
(Transferring,
Transferor)
IP CCLib
B
(Transferred,
Transferee)
non-Global Call
C
(Transferred To,
Transfer Target)
App
C
(Transferred To,
Transfer Target)
IP CCLib
GCEV_INVOKE_
XFER_REJ(CRNp)
cause = 501
gc_InitXfer(CRNs)
GCEV_REQ_XFER
(CRNs)
Transferred call between B and C offered (option whether connected or not).
Primary call between A and B dropped and released.
Secondary (consultation) call between A and C dropped and released.
Post condition:
GCEV_INVOKE_
ACCEPTED(CRNs)
(optional)
gc_InvokeXfer
(CRNp, CNRs)
GCEV_INIT_
XFER_(CRNs)
gc_AcceptXferCRNs)
GCEV_ACCEPT_
XFER(CRNs)
Primary call between A and B is connected (not shown).
Secondary (consultation) call between A and C is connected (not shown).
Pre condition:
gc_InitXfer(CRNp)
GCEV_INIT_
XFER_(CRNp)
gc_InvokeXfer
(CRNs, CNRp)
Normal attended transfer
transactions not shown.
REFER (Refer-To:sip:
TransferredTo?Replaces=secondaryCall)
501 NotImplemented
REFER (Refer-To:sip:TransferredTo?Replaces=primaryCall
202 Accepted