Asterisk GotoIf 比较变量存在于数组中

Asterisk GotoIf comparison variable exists in Array

目前我正在使用以下条件:

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

它是定义此语法的更好方法吗?我想将文本的值与字符串数组进行比较,但我找不到执行此操作的方法。示例:

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

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

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

FIELDNUM几乎就是你所需要的

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