freeswitchforum.com https://freeswitchforum.com/ |
|
анализ переменных в dialplan https://freeswitchforum.com/viewtopic.php?f=6&t=121 |
Страница 1 из 1 |
Автор: | Roman [ 04 дек 2012 12:05 ] |
Заголовок сообщения: | анализ переменных в dialplan |
Коллеги, помогите разобраться в ситуации с переменными в 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? Спасибо |
Автор: | Vlad1983 [ 04 дек 2012 14:14 ] |
Заголовок сообщения: | Re: анализ переменных в dialplan |
нужно кинуть в другой контекст и все будет |
Автор: | Roman [ 04 дек 2012 14:20 ] |
Заголовок сообщения: | Re: анализ переменных в dialplan |
Эмм... недопонял, а что в пределах default не получится? И что тут меняется в зависимости от контекста? |
Автор: | Vlad1983 [ 04 дек 2012 14:24 ] |
Заголовок сообщения: | Re: анализ переменных в dialplan |
после <action application="log" data="WARNING dialed number=$1, DTMF=${dtmf_dig}"/> делаем transfer в другой контекст в котором уже ловим <condition expression="^1$" field="${dtmf_dig}"> меняется много поверьте пока на слово |
Автор: | Roman [ 05 дек 2012 08:14 ] |
Заголовок сообщения: | Re: анализ переменных в dialplan |
Мда... действительно, так всё работает. Я попробовал сделать иначе, то есть не выносить в другой контекст, а вынести в другой 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? Может это баг? Если нет, то почему подобные ограничения в явном виде не описаны в доке? Спасибо огромное за помощь в решении проблемы!!! |
Автор: | Vlad1983 [ 05 дек 2012 08:28 ] |
Заголовок сообщения: | Re: анализ переменных в dialplan |
это не баг, а такая особенность работы диалплана FS если запустите под уровнем логирования debug, то можно увидеть как FS выбирает по condition - за один проход весь контекст, учитывая значения переменных которые были на входе в этот контекст, никакие изменения не принимаются во внимание в доке где-то видел и запомнил раз и на всегда есть исключения, но об этом нужно сказать явно http://wiki.freeswitch.org/wiki/Dialpla ... ne_Actions |
Автор: | Roman [ 05 дек 2012 10:04 ] |
Заголовок сообщения: | Re: анализ переменных в dialplan |
Ясно, спасибо!! |
Страница 1 из 1 | Часовой пояс: UTC + 4 часа |
Powered by phpBB® Forum Software © phpBB Group http://www.phpbb.com/ |