Thursday, July 21, 2016

Capture DTMF Digit Pada Asterisk


Buat sahabat yang mungkin sedang belajar pemrograman Asterisk (Telephony), dan sedang mencari artikel tentang bagaimana mengcapture digit DTMF dan menyimpannya ke dalam data base.

Berikut script yang saya tempakan pada "extension.conf":

[me]
exten => t,1,Hangup
exten => h,1,Hangup
exten => i,1,Hangup

exten => 1803,1,Set(wait=2)
exten => 1803,n,Set(wait_exp=1)
exten => 1803,n(begin),Playback("1-yes-2-no")
exten => 1803,n,Set(gottries=0)
exten => 1803,n,Set(got=)
exten => 1803,n(getmore),Set(timer=${EPOCH})
exten => 1803,n,Read(get,"silence/1",,,,${wait})
exten => 1803,n,Set(timer=$[${EPOCH}-${timer}])
exten => 1803,n,GotoIf($[${timer}==$[${wait}+1]]?gotnothing:gotsomething)

exten => 1803,n(gotnothing),Set(gottries=$[${gottries}+1])
exten => 1803,n,GotoIf($[${LEN(${get})} == 0]?reallynothing:gotdigit)
exten => 1803,n(reallynothing),GotoIf($[${gottries}>1]?done:getmore)

exten => 1803,n(gotsomething),Set(gottries=0)
exten => 1803,n,GotoIf($[${LEN(${get})} == 0]?gotpound:gotdigit)
exten => 1803,n(gotpound),Set(got=${got}#)
exten => 1803,n,Goto(getmore)
exten => 1803,n(gotdigit),Set(got=${got}${get})
exten => 1803,n,Set(get=)
exten => 1803,n,Goto(getmore)

//exten => 1803,n(done),SayDigits(${got})
exten => 1803,n,AGI(dtmf_capture.php,${got})
exten => 1803,n,Goto(begin)


Script dtersebut adalah script sederhana dan silahkan dikembangkan sesuai kebutuhan.

Semoga bermanfaat.

1 comment: