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

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

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

спросил 2014-05-29 19:46:04 +0400

A.Kuntsevich Gravatar A.Kuntsevich

Macro, циклическая обработка аргументов

Доброго времени суток. Спасибо, что зашли в этот вопрос и заранее благодарен всем!

Нужно реализовать набор номера, с автоматическим вводом добавочного номера, это я сделал с помощью макроса:

[macro-sendnum] exten => s,1,Wait(${ARG1}) exten => s,n,SendDTMF(${ARG2})



В команде Dial, вызывал этот макрос по мере надобности и все работало хорошо, Но возникла более сложная задача, иногда нужно вводить эти добавочные номера в несколько этапов: набор номера => ждать пару сек => ввод добавочного => ждать пару сек => ввод добавочного ... Это я пытался реализовать тоже с помощь макроса идея была такая: передавать в макрос аргументы, первый аргумент- кол-во добавочных номеров, потом идут аргументы: задержка в сек-ах, добавочный номер, задержка, добавочный номер, вот для наглядности что я имею ввиду: M(sendnum^2^5^2010^6^123)

Но возник вопрос: как это обработать корректно в макросе? Пытался все это сделать в цикле, но у меня не получилось, что-то не работает, очень нужна помощь опытного в этом деле человека, вот что у меня получилось:

[macro-sendnum] exten => s,1,Set(TIMES=${ARG1}) exten => s,n,Set(i=0}) exten => s,n,While($[${i} < ${TIMES}]) exten => s,n,Set(i=$[ ${i} + 1 ]) exten => s,n,Wait(${ARG$[${i} + 1]}) exten => s,n,SendDTMF(${ARG$[${i} + 2]}) exten => s,n,EndWhile

Может кто-нибудь подскажет где у меня ошибка? Или подскажет более грамотное решение? Заранее благодарен всем, спасибо за внимание, хорошего Вам дня!

Macro, циклическая обработка аргументов

Доброго времени суток. Спасибо, что зашли в этот вопрос и заранее благодарен всем!

Нужно реализовать набор номера, с автоматическим вводом добавочного номера, это я сделал с помощью макроса:

[macro-sendnum] exten => s,1,Wait(${ARG1}) [macro-sendnum]
exten => s,1,Wait(${ARG1})
exten => s,n,SendDTMF(${ARG2})



В команде Dial, вызывал этот макрос по мере надобности и все работало хорошо, Но возникла более сложная задача, иногда нужно вводить эти добавочные номера в несколько этапов: набор номера => ждать пару сек => ввод добавочного => ждать пару сек => ввод добавочного ... Это я пытался реализовать тоже с помощь макроса идея была такая: передавать в макрос аргументы, первый аргумент- кол-во добавочных номеров, потом идут аргументы: задержка в сек-ах, добавочный номер, задержка, добавочный номер, вот для наглядности что я имею ввиду: M(sendnum^2^5^2010^6^123)

Но возник вопрос: как это обработать корректно в макросе? Пытался все это сделать в цикле, но у меня не получилось, что-то не работает, очень нужна помощь опытного в этом деле человека, вот что у меня получилось:

[macro-sendnum] exten => s,1,Set(TIMES=${ARG1}) exten => s,n,Set(i=0}) [macro-sendnum]
exten => s,1,Set(TIMES=${ARG1})
exten => s,n,Set(i=0})
exten => s,n,While($[${i} < ${TIMES}]) ${TIMES}])
exten => s,n,Set(i=$[ ${i} + 1 ]) ])
exten => s,n,Wait(${ARG$[${i} + 1]}) 1]})
exten => s,n,SendDTMF(${ARG$[${i} + 2]}) 2]})
exten => s,n,EndWhile

Может кто-нибудь подскажет где у меня ошибка? Или подскажет более грамотное решение? Заранее благодарен всем, спасибо за внимание, хорошего Вам дня!

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