freeswitchforum.com https://freeswitchforum.com/ |
|
Аналог While Asterisk и математические функции https://freeswitchforum.com/viewtopic.php?f=6&t=237 |
Страница 1 из 1 |
Автор: | vlad_6233 [ 15 ноя 2013 19:04 ] |
Заголовок сообщения: | Аналог While Asterisk и математические функции |
Есть ли в FS аналог While цикла как в Asterisk? Например, задача на * решалась как-то так Код: exten => _100,1,Set(ROW_COUNTER=0) exten => _100,n,While($[${ROW_COUNTER} < 10]) exten => _100,n,SayDigits(${ROW_COUNTER}) exten => _100,n,Set(ROW_COUNTER=$[ ${ROW_COUNTER} + 1 ]) exten => _100,n,EndWhile() Т.е. данный код решает следующие задачи: 1. Крутит цикл, пока не выполнится условие. 2. Переписывает значение переменной, добавляя число на 1 больше. Уважаемые, знатоки! Как можно подобное реализовать на FS? На ум пока лезит использование mod_xml_curl |
Автор: | Vlad1983 [ 15 ноя 2013 20:08 ] |
Заголовок сообщения: | Re: Аналог While Asterisk и математические функции |
все циклы по сути просто проверка условия перед выполнением или после, но с обязательным возвратом в исходную точку пока условие не станет ложным в принципе осуществимо и диалплане Код: <context name="pre-while"> <extension> <condition field="destination_number" expression="^.*$"> <action application="set" data="ROW_COUNTER=0"/> <action application="transfer" data="${destination_number} XML while"/> </condition> </extension> </context> <context name="while"> <extension> <condition field="${cond(${ROW_COUNTER} < 10 ? YES : NO)}" expression="^YES$"> <action application="set" data="ROW_COUNTER=${expr(${ROW_COUNTER}+1)}"/> <action application="say" data="ru number iterated ${ROW_COUNTER}"/> <action application="transfer" data="${destination_number} XML while"/> <anti-action application="transfer" data="${destination_number} XML post-while"/> <!-- выход если условие ложно --> </condition> </extension> </context> но на perl или lua будет несколько покрасивей и понятней |
Автор: | freeneutron [ 17 ноя 2013 05:06 ] |
Заголовок сообщения: | Re: Аналог While Asterisk и математические функции |
FreeSwitch - это система следующего поколения по отношению к Asterisk. Так что там все сделано на порядок круче. Для вызова циклов там есть 2 встроенных языка программирования: javascript - вызывается из диалплана так: <action application="javascript" data="/path/to/some/script.js"/> и lua: - вызывается так <action application="lua" data="helloworld.lua arg1 arg2"/> Эти языки позволяют крутить диалпланом как угодно. А еще, если знаете технологию сокетов, то можете подключится к FreeSwitch из любой программы, имеющей доступ к интернету. И так же у этой программы будет полный контроль над процессами FreeSwitch. |
Страница 1 из 1 | Часовой пояс: UTC + 4 часа |
Powered by phpBB® Forum Software © phpBB Group http://www.phpbb.com/ |