Outbound Call Progress Problems [need remote answer event]


We need to setup outbound calls to validate new accounts; dial out, call gets answered, play a message, look for a DTMF 5, and we need to do it over POTS so we will be using TDM cards during development and T1 cards in production. We must also use Asterisk, Zaptel, and TDM or T-1 cards due to custom dialplan applications and specific technology requirements.

We have outbound calls initiating with an Asterisk Manager PHP script but the problem we are running into is Asterisk does not seem to be able to determine call progress; once started there doesn’t seem to be any way to tell Asterisk to wait for an answer before it begins to execute the dialplan. Yes, callprogress=yes in zapata.conf but it does not buy us anything.

In a nutshell:

dial.php initiates an outbound call to ZAP/1-1/5551211 and then passes control to the [outbound] context at Priority 1 which plays a message and waits for a DTMF digit. It’s boilerplate AMI with the “originate” command and it does initiate the call.

Priority 1 in the [outbound] context executes while the outbound call is still ringing.

What we need:

A way to look for the remote phone answer event before we move to the next priority in the dialplan context.

What we have found:

FXO ports are considered answered as soon as dialing is finished.

What we think:

We are screwed but there might be something we could do if SIP was feasible.

What we have tried that didn’t work:

AMD (Answering Machine Detect)

These did not work but only due to the fact that the dialplan in the [outbound] context was executing as soon as control was passed to Priority 1 from the dial.php script after the call was dialed.

If you have any suggestions how we can look for a remote answer event on an outbound call please post it.