Attended transfer and unattended transfer through DTMF

I want to do the following jobs through softphone DTMF

  1. When A call B --> B will get the ring --> B found that this call is for C —> B will transfer the call to C without attending A

  2. When A call B --> B will recieve the call --> B will keep A on hold --> B will talk with C --> After C’s confirmation B will transfer A’s call to C

i’ve read this can be done by featuers.conf with ## and using tT option in dialplan .

but cant understand the total process . can anyone help ?

For Blind transfer what i did in featuers.conf

[general]
parkext => 700 ; What ext. to dial to park
parkpos => 701-720 ; What extensions to park calls on
context => parkedcalls ; Which context parked calls are in

[featuremap]
blindxfer => # ; Blind transfer

and in extensions.conf

exten => _20XX,1,DIAL(SIP/${EXTEN},30,tT)

i found thats all we need to transfer a call by simply pressing # followed by a extension number (for example #2001)

but when i made #2001 the following error show

[2015-03-04 11:08:06] NOTICE[21543][C-00000003]: chan_sip.c:25759 handle_request_invite: Call from ‘2008’ (103.4.65.86:17976) to extension ‘#2001’ rejected because extension not found in context ‘from-internal’.

do i need to to do something more in dialplan ??

Your log shows that You’ve not trying to do a transfer but a Dial to the destination. Transfering a call implies, that the extension which wants to do a transfer is in an active call entering the transfer sequence as a DTMF-sequence. Then the “Escape-Sequence” as defined in features.conf (# in Your case) is recognized and the digits behind (and only those) will be used to find the target destination. In Your case I assume a simple dial as the complete sequence (#2001) is send into the dialplan.

BTW: Using # as the escape-sequence for a feature could lead You to painful scenarios if You may have calls eg to some sort of callcenter or conferencing services where You’ll need to enter sequences by DTMF (PINS a.s.o.) which usually will require the # as the stop-character. If # is used in features.conf asterisk will usually interpret the # as the feature sequence thus not passing the # to the real world. Therefor: Better use another sequence (either # followes by a digit or (even better) something starting with a *).

i did dial because nothing happen when i pressed #1 or # or whatever i defined in features.conf.

now i found it was my sip phone configuration related, X-Lite 2008 in my case. i tried with zoiper and i can transfer all using zoiper . here is the DTMF related configuration in X-Lite. i tried with all options , but nothing worked

thanks abw1oim

What is your dtmfmode and codec? The dtfmode needs to be info or inband with those, obsolete, settings, and, for inband, the codec needs to be (simplifying) ulaw or alaw. These days people normally use rfc2833.

Make sure, that the setting of the sip-client in sip.conf contains dtmfmode=auto, then it should work.

dtmfmode=auto is configured in sip.conf and codec is ulaw

i think its X-Lite softphone issue , cause when i configure same sip a/c in zoiper DTMF input is working and both blind and attendant call transfer is working…

X-Lite behaves sometimes a bit strange, however usually it works when dtmfmode is set to auto and only alaw and or ulaw are permitted on both sides (Asterisk and the softphone itself).