Asterisk GotoIf比较变量存在于Array中

时间:2017-01-18 05:56:21

标签: asterisk

目前我使用以下条件:

exten => 1237,n,GotoIf($[ $[ "${text}" = "yes" ] | $[ "${text}" = "ok" ]  
| $[ "${text}" = "perfect" ] ]?interest:retry) 

这是一种更好的方法来定义这种语法,我想比较文本的值与字符串数组,但我无法找到一种方法来做到这一点。例如:

exten => 1237,n,GotoIf($[ $[ "${text}" in ARRAY("yes","ok","perfect") ]  ]?interest:retry) 

2 个答案:

答案 0 :(得分:2)

我不知道Asterisk中的in运算符,但您可以使用正则表达式匹配:

GotoIf($[ "${text}" =~ "^(yes|no|perfect)$"]?interest:retry)

答案 1 :(得分:0)

FIELDNUM几乎是你需要的

exten = 1237,n,Set(STRARRAY='yes-ok-perfect')
exten = 1237,n,GotoIF($[ ${FIELDNUM(STRARRAY,-,${text})} > 0 ]?interest:retry)