Home

Resources

Products

Developers

Main • SIPAttendedCallTransferInCluster

Content

This page documents how to configure Yate to handle a SIP attended call transfer for an unknown call leg.
If the SIP module can't find the call in its list it will try to route and execute the transfer request.

These are the steps to follow:

  • Enable REFER method handler in the SIP module
  • Enable and configure clustering
  • Enable and configure the line tracker
  • Route transfer requests using the line tracker
  • Configure cdrbuild to copy extra parameter(s)

Enable REFER method handler in the SIP module

 
; ysipchan.conf
;

[general]
transfer=yes

Enable and configure clustering

REMEMBER: It is mandatory to choose node names that can be easily resolved to an IP address.The SIP call to another cluster will fail if its name can't be resolved.
See also node name and clustering.

Set node name
 
; yate.conf
;

[general]
nodename=somehost

Enable and configure the clustering module
 
; clustering.conf
;

[general]
regexp=^[[:alnum:].-]\+$
callto=sip/sip:cluster/${called}@\0

Enable and configure the line tracker

The line tracker is used to maintain the list of call legs in the database.
The example below assumes the existence of a 'cluster' account in a database module containing a 'lines' table with the following text columns: 'nodeprefix','chan','callid','nodename'.
See also register.

 
; register.conf
;

[general]
linetracker=yes

[linetracker]
account=cluster
initquery=DELETE FROM lines WHERE nodename='${nodename}'
cdr_initialize=INSERT INTO lines(nodeprefix,chan,callid,nodename)\
VALUES('${nodeprefix}', '${chan}', '${callid}', '${nodename}')
cdr_finalize=DELETE FROM lines WHERE nodeprefix='${nodeprefix}' AND chan='${chan}'
cdr_update=UPDATE lines SET callid='${callid}' WHERE nodeprefix='${nodeprefix}' AND chan='${chan}'

Route transfer requests using the line tracker

The example below returns a cluster pickup target.

 
; register.conf
;

[general]
call.route=yes

[call.route]
account=cluster
query=SELECT nodeprefix || 'pickup/' || chan AS location FROM routes WHERE callid='${callid}' AND '${reason}'='transfer'
result=location

Configure cdrbuild to copy extra parameter(s)

We need the cdrbuild module to update and forward the callid parameter.
The callid parameter is added by the SIP module.
It is built from SIP dialog data ('Call-ID', 'From' tag, 'To' tag).

 
; cdrbuild.conf
;

[parameters]
callid=true

3 May 2010:
Yate 3.0.0 alpha 3 released. Featuring the new Jabber server and wideband audio.
Download NOW

8 March 2010:
Yate 2.2 released. Mostly bug fixes. Dahdi compatible. Latest 2 release before 3.0.

6-7 February 2010:
Yate booth at FOSDEM 2010. Free CD with Freesentral available.

2 Nov 2009:
Yate 2.1 launched. Can replace a Cisco PGW2200 to control a Cisco AS54xx.

6 Aug 2008:
Yate and OpenSIPS (former OpenSER) join to build IP based clusters.

4 Aug 2008:
Yate 2 launched.

10 Jul 2008:
Yate presentation in Germany.

Feb 2008:
Yate 2.0.0 alpha 2 released. New routing module allows sending ENUM routed or forked calls to numbers of registered phones. More...

21 Jan 2008:
Yate 2 alpha released. Major changes, new ISDN, SS7 and MGCP stack. Added analogic and RBS support.

3 September:
Yate 1.3 released. Minor fixes and improvments mainly in client and SIP.

14 August:
Yate based ISDN passive recording system released by Trisys.

16 April:
Yate 1.2 released. Added Jingle and XML support, PBX improved.

25 September:
YateAdmin 1 released.

25 September:
Yate 1.1 released. Fallback routing from a database, fax support in Linux and bug fixes. Changelog and Download availables.

11 July 2006:
O'Reilly published an article about prototyping telephony applications with Yate and Python.

10 July 2006:
Yate 1 released. Includes YIAX, YSIP, YRTP and many new features.

June 1st 2006:
New Yate website launched


EditHistoryBacklinksRecent ChangesSearch