我有一个dialplan,其中我想要的是,如果用户按任何键,然后再次播放文件,但我不能理解如何在拨号计划中获得DTMF值。这是我的拨号方案:
[callme]
exten => s,1,Answer
exten => s,n,Playback(demo/${FILENAME1})首先,如何获得DTMF值,还有,如果用户按任何键,那么播放应该执行2 times.but,我想用dialplan管理所有这些事情。
发布于 2012-09-10 14:00:28
感谢回复我的解决方案,但我得到了这个解决方案,它为我工作......
[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)发布于 2012-09-08 21:40:09
您可以使用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)使用扩展模式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})这就是你所要求的:
[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)还可以看看背景星号应用程序3。
参考文献:
1
2
3
发布于 2012-09-09 04:37:27
您还可以使用应用程序读取。它确实会提出比一次更多请求,从而大大简化了复杂的拨号方案
[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
https://stackoverflow.com/questions/12328460
复制相似问题