Validation 星号IVR:如何定义in/valid键而不使用;我";分机?

Validation 星号IVR:如何定义in/valid键而不使用;我";分机?,validation,asterisk,ivr,Validation,Asterisk,Ivr,我正在使用星号IVR进行组织内调查(我们的员工打电话进来,通过按键回答一些问题)。按键会立即转储到数据库中,实际上不会连接到扩展或IVR菜单结构。现在,我在做这件事时没有任何AGI脚本,如果可能的话,我希望保持这种方式 例如: [from-internal-custom] exten => 1234,1,Answer exten => 1234,2,Wait(1) exten => 1234,3,Playback(custom/Welcome_message) exten =

我正在使用星号IVR进行组织内调查(我们的员工打电话进来,通过按键回答一些问题)。按键会立即转储到数据库中,实际上不会连接到扩展或IVR菜单结构。现在,我在做这件事时没有任何AGI脚本,如果可能的话,我希望保持这种方式

例如:

[from-internal-custom]
exten => 1234,1,Answer
exten => 1234,2,Wait(1)
exten => 1234,3,Playback(custom/Welcome_message) 
exten => 1234,4,Authenticate(0000) 
exten => 1234,5,Goto(MyCustomApp,s,1)

[MyCustomApp]
exten => s,1,Set(TIMEOUT(digit)=7)
exten => s,n,Set(TIMEOUT(response)=10)
exten => s,n,Playback(custom/QA1) 
exten => s,n,Read(QA1,beep,1,,3,5) 
exten => s,n,SayDigits(${QA1}) 
exten => s,n,MYSQL(Connect connid 127.0.0.1 DB_USER DB_PASS DB_NAME)
exten => s,n,MYSQL(Query r ${connid} Insert Into question_answers SET question_id='0', user_id=${CALLERID(num)}, result=${QA1}) 

[... more questions and finally hangup ...]
现在的问题是,如果QA1的回放指示调用者“按1表示是或按2表示否”,但用户按3,则3被转储到数据库中,这显然没有帮助。如何限制每个问题允许的密钥?我确实知道“I”扩展,但我想这不会让我有任何进展。有没有办法精确地指定哪些键是允许的,哪些键不是?最好不用把我的头缠在AGI身上?有些问题是“是/否”问题,但有些问题有更多选项(“如果x小于100按1,小于200按2,小于300按3”等等)


谢谢你的帮助

你觉得这很奇怪。只需使用GotoIF不将2以上的任何内容转储到数据库,就可以了

也可以使用waitext&Background

 exten => s,n,Background(message);play message
 exten => s,n,WaitExten(10);wait upto 10 sec for input
 exten => s,n,Noop(no input here)

 exten => 1,1,Noop(1 choice)
 exten => 2,2,Noop(2 choice)

这就是我如何完成我所需要的(例如,对于选项1、2、3和4的问题):

[……]


[…]

事实上,我做这件事有点奇怪。谢谢你把我推向正确的方向!你们有密切的联系,否则你们的联系就要用完了。或者最好使用实时存储(实时体系结构将进行连接跟踪)
exten => s,3,Playback(custom/QA1)
exten => s,4,Read(QA1,beep,1,,3,5)
exten => s,5,SayDigits(${QA1})
exten => s,6,GotoIF($[ "${QA1}" = "1" | "${QA1}" = "2" | "${QA1}" = "3"  | "${QA1}" = "4" ]?s,9:s,7)
exten => s,7,Playback(pbx-invalid)
exten => s,8,Goto(s,3)
exten => s,9,MYSQL(Connect connid 127.0.0.1 USER PASSWORD DB)
exten => s,10,MYSQL(Query r ${connid} Insert Into TABLE_NAME SET question_id='0', user_id='${CALLERID(num)}', result='${QA1}')