First time here? Check out the FAQ!

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

switch case (условие): - в астериске возможно?

0
switch(${arg1})
 
{
 
case (${arg1}=0):
     
...
     
...
 
default:
     
...
 
};

В Си такое сделать можно, а вот в астериске у меня пока кроме преобразования ${arg1} во что либо, ничего не получается, а мне нужно сравнить.

спросил Apr 11 '12

Sevruga Gravatar Sevruga
109 6 1 10

обновил Apr 11 '12

Comments

Вот точно такое делается case 0. Если сравнение нужно -- заведи дополнительную переменную.

tesak89 (Apr 11 '12)edit

3 Ответа

0

в астриске в диалплане вообще ничего похожего нет.

в луа можно.

ссылка удалить спам редактировать

ответил Apr 11 '12

meral Gravatar meral flag of Ukraine
23347 24 20 177
http://pro-sip.net/

Comments

а как же switch в ael? http://www.voip-info.org/wiki/view/Asterisk+AEL как раз оно самое.

Злобный Мыш (Apr 11 '12)edit

Имелся в виду conf, я думаю

tesak89 (Apr 11 '12)edit

конечно. ael и lua это уже модули расширения вобщемто. и чем учить странный язык аел, лучше выучить луа. он хоть гдето может пригодится.

meral (Apr 11 '12)edit

Имеется в виду AEL. switch в AEL. Неужели никто не сталкивался? У меня получилось в "case" добавить проверку на длину переменной ( case ${LEN(${arg1})}: ) , а вот сравнение не могу.

И кстати у меня всё на AEL прекрасно работает.

Sevruga (Apr 11 '12)edit

потомучто нельзя просто не прочитать ничего и писать дилплан.как минмум надо прочитат extensions.conf и asteriskvariables. делается вот так $[ ${arg1} > 335 ]

meral (Apr 12 '12)edit

НЕ работает. Читал я variables. Спасибо за попытку...

Sevruga (Apr 12 '12)edit

ну. в скобки возьмите. или почитайте как выражения считаются в аел. я моуг сказть как это делается в диалплане. аел как глючную приблуду я не использую. перехожу сразу с диалплана на fastagi и модели с++ к астериску.

meral (Apr 12 '12)edit

ваш fastagi ещё большая "приблуда" и ещё вопрос что менее глючно, удобно и безопасно.

Sevruga (Apr 13 '12)edit

fastagi более безопасно. у него нет шансов повесить ядро сервера.

meral (Apr 13 '12)edit
0

Проверяйте с помощью GotoIf(), и прыгайте по диалплану куда надо. А если в AEL, то ваше условие будет примерно таким:

switch(${arg1})
 
{
 
case 0:
      App1
();
     
...;
 
default:
      App2
();
     
...
 
};

Сравнение в If:

if(${arg1}>335) {
        App1
();
}
else {
        App2
();
}
ссылка удалить спам редактировать

ответил Apr 11 '12

ro Gravatar ro flag of Russian Federation
404 1 1 11
http://rootblog.ru/

обновил Apr 12 '12

Comments

Я для примера - не удачное сравнение... надо было case (${arg1} > 335): При "gotoif" боюсь потеряю в биллинге "src" или "dst" номер.

Sevruga (Apr 11 '12)edit

Ничего вы не потеряете при gotoif, используйте его.

По поводу сравнения в case... а разве вообще так можно?

ro (Apr 11 '12)edit

можно.надо вот так делать $[ ${arg1} > 335 ]

meral (Apr 12 '12)edit

НЕ работает. Читал я variables. Спасибо за попытку...

Sevruga (Apr 12 '12)edit

Повторюсь. Используйте Gotoif и If в AEL. см. Отредактированный ответ.

ro (Apr 12 '12)edit

ну что вы зациклились на этом gotoif. Я же не спроста switch использую, у меня и pattern-ы есть. И прыгать мне из контекста не нужно, и меток я делать в контексте не хочу. И не уверен я в gtoif потому что с gotoiftime у меня были проблемы. Пришлось переделать на iftime и goto. Коме этого я не уверен с потерей номеров и контекстов, помню что с goto у меня какие-то проблемы были. Goto после себя мало информации в биллинге оставляет.

Sevruga (Apr 13 '12)edit

Посмотрите в ответе, где там прыжок из контекста? Где там вообще как таковой goto?

ro (Apr 13 '12)edit

ну так в чем проблема? добавляйте ручками информацию в билинг. астриск поддерживает люые доп записи в cdr.

meral (Apr 13 '12)edit
0

Кто мещает agi на c написать?

ссылка удалить спам редактировать

ответил Apr 11 '12

tesak89 Gravatar tesak89 flag of Russian Federation
422 25 3 16

Comments

не надо. только вот закончил такой ужас переписывать.

meral (Apr 11 '12)edit

Вообще тяжко? =)

tesak89 (Apr 11 '12)edit

Зачем AGI, когда можно использовать встроенные средства?

AGI очень уменьшает производительность системы, поэтому всегда, когда это возможно, лучше обходиться без него.

ro (Apr 11 '12)edit

AGI не использую и не установлен.

Sevruga (Apr 11 '12)edit

угу. тяжко.многопоточное прилжение с кучей goto и вообще никто четко не может сказать чтооно делает в некоторых местах. fastagi ничего не уменьшает. если вы не умеете готовить, не значит что никто не умеет.

meral (Apr 12 '12)edit

Ваш ответ

Please start posting your answer anonymously - your answer will be saved within the current session and published after you log in or create a new account. Please try to give a substantial answer, for discussions, please use comments and please do remember to vote (after you log in)!
[скрыть предварительный просмотр]

Закладки и информация

Добавить закладку

подписаться на rss ленту новостей

Статистика

Задан: Apr 11 '12

Просмотрен: 2,200 раз

Обновлен: Apr 12 '12

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