Automated attendee transfer


I running Asterisk 13 and I’m trying to build functionality which will work in this way:

  1. Customer calls
  2. Asterisk answers and play welcome message asking for unique PIN code.
  3. customers type unique code which is validated and hears the message that he will be connected with an engineer in 30 seconds and waits.
  4. While the caller is waiting for 30 seconds Asterisk dials engineer and plays a message that customer will be transferred to him in 30 seconds
    ( this gives time for an engineer to wake up if he is called in the middle of the night and he is being wakeup).
  5. The transfer is being completed.

So I have part with validating code has done using ODBC. I don’t know how to automatically transfer the caller to engineer with delay and message being played to both (steps 3 to 5).

Please help :slight_smile:

Thank you very much for any replies and sorry for my language English is not my native tongue.

Many thanks,

greg you havent shared any dialplan or the logs associated with an attempt

im not sure how we can help

what have you tried and what about what you tried didnt work ?

The Dial application provides various options[1]. You can have it play music on hold to the calling party while they wait, and upon answer the called party can be played an announcement. You can also use the timeout functionality to terminate the attempt after a period of time.


This task can be completed using authenticate() app and queue()

Fist of all,

All your answers are much appreciated. Thank you very much.

jcolp: I followed your suggestion and I found that I can do it with Dial application. Much appreciated.

This is my dial plan which works for me:

exten => 19001,1,NoOP(“Start Routine”)
same => n,Set(fattempts=0)
same => n,NoOP(“Collect PIN Code”)
same => n,Read(pin,Welcome,4,)
same => n(startagain),GotoIf([{fattempts} < 3]?continue:endit)
same => n(continue),GotoIf(["{ODBC_CheckPIN({pin})}" = "1"]?valid:notvalid) same => n(valid),GotoIfTime(7:00-18:00,mon-fri,*,*?open:close) same => n(open),Playback(PinCodeconfirmed) same => n(open),Goto(Voip,6300,1) same => n,Hangup() same => n(close),Playback(PinCodeconfirmed) same => n,Set(CALLERID(all)=“HomeCompany” <123456789>) same => n,Dial(SIP/Trunk/0987654321,45,tTm(plform)A(Welcome)) same => n,Hangup() same => n(notvalid),NoOP("NO Valid PIN") same => n,Set(fattempts= [${fattempts} + 1])
same => n,Playback(Invalidpincode)
same => n,Read(pin,4,)
same => n,Goto(startagain)
same => n(endit),Hangup()

You guys probably would do it much better so any suggestions are welcome or if you see any problems which I did not mage to find during my testing yet please poin it to me.

Many Thanks

This topic was automatically closed 30 days after the last reply. New replies are no longer allowed.