freeswitchforum.com

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

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

Текущее время: 28 мар 2024 14:36

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




Начать новую тему Ответить на тему  [ Сообщений: 7 ] 
Автор Сообщение
 Заголовок сообщения: анализ переменных в dialplan
СообщениеДобавлено: 04 дек 2012 12:05 

Зарегистрирован: 22 окт 2012 16:04
Сообщения: 8
Коллеги, помогите разобраться в ситуации с переменными в DP.
И так, имеем следующее:

<extension name="conf_ivr" continue="true">
<condition expression="^((30\d{2})(001))$" field="destination_number">
<action application="answer"/>
<action application="start_dtmf"/>
<action application="play_and_get_digits" data="1 1 1 7000 # /usr/local/freeswitch/IVR_phrases/j_p.wav /usr/local/freeswitch/IVR_phrases/confbridge-leave.wav dtmf_dig \d"/>
<action application="sleep" data="2000"/>
<action application="log" data="WARNING dialed number=$1, DTMF=${dtmf_dig}"/>
</condition>

<condition expression="^1$" field="${dtmf_dig}">
<action application="transfer" data="$1 XML default"/>
<anti-action application="log" data="WARNING ${dtmf_dig}!=1, logic=false"/>
</condition>
</extension>

(Пример содержит пару отладочных строк для вывода сообщений в консоль.)

Вопрос:
Почему при донаборе 1 не выполняется action transfer во втором условии? Тут ${dtmf_dig} получает значение 1 и expression=1, почему нет совпадения и как результат выполняется только anti-action?
Спасибо


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: анализ переменных в dialplan
СообщениеДобавлено: 04 дек 2012 14:14 
FreeSWITCH_GuRu

Зарегистрирован: 22 авг 2012 09:52
Сообщения: 1710
нужно кинуть в другой контекст
и все будет

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


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: анализ переменных в dialplan
СообщениеДобавлено: 04 дек 2012 14:20 

Зарегистрирован: 22 окт 2012 16:04
Сообщения: 8
Эмм... недопонял, а что в пределах default не получится? И что тут меняется в зависимости от контекста?


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: анализ переменных в dialplan
СообщениеДобавлено: 04 дек 2012 14:24 
FreeSWITCH_GuRu

Зарегистрирован: 22 авг 2012 09:52
Сообщения: 1710
после
<action application="log" data="WARNING dialed number=$1, DTMF=${dtmf_dig}"/>
делаем transfer в другой контекст

в котором уже ловим
<condition expression="^1$" field="${dtmf_dig}">

меняется много поверьте пока на слово

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


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: анализ переменных в dialplan
СообщениеДобавлено: 05 дек 2012 08:14 

Зарегистрирован: 22 окт 2012 16:04
Сообщения: 8
Мда...
действительно, так всё работает. Я попробовал сделать иначе, то есть не выносить в другой контекст, а вынести в другой extension в этом же контексте. Получилось так:

<extension name="conf" continue="true">
<condition expression="^(30\d{2})(001)$" field="destination_number">
<action application="answer"/>
<action application="start_dtmf"/>
<action application="play_and_get_digits" data="1 1 1 7000 # /usr/local/freeswitch/IVR_phrases/j_p.wav /usr/local/freeswitch/IVR_phrases/confbridge-leave.wav dtmf_dig \d"/>
<action application="set" data="conf_num=$1"/>
<action application="log" data="WARNING dialed number=${conf_num}, DTMF=${dtmf_dig}"/>
<action application="execute_extension" data="go_to_conf XML default"/>
</condition>
</extension>

<extension name="go_to_conf">
<condition expression="^go_to_conf$" field="destination_number"/>
<condition expression="^1$" field="${dtmf_dig}">
<action application="log" data="WARNING go_to_conf OK --> dial=${conf_num}, dtmf=${dtmf_dig}"/>
<action application="transfer" data="${conf_num} XML default"/>
</condition>
</extension>

Я не уверен что это оптимальное решение, но во всяком случае, мне показалось что так сделать удобнее по сравнению с переходами между контекстами. Хотя, наверное механизм работы подобных манипуляций одинаков.

Однако, мне всё таки не понятно почему нельзя выполнять проверку условий в пределах одного extension? Может это баг? Если нет, то почему подобные ограничения в явном виде не описаны в доке?

Спасибо огромное за помощь в решении проблемы!!!


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: анализ переменных в dialplan
СообщениеДобавлено: 05 дек 2012 08:28 
FreeSWITCH_GuRu

Зарегистрирован: 22 авг 2012 09:52
Сообщения: 1710
это не баг, а такая особенность работы диалплана FS
если запустите под уровнем логирования debug, то можно увидеть как FS выбирает по condition - за один проход весь контекст, учитывая значения переменных которые были на входе в этот контекст, никакие изменения не принимаются во внимание

в доке где-то видел и запомнил раз и на всегда

есть исключения, но об этом нужно сказать явно http://wiki.freeswitch.org/wiki/Dialpla ... ne_Actions

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


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: анализ переменных в dialplan
СообщениеДобавлено: 05 дек 2012 10:04 

Зарегистрирован: 22 окт 2012 16:04
Сообщения: 8
Ясно, спасибо!!


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

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


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

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


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

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