[HELP] Blind transfer between Asterisk and Another PBX?


Im working on a IVR system… basically its use is for authentication, after user authenticates… then it passes the call to a call center.

All of this is working fine, except it uses [color=green]two zap channels[/color] for a single call.

Is it possible (if the telco allows it) to do a [color=green]blind transfer[/color] of this call into the callcenter, so it releases the channel once authenticated?

maybe using the [color=green]t flag[/color] in the Dial command??

Anyone has tried this??

yes it is. THere are a few ways to do this.

If it’s a SIP or PRI channel, you might be able to use Transfer() to send the call there.

Or if it’s analog and you use a feature code something like the following may be what you need-

exten => _X.,1,Flash()
exten => _X.,2,SendDTMF(${EXTEN})
exten => _X.,3,Hangup()

then use Goto(blind-xfer-out,numbertoxferto,1) and the transfer will take place.

I’ve tried to transfer a call using the Flash command, but with my configuration it doesn’t work.
I have a traditional PBX connected with a zap channel to Asterisk that acts like an IVR:

TELCO line --> traditional PBX (FXS) --> (FXO) Asterisk

From the TELCO line I can make a call to the traditional PBX and reach Asterisk, the IVR system on Asterisk answers the call and I can dial an

extension (for example 42 that is on the traditional PBX). In the asterisk dialplan I’ve set to transfer the call using Flash() like in this example:

exten => 42,1,Flash()
exten => 42,2,Background(silence/1) wait 1 second for the traditional PBX
exten => 42,3,SendDTMF(42,250)
exten => 42,4,Background(silence/1) wait 1 second for the traditional PBX
exten => 42,5,Hangup()

When I dial the extension 42, the phone 42 on the traditional PBX rings but when I answer there isn’t communication with the call from the TELCO line

and after a few seconds the line hangup.
Here you can see what happen in asterisk CLI console:

   Executing Answer("Zap/4-1", "") in new stack
-- Executing BackGround("Zap/4-1", "a_suoni_plink/menu_esterno2") in new stack
-- Playing 'a_suoni_plink/menu_esterno2' (language 'it')

== CDR updated on Zap/4-1
– Executing Flash(“Zap/4-1”, “”) in new stack
– Flashed channel Zap/4-1
– Executing BackGround(“Zap/4-1”, “silence/1”) in new stack
– Playing ‘silence/1’ (language ‘it’)
– Executing SendDTMF(“Zap/4-1”, “42”) in new stack
– Executing BackGround(“Zap/4-1”, “silence/1”) in new stack
– Playing ‘silence/1’ (language ‘it’)
– Executing Hangup(“Zap/4-1”, “”) in new stack
== Spawn extension (incoming, 42, 5) exited non-zero on ‘Zap/4-1’
– Hungup ‘Zap/4-1’

I’ve tried the following changes to the dialplan in my example but transfer still doesn’t work:

  • I’ve tried to use wait(1) instead of Background(silence/1)

  • I’ve tried without Background(silence/1) or wait(1):

exten => 42,1,Flash()
exten => 42,2,SendDTMF(42,250)
exten => 42,3,Hangup()

  • I’ve tried without the Hangup() instructions at the end

Has anyone the same problem like me and any suggestions?

I’ve solved the problem changing the flash time in the zapata.conf file,
I’ve set:

flash = 200 (the defualt was 750 ms)

in the extensions.conf the code is for example:

exten => 42,1,Flash()
exten => 42,2,SendDTMF(42,250)
exten => 42,3,Hangup()

now the transfer with flash works correctly

I’m having a different issue but it’s related to the Flash() application.
I would appreciate it if you could take a look at it: