Bhavik Patel
Bhavik Patel

Reputation: 613

How to get dtmf value in dialplan

I have one dialplan in which what i want is,if user press any key then play file again but i can not understand how to get dtmf value in dialplan. this is my dialplan:

[callme]  
exten => s,1,Answer 
exten => s,n,Playback(demo/${FILENAME1})

first how to get DTMF value and also if user press any key then playback should be executed 2 times.but i want to manage all this things using dialplan.

Upvotes: 5

Views: 4729

Answers (4)

Vimal Surendran
Vimal Surendran

Reputation: 21

Here is a simple example context for reading a DTMF value

[readDTMF]
exten => 113,1,Answer()
same  => n,Read(NUMBER,vm-toenternumber)
same  => n,Verbose(${NUMBER})
same  => n,SayNumber(${NUMBER})
same  => n,Hangup()

Read(variable-to-store-read-number,[file-name-to-play-before-read][,other-options])

Upvotes: 0

Bhavik Patel
Bhavik Patel

Reputation: 613

Thanks for reply me solution but i get this solution and it work for me......

[callme]
exten => s,1,Answer
exten => s,n,DumpChan()
exten => s,n,Playback(sclbrd/welcome)
exten => s,n,Wait(2)
exten => s,n,Set(i=1)
exten => s,n,While($[${i} != 3])
exten => s,n,Playback(sclbrd/${FILENAME1})
exten => s,n,Read(digit|sclbrd/press|1)
exten => s,n,Wait(1)
exten => s,n,GotoIf($["${digit}x" = "x"]?done:again)
exten => s,n(again),Wait(1)
exten => s,n,Set(i=$[${i} + 1])
exten => s,n,EndWhile()
exten => h,n(done),Wait(1)

Upvotes: 1

arheops
arheops

Reputation: 15259

You also can use application Read. It do ask more then once and result much less complex dialplan

[test]
;Read(variable[,filename[&filename2[&...]][,maxdigits[,options[,attempts[,timeout]]]]])
exten => s,1,Read(response,file_to_play,3,,4,10)
;will read into response variable,upto 3 digits and ask upto 4 times, timeout 10 sec

exten => s,2,GotoIf($[ "${response}" == "123"]?pin_ok,s,1)

Full info about Read on voip-info.org

Upvotes: 1

olivecoder
olivecoder

Reputation: 2914

You can do it using WaitExten [1]:

[callme]  
exten => s,1,Answer 
exten => s,n,Playback(demo/${FILENAME1})
exten => s,n,WaitExten(3)
exten => s,n,Goto(s,1)
exten => 1,1,Noop(user pressed 1)
exten => 1,n,Goto(however-shall-go-to-when-pressed-1)
exten => 2,1,Noop(user pressed 2)
exten => 2,n,Goto(however-shall-go-to-when-pressed-2)

Using extensions patterns [2]:

[callme]  
exten => s,1,Answer 
exten => s,n,Playback(demo/${FILENAME1})
exten => s,n,WaitExten(3)
exten => s,n,Goto(s,1)
exten => X,1,Noop(user pressed ${EXTEN})
exten => X,n,Goto(however-shall-go-to-when-pressed-${EXTEN})

here is exactly what you requested:

[callme]  
exten => s,1,Answer 
exten => s,n,Playback(demo/${FILENAME1})
exten => s,n,WaitExten(3) 
exten => s,n,NoOp(going on - no dtmf detectd)
exten => X,1,Noop(user pressed ${EXTEN})
exten => X,n,Goto(s,1)

also take a look at background asterisk application [3].

REFERENCES:

[1] http://www.voip-info.org/wiki/view/Asterisk+cmd+WaitExten

[2] http://www.voip-info.org/wiki/view/Asterisk+Dialplan+Patterns

[3] http://www.voip-info.org/wiki/view/Asterisk+cmd+BackGround

Upvotes: 2

Related Questions