I instigate the call using the API over HTTP and calling a context in extensions_custom. I’m using a hacked version of Teleyapper. It looks something like this:
fputs ($fp, “Action: Originate\r\n”);
fputs ($fp, “Channel: $number\r\n”);
fputs ($fp, “Callerid: xxxxxxxxxx\r\n”);
fputs ($fp, “MaxRetries: 1\r\n”);
fputs ($fp, “RetryTime: 60\r\n”);
fputs ($fp, “WaitTime: 120\r\n”);
fputs ($fp, “Context: broadcast\r\n”);
fputs ($fp, “Extension: s\r\n”);
fputs ($fp, “Data: \r\n”);
fputs ($fp, “Variable: ID=$queueid\r\n”);
fputs ($fp, “Variable: DIAL=$number\r\n”);
fputs ($fp, “Variable: FILE=$file\r\n”);
fputs ($fp, “Data: \r\n”);
fputs ($fp, “Priority: 1\r\n\r\n”);
[broadcast]
exten => s,1,Answer
;exten => s,2,Wait(2)
;exten => s,3,Playback(system-status-msg)
;exten => s,3,Wait(2)
exten => s,2,AMD(3500|1500|300|5000|120|50|5|256)
exten => s,3,GotoIf($["${AMDSTATUS}" = “AMD_MACHINE”]?s,6)
exten => s,4,NoOp(AMD Results: Status: ${AMDSTATUS} Cause: ${AMDCAUSE}
exten => s,5,Goto(talk,1)
exten => s,6,WaitForSilence(2000,1)
exten => s,7,Playback(customermessages/${FILE})
exten => s,8,Set(STATUS=‘AnsMachine’|g)
exten => s,9,DeadAGI(teleyapper2.php|${ID}|${STATUS}|${DIAL})
exten => s,10,Hangup
exten => t,1,Goto(talk,1)
exten => i,1,Goto(talk,1)
exten => o,1,Goto(talk,1)
exten => h,1,NoOp(Callee hung up call before menu. Dialed: ${DIAL} ID: ${ID}.)
exten => h,2,Set(STATUS=‘EarlyHangup’|g)
exten => h,3,DeadAGI(teleyapper2.php|${ID}|${STATUS}|${DIAL})
exten => h,4,Hangup
exten => talk,1,Playback(customermessages/${FILE})
exten => talk,2,Goto(broadcast2,s,1)