Vonage Call Transfer

Hello everyone,

I am not sure how specifically to Vonage this question relates.

This is our desired setup: We have three Vonage softphone accounts in addition to the main VTA-attached account. One softphone account is to be used as our incoming line, and that is where Asterisk is connected; call this Line A. We would like Asterisk to act as an auto-attendant, giving users the choice to be transferred to Bob (Line B: softphone), Colin (Line C: softphone), or Dave (Line D: VTA-adapted). Outgoing calls would be made directly using the softphones (or VTA), not through Asterisk. Once the call has been transferred, we would no longer like Asterisk to be “in the loop”, to save bandwidth and Vonage minutes.

So, as an example, Edgar calls in to Line A. Upon hearing the greeting, he presses ‘2’ to be transferred to Colin (Line C). Ideally, Edgar and Colin would then be directly connected, and Asterisk would be completely idle.

If it were not Asterisk, but a real live user answering Line A, such a user could use Vonage’s Call Transfer feature (‘Flash’, ‘#’, ‘90’) to accomplish this neatly. Is it possible with Asterisk?

Currently, everything works as desired, except all call data seems to still be going through Asterisk. For instance, at any time during a call, one can press ‘#’ and have Asterisk transfer the call again (again through Asterisk), which shows up in the logs etc. This makes a modicum of sense, because I am using the Dial(…) application. Yet, I cannot seem to get the Transfer(…) application to work. If anyone has a suggestion as to Transfer(…) syntax that might work, please offer it.

The pertinent current configuration info is as follows (*'s mean I’ve censored something):


; Answer the phone, Play greeting, Wait another few seconds for input
exten => 1613216****,1,Wait(2)
exten => 1613216****,n,Answer()
exten => 1613216****,n,Wait(2)
exten => 1613216****,n,Background(custom/greeting)
exten => 1613216****,n,WaitExten(3)

[... some error-trapping, etc...]

; Dial Customer Service (all phones)
exten => 1,1,Dial(SIP/myaccount/613482****&SIP/myaccount/613216****,,tTr)
exten => 1,n,Hangup()

; Dial Sales
exten => 2,1,Dial(SIP/myaccount/613216****,,tTr)
exten => 2,n,Hangup()

[... and so on...]



Can any experts shed some light on this situation for me? It would be most appreciated! Thank you in advance,


If you Dial() then you are making another call leg…

try Transfer(). It may do what you want it to do.

Changing the Dial(…) application to Transfer(…) works about the same as before, meaning that the Asterisk machine still shows considerable network bandwidth usage while the call is in progress. This thereby costs us in performance, bandwidth, and most importantly, precious minutes. I would like it to transfer the call directly and wipe its hands of it, similar to if a real live person were to answer the phone and transfer via Vonage’s Call Transfer feature.

Is this possible with Asterisk?

ah well you will be charged outgoing minutes no matter what. Even on a normal vonage phone account, if you do the flash-#90 thing you will be charged minutes for the second call leg.
This is because you can’t just like reroute the PSTN and have the call re-initiate to the second destination- you have to set up a second call to the destination and then plug the two calls into each other. Somebody will have to do this, be it Vonage or your * server.

Try just Transfer(desinationnumber), that may at least let you get * out of the call…

more info on Transfer()