Страница 1 из 1

GotoIf - как сравнить MESSAGE(from)

Добавлено: 04 июн 2024, 14:07
Uhoh
Всем привет!

Настраиваю получение SMS через многоканальный goip-шлюз на Asterisk 21.2.0 (PJSIP). Мой вариант goip (старая железка) отправляет SMS со всех каналов на один и тот же номер, при этом в поле MESSAGE(from) можно увидеть конкретный номер линии, куда пришла SMS:

<sip:goip8-L01@192.168.0.100>
<sip:goip8-L02@192.168.0.100>
<sip:goip8-L03@192.168.0.100>
и т.д. Тут значимыми являются именно L01, L02 и т.д - т.е. номер GSM-канала, куда прилетела SMS.

Я хочу непосредственно в Dialplan, по значению MESSAGE(from) - в зависимости от того, на какой канал пришла SMS - делать определенные действия (например, перенаправлять SMS в ту или другую сторону). Идея была использовать GotoIf, типа такого:

Код: Выделить всё

same = n,GotoIf($[${MESSAGE(from)}==<sip:goip8-L01@192.168.0.100>]?8-L01)
same = n,GotoIf($[${MESSAGE(from)}==<sip:goip8-L02@192.168.0.100>]?8-L02)

Затык в том, что это дает мне ошибку:

Код: Выделить всё

[Jun  4 13:40:47] WARNING[1204][C-00000002]: ast_expr2.fl:468 ast_yyerror: ast_yyerror():  syntax error: syntax error, unexpected '<', expecting $end; Input:
<sip:goip8-L02@192.168.0.100>==<sip:goip8-L02@192.168.0.100>
^
[Jun  4 13:40:47] WARNING[1204][C-00000002]: ast_expr2.fl:472 ast_yyerror: If you have questions, please refer to https://docs.asterisk.org/Configuration/Dialplan/Variables/Channel-Variables/
Т.е. Asterisk'у не нравятся скобки <>, соответственно сравнения не происходит и GotoIf не работает так, как от него ожидалось.

Подскажите, как правильно прописать сравнение в dialplan'е ?

Заранее спасибо за ответы!

Re: GotoIf - как сравнить MESSAGE(from)

Добавлено: 04 июн 2024, 14:23
Glukinho
Во-первых, при сравнении строк внутри $[ ] нужно каждую часть оборачивать в кавычки.
Во-вторых, оператор сравнения в диалплане - это один знак равенства = , а не двойной ==

Как-то так получается:

Код: Выделить всё

same = n,GotoIf($[ "${MESSAGE(from)}" = "<sip:goip8-L01@192.168.0.100>" ]?8-L01)

Re: GotoIf - как сравнить MESSAGE(from)

Добавлено: 04 июн 2024, 14:52
Uhoh
Йесссс! Работает, спасибо большое!
Кучу вариантов перепробовал, а самый очевидный как-то от меня ускользнул... :)

Спасибо еще раз!!!