VIDEOCHAT  ::   FAQ  ::   Поиск  ::   Регистрация  ::   Вход

Перевод макроса в ael

Новичком считается только что прочитавший «Астериск - будущее телефонии»
http://asterisk.ru/knowledgebase/books
и пытающийся сделать большее

Модераторы: april22, Zavr2008

Ответить
etagi
Сообщения: 2
Зарегистрирован: 04 май 2016, 14:14

Перевод макроса в ael

Сообщение etagi »

Всем привет! Нашел в интернете подходящий для моих задач макрос и пытаюсь его перевести в ael формат. Столкнулся с проблемой возврата в самое начало макроса.

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

[macro-gsm]
exten => s,1(start),Set(ARG2=$[${ARG2} + 1]); 
same => n,GotoIf($[${ARG2}>=9005]?sip:repeat);
same => n(repeat),MYSQL(Connect connid localhost asterisk password asterisk); 
same => n,MYSQL(Query resultid ${connid} SELECT SUM(`billsec`) FROM `cdr` WHERE `dstchannel` LIKE '%${ARG2}%' AND `calldate` BETWEEN DATE_FORMAT(NOW(),'%Y-%m-01') AND LAST_DAY(NOW()) + INTERVAL 1 DAY) ;
same => n,MYSQL(Fetch fetchid ${resultid} duration) ; 
same => n,MYSQL(Clear ${resultid}) ;
same => n,MYSQL(Disconnect ${connid})
same => n,GotoIf($[${duration}<=18000]?call:start) ; 
same => n(call),Set(limit=$[18000 - ${duration}]) ; 
same => n,Dial(SIP/${ARG2}/${ARG1},,S(${limit})tTr) ;
same => n,GotoIf($[${DIALSTATUS}=ANSWER]?finish:start) ;
same => n(sip),Dial(SIP/ctm/${ARG1},,Ttr) ;
same => n(finish),Hangup ;
При выборе sw мне необходимо вернуться в начало макроса.

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

macro test( ext, trk ) {
        Set(trk=$[${trk} + 1]);
        GotoIf($[${trk}>=9005]?sip:repeat);
        repeat:
                MYSQL(Connect connid localhost asterisk password asterisk);
                MYSQL(Query resultid ${connid} SELECT SUM(`billsec`) FROM `cdr` WHERE `dstchannel` LIKE '%${trk}%' AND `calldate` BETWEEN DATE_FORMAT(NOW(),'%Y-%m-01') AND LAST_DAY(NOW()) + INTERVAL 1 DAY);
                MYSQL(Fetch fetchid ${resultid} duration);
                MYSQL(Clear ${resultid});
                MYSQL(Disconnect ${connid});
                Noop(${duration});
                GotoIf($["${duration}" <= "50"]?wll:sw);
                wll:
                        Set(limit=$[50 - ${duration}]);
                        Dial(SIP/${ext}@${trk},,S(${limit})tTr);
                sw:
                       ????
        sip:
                Dial(SIP/${ext}@provider,60);
                Hangup;
}
Каким образом можно реализовать переход?
Аватара пользователя
zzuz
Сообщения: 1658
Зарегистрирован: 21 сен 2010, 13:33
Контактная информация:

Re: Перевод макроса в ael

Сообщение zzuz »

Поставьте метку в начале и используйте goto. Также , как и указано в pbx_conf формате.
Линия24 - Системы Массового Телефонного Обслуживания
etagi
Сообщения: 2
Зарегистрирован: 04 май 2016, 14:14

Re: Перевод макроса в ael

Сообщение etagi »

Спасибо, то что нужно.
Ответить
© 2008 — 2025 Asterisk.ru
Digium, Asterisk and AsteriskNOW are registered trademarks of Digium, Inc.
Design and development by PostMet-Netzwerk GmbH