0

家賃を滞納している入居者の番号を自動発信して、借りている金額を読み上げるシステムを作っているところです。ダイヤルした番号に応答がある場合、またはダイヤル中に「ビジー トーン」が送信された場合、すべてが正常に機能しています。残念ながら、留守番電話 (またはボイス メール) が自動的に応答するのに十分な長さの呼び出し音が鳴ると、ダイヤル プランのコンテキストと内線番号がまったく開始されません。留守番電話またはボイス メールが応答したときにダイヤル プランを開始するにはどうすればよいですか? これを2台の電話でテストしましたが、どちらも同じことをします。

通話を開始するコードは次のとおりです。スクリプトが機能し、私の電話にダイヤルします。

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");

ダイヤル プランの関連部分は次のとおりです。

[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
4

2 に答える 2

1

Turns out that you need to handle when the answering machine or voice mail picks up with a special extension. I added the following line to my dial plan. The important point to notice is the name of the extension: "failed" this is the default extension that executes when the answering machine picks up.

;; if the answering machine picks up when no user answers or sends a busy tone
exten => failed,1,Goto(s,mach)
于 2013-01-25T20:24:48.637 に答える
1

発信呼び出しを生成するために使用しているコードを投稿してください。ダイヤルコマンドの一部として、発信コールの「あなたの側」をこのコンテキストに送信していないように見えます。

于 2013-01-24T18:23:13.567 に答える