[asterisk-users] Transfer rights for attended transfers

jg webaccounts at jgoettgens.de
Mon Sep 16 07:33:27 CDT 2013


Recently I asked a question about possibly unwanted calls due to extended transfer rights after 
attended transfers using DTMF sequences 
(http://lists.digium.com/pipermail/asterisk-users/2013-September/280536.html). Obviously, 
transferring with SIP INVITEs (hold + transfer keys) is not immediately affected by the this, 
but it is not always possible to enforce this.

Meanwhile I have changed the dial options in my dial plans in such a way that they are based on 
the origin of the participating channels regardless of the number of transfers and the local 
intermediate contexts.

I think it would be easier to handle the rights with the device configuration and not at the 
switching points in the dialplan. Depending on the origin of the call the caller or callee or 
both should have transfer rights. For a call from outside (e.g. via an ISDN channel) only the 
callee should have transfer rights. For internal calls typically both parties are allowed to 
transfer and for calls to the outside only the caller should have the rights. At least this is 
the setup I typically use. A simple flag "allowtransfer", like for the old sip channel, should 
resolve this. I think it is the devices that matter when creating a bridge and not the current 
context in the dialplan.

This is an example of what is currently happening for an attended transfer when DTMF sequences 
are allowed

Call from outside:

[from-pstn]
exten => _X.,1,Dial(SIP/....,,...t...)    ; fine -- only callee can transfer

Attended transfer (Asterisk uses a Local channel to connect):

[from-internal]
exten => 1234,1,Dial(Local/....,,Tt...)    ; bad -- from here on the outside caller can do 
whatever he wants

in this case it should be

exten => 1234,1,Dial(Local/....,,t...)

Call from inside:

[from-internal]
; e.g.
exten => _X.,1,Dial(DAHDI/r2/${FILTER(0-9,${EXTEN})},,...T...)  ; fine -- only caller can transfer

Atx:

[from-internal]
exten => 1234,1,Dial(Local/....,,Tt...)    ; bad again

in this case it should be

exten => 1234,1,Dial(Local/....,,T...)

If both parties are local then "exten => 1234,1,Dial(....,,Tt...)" is fine.

I would like to hear comments about this, even if I have overlooked something that makes me look 
stupid.

One last remark. It may not be easy to explore this when using 2 Asterisk systems as the DTMF 
sequences are first caught by the originating system (but the entries in features.conf can be 
deleted).

jg



More information about the asterisk-users mailing list