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/