Как написать условие перехода GotoIf() в Asterisk с использованием регулярных выражений?
Добрый день!
В плане набора asterisk необходимо написать условие, которое перенаправляет на одну метку, если все условия выполнены, или на другую, если хотя бы одно ложно.
С DSTREC, SRCREC и CIDLENGTH вопросов нет, эти значения беруться или из базы, или формируются в процессе обработки и статичны, так скажем. А вот в той части значения канала (${CHANNEL:0:8}), ограниченное мной 8-мью символами, могут меняться последние 4.
Первые 4 символа должны быть равны "SIP/", а последние 4 - это только цифры, при чём первая из которых не выходит из диапазона 0 - 9, а 3 последующие - от 0 до 9.
Я попытался написать сам, но чувствую, что получилась какая-то дичь.
при чём первая из которых не выходит из диапазона 0 - 9, а 3 последующие - от 0 до 9.
$[${REGEX("^SIP\/[0-9]{4}" ${CHANNEL:0:8})}]
если все-таки первая из которых не выходит из диапазона 1 - 9, то $[${REGEX("^SIP\/[1-9][0-9]{3}" ${CHANNEL:0:8})}]
Так не надо делать: ${REGEX(...) = "1"}, достаточно просто ${REGEX(...)}
core show function REGEX:
Return '1' on regular expression match or '0' otherwise