freeswitchforum.com

Форум поддержки FreeSWITCH

FreeSWITCH is a registered trademark of Anthony Minessale. Official FreeSWITCH site.

Текущее время: 28 мар 2024 20:09

Часовой пояс: UTC + 4 часа




Начать новую тему Ответить на тему  [ Сообщений: 3 ] 
Автор Сообщение
СообщениеДобавлено: 15 ноя 2013 19:04 

Зарегистрирован: 31 окт 2013 18:45
Сообщения: 18
Есть ли в 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


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: 15 ноя 2013 20:08 
FreeSWITCH_GuRu

Зарегистрирован: 22 авг 2012 09:52
Сообщения: 1710
все циклы по сути просто проверка условия перед выполнением или после, но с обязательным возвратом в исходную точку пока условие не станет ложным
в принципе осуществимо и диалплане
Код:
 <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 будет несколько покрасивей и понятней

_________________
ЛС: @rostel
Сообщество: @ru_freeswitch


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: 17 ноя 2013 05:06 

Зарегистрирован: 16 янв 2013 21:38
Сообщения: 10
FreeSwitch - это система следующего поколения по отношению к Asterisk. Так что там все сделано на порядок круче. Для вызова циклов там есть 2 встроенных языка программирования:
javascript - вызывается из диалплана так: <action application="javascript" data="/path/to/some/script.js"/> и
lua: - вызывается так <action application="lua" data="helloworld.lua arg1 arg2"/>
Эти языки позволяют крутить диалпланом как угодно. А еще, если знаете технологию сокетов, то можете подключится к FreeSwitch из любой программы, имеющей доступ к интернету. И так же у этой программы будет полный контроль над процессами FreeSwitch.


Вернуться к началу
 Профиль  
 
Показать сообщения за:  Поле сортировки  
Начать новую тему Ответить на тему  [ Сообщений: 3 ] 

Часовой пояс: UTC + 4 часа


Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 34


Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете добавлять вложения

Найти:
Перейти:  
cron
Powered by phpBB® Forum Software © phpBB Group
Русская поддержка phpBB