Пожалуйста, войдите здесь. Часто задаваемые вопросы О нас
Задайте Ваш вопрос

История изменений [назад]

нажмите, чтобы скрыть/показать версии 1
изначальная версия
редактировать

спросил 2016-12-05 10:10:46 +0400

zahidov.m@bk.ru Gravatar zahidov.m@bk.ru

asterisk 14 gotoif всегда возвращает false

Доброе время суток!

Возникла проблема при настройке диалплана, а точнее с GotoIf.

Вот кусочек диалплана:

exten => s,1,Set(home="/home/menu")

exten => s,n,Set(foo=${CURL(http://myhost.com/?act=check&subscriber=${CALLERID(num)})})

exten => s,n,GotoIf($["${foo}" = "NO"]?playwithoutreg)

exten => s,n,Background(${home}/hellowithreg)

exten => s,n,Goto(menunext,s,1)

exten => s,n(playwithoutreg),Goto(menunoreg,s,1)

Объясню что означает:

  1. Curl-делает запрос на хост, который проверяет на существование номера телефона и возвращает ответ YES(существует)|NO(не существует)

  2. GotoIf-сверяет значение переменного и при совпадении прыгает в соответствующий шаг.

Что происходит?

GotoIf всегда возвращает 0 не зависимо от ответа, хоть YES, хоть NO.

вот логи:

-- Executing [s@menu:1] Set("SIP/08880-00000001", "home="/home/menu"") in new stack

-- Executing [s@menu:2] Set("SIP/08880-00000001", **"foo=YES"**) in new stack

-- Executing [s@menu:3] **GotoIf("SIP/08880-00000001", "0?playwithoutreg")** in new stack

-- Executing [s@menu:4] BackGround("SIP/08880-00000001", ""/home/menu"/hello_with_reg") in new stack

-- <SIP/08880-00000001> Playing '/home/menu/hello_with_reg.slin' (language 'ru')

-- Executing [s@menu:1] Set("SIP/08880-00000002", "home="/home/menu"") in new stack

-- Executing [s@menu:2] Set("SIP/08880-00000002", **"foo=NO"**) in new stack

-- Executing [s@menu:3] **GotoIf("SIP/08880-00000002", "0?playwithoutreg")** in new stack

-- Executing [s@menu:4] BackGround("SIP/08880-00000002", ""/home/menu"/hello_with_reg") in new stack

-- <SIP/08880-00000002> Playing '/home/menu/hello_with_reg.slin' (language 'ru')

Это баги Asterisk-а или у меня руки не оттуда ростут?

asterisk 14 gotoif всегда возвращает false

Доброе время суток!

Возникла проблема при настройке диалплана, а точнее с GotoIf.

Вот кусочек диалплана:

exten => s,1,Set(home="/home/menu")

exten => s,n,Set(foo=${CURL(http://myhost.com/?act=check&subscriber=${CALLERID(num)})})

exten => s,n,GotoIf($["${foo}" = "NO"]?playwithoutreg)

exten => s,n,Background(${home}/hellowithreg)

exten => s,n,Goto(menunext,s,1)

exten => s,n(playwithoutreg),Goto(menunoreg,s,1)

Объясню что означает:

  1. Curl-делает запрос на хост, который проверяет на существование номера телефона и возвращает ответ YES(существует)|NO(не существует)

  2. GotoIf-сверяет значение переменного и при совпадении прыгает в соответствующий шаг.

Что происходит?

GotoIf всегда возвращает 0 не зависимо от ответа, хоть YES, хоть NO.

вот логи:

-- Executing [s@menu:1] Set("SIP/08880-00000001", "home="/home/menu"") in new stack

-- Executing [s@menu:2] Set("SIP/08880-00000001", **"foo=YES"**) "foo=YES") in new stack

-- Executing [s@menu:3] **GotoIf("SIP/08880-00000001", "0?playwithoutreg")** GotoIf("SIP/08880-00000001", "0?playwithoutreg") in new stack

-- Executing [s@menu:4] BackGround("SIP/08880-00000001", ""/home/menu"/hello_with_reg") in new stack

-- <SIP/08880-00000001> Playing '/home/menu/hello_with_reg.slin' (language 'ru')

-- Executing [s@menu:1] Set("SIP/08880-00000002", "home="/home/menu"") in new stack

-- Executing [s@menu:2] Set("SIP/08880-00000002", **"foo=NO"**) "foo=NO") in new stack

-- Executing [s@menu:3] **GotoIf("SIP/08880-00000002", "0?playwithoutreg")** GotoIf("SIP/08880-00000002", "0?playwithoutreg") in new stack

-- Executing [s@menu:4] BackGround("SIP/08880-00000002", ""/home/menu"/hello_with_reg") in new stack

-- <SIP/08880-00000002> Playing '/home/menu/hello_with_reg.slin' (language 'ru')

Это баги Asterisk-а или у меня руки не оттуда ростут?

asterisk 14 gotoif всегда возвращает false

Доброе время суток!

Возникла проблема при настройке диалплана, а точнее с GotoIf.

Вот кусочек диалплана:

exten => s,1,Set(home="/home/menu")

exten => s,n,Set(foo=${CURL(http://myhost.com/?act=check&subscriber=${CALLERID(num)})})

exten => s,1,Set(home="/home/menu")
exten => s,n,Set(foo=${CURL(http://myhost.com/?act=check&subscriber=${CALLERID(num)})})
exten => s,n,GotoIf($["${foo}" = "NO"]?playwithoutreg)

exten => s,n,Background(${home}/hellowithreg)

exten => s,n,Goto(menunext,s,1)

exten => s,n(playwithoutreg),Goto(menunoreg,s,1)

"NO"]?playwithoutreg) exten => s,n,Background(${home}/hello_with_reg) exten => s,n,Goto(menunext,s,1) exten => s,n(playwithoutreg),Goto(menunoreg,s,1)

Объясню что означает:

  1. Curl-делает запрос на хост, который проверяет на существование номера телефона и возвращает ответ YES(существует)|NO(не существует)

  2. GotoIf-сверяет значение переменного и при совпадении прыгает в соответствующий шаг.

Что происходит?

GotoIf всегда возвращает 0 не зависимо от ответа, хоть YES, хоть NO.

вот логи:

-- Executing [s@menu:1] Set("SIP/08880-00000001", "home="/home/menu"") in new stack

stack
-- Executing [s@menu:2] Set("SIP/08880-00000001", "foo=YES") in new stack
 -- Executing [s@menu:3] GotoIf("SIP/08880-00000001", "0?playwithoutreg") in new stack
 -- Executing [s@menu:4] BackGround("SIP/08880-00000001", ""/home/menu"/hello_with_reg") in new stack
 -- <SIP/08880-00000001> Playing '/home/menu/hello_with_reg.slin' (language 'ru')

-- Executing [s@menu:1] Set("SIP/08880-00000002", "home="/home/menu"") in new stack

stack
-- Executing [s@menu:2] Set("SIP/08880-00000002", "foo=NO") in new stack
 -- Executing [s@menu:3] GotoIf("SIP/08880-00000002", "0?playwithoutreg") in new stack
 -- Executing [s@menu:4] BackGround("SIP/08880-00000002", ""/home/menu"/hello_with_reg") in new stack
 -- <SIP/08880-00000002> Playing '/home/menu/hello_with_reg.slin' (language 'ru')

Это баги Asterisk-а или у меня руки не оттуда ростут?

Проект компании "АТС Дизайн"
Asterisk® и Digium® являются зарегистрированными торговыми марками компании Digium, Inc., США.
IP АТС Asterisk распространяется под лицензией GNU GPL.