I'm working on making a system to auto dial out tenant numbers that are late with their rent and read them how much they owe. Everything is working fine when the number dialed is answered or when they send a "busy tone" when it is dialing. Unfortunately when the phone rings long enough for the answering machine (or voice mail) to pick up on its own the dial plan context and extensions do not start at all. What do I have to do in order to get the dial plan to start when the answering machine or voice mail answers? I tested this on 2 phones and both do the same thing.
Here is the code that starts the call. The script works and will dial my phone:
fputs($socket, "Action: Login\r\n");
fputs($socket, "UserName: $username\r\n");
fputs($socket, "Secret: $secret\r\n\r\n");
fputs($socket, "Command: sip show peers\r\n\r\n");
fputs($socket, "Action: Originate\r\n");
fputs($socket, "Channel: $number_out\r\n");
fputs($socket, "Context: $context\r\n");
fputs($socket, "Exten: $exten\r\n");
fputs($socket, "Priority: 1\r\n");
fputs($socket, "Timeout: 20000\r\n");
fputs($socket, "Variable: NAME=$name\r\n");
fputs($socket, "Variable: LOCATION=$location\r\n");
fputs($socket, "Variable: AMOUNT=$amount\r\n");
fputs($socket, "Variable: TENSE=$tense\r\n");
fputs($socket, "Variable: CALLDIR={$cd['calls_out_dir']}\r\n");
fputs($socket, "Variable: CALLFILE=$callFile\r\n");
fputs($socket, "Variable: ICOID=${cd['ico_id']}\r\n");
fputs($socket, "Variable: LIVEORDEVEL=html-devel\r\n");
fputs($socket, "Variable: TIMESTAMP=$timestamp\r\n");
fputs($socket, "Callerid: \"$cid_name\" <$cid_num>\r\n");
fputs($socket, "Action: Logoff\r\n\r\n");
Here is the relevant part of the dial plan:
[out-tenant-collections]
exten => s,1,Wait(1)
exten => s,2,AMD()
exten => s,3,Monitor(gsm,"${CALLDIR}${CALLFILE}",m)
exten => s,n,NOOP(AMDSTATUS = ${AMDSTATUS} DIALSTATUS = ${DIALSTATUS})
exten => s,n,GotoIf($[${AMDSTATUS}=HUMAN]?humn:mach)
exten => s,n(mach),agi(/var/www/${LIVEORDEVEL}/asterisk-programs/ivr_collections_out_response.php,${ICOID},0,${CALLDIR}${CALLFILE}.gsm,${TIMESTAMP})
exten => s,n,Wait(10)
exten => s,n(humn),agi(googletts.agi,"You ${TENSE} at ${LOCATION}. Your rent is overdue by ${AMOUNT}., If you already made a payment in full, press 1. If you already mailed payment or intend to pay within two days, press 2., If you feel$
exten => s,n,NOOP(ICOID: ${ICOID})
; the wait exten command will let you interupt the above googletts agi app and go to the extension dialed in (1,2,3 or 4) if a digit is dialed that is not recognized it will go to the i extension
exten => s,n,WaitExten()
; they entered something other than 1,2,3 or 4
exten => i,1,agi(googletts.agi,"Sorry I did not catch that.",en,,1.1)
exten => i,n,Goto(s,4)
;; They hit 1, register that they said they paid their full amount
exten => 1,1,agi(/var/www/${LIVEORDEVEL}/asterisk-programs/ivr_collections_out_response.php,${ICOID},1,${CALLDIR}${CALLFILE}.gsm,${TIMESTAMP})
exten => 1,2,agi(googletts.agi,"Thank you, we will double check our records, if the payment has been recorded you will not recieve any more calls.",en,,1.1)
exten => s,n,Hangup
;; They hit 2, register that they said they mailed a payment
exten => 2,1,agi(/var/www/${LIVEORDEVEL}/asterisk-programs/ivr_collections_out_response.php,${ICOID},2,${CALLDIR}${CALLFILE}.gsm,${TIMESTAMP})
exten => 2,2,agi(googletts.agi,"Thank you, we will await your payment.",en,,1.1)
exten => s,n,Hangup
;; They hit 3, register that they said it was an error to get this call
exten => 3,1,agi(/var/www/${LIVEORDEVEL}/asterisk-programs/ivr_collections_out_response.php,${ICOID},3,${CALLDIR}${CALLFILE}.gsm,${TIMESTAMP})
exten => 3,2,agi(googletts.agi,"Please explain why you feel you have recieved this message in error, after the beep.",en,,1.1)
exten => 3,3,Wait(1)
exten => 3,4,Playback(beep)
exten => 3,5,Wait(30)
exten => 3,n,Hangup
;; They hit 4, they want the message repeated
exten => 4,1,Goto(s,4)
;; The waitexten command timed out with no response
exten => t,1,agi(/var/www/${LIVEORDEVEL}/asterisk-programs/ivr_collections_out_response.php,${ICOID},0,${CALLDIR}${CALLFILE}.gsm,${TIMESTAMP})
exten => t,2,Hangup