Страница 1 из 2
freeswitch - не могу понять почему не срабатывает condition
Добавлено: 04 июл 2014, 15:06
denis21
Код: Выделить всё
<action application="bridge" data="user/${dialed_extension}@${domain_name}"/>
<action application="lua" data="mobile-redirector.lua get ${user_data(${dialed_extension}@${domain_name} attr id)}@${domain_name}"/>
<action application="log" data="info enabled=${cond(${enabled} == 1 ? true : false)}"/>
<condition field="${cond(${enabled} == 1 ? true : false)}" expression="^true$">
<!--<action application="bridge" data="sofia/gateway/infolink-unlim/${forward_to}"/>-->
<action application="log" data="INFO enabled is 1"/>
</condition>
Переменные enabled, forward_to выставляю из луа скрипта через session:setVariable по определённым у словиям и выбирая нужные данные из sqlite.
После выполнения луа скрипта в лог пишет:
2014-07-04 13:54:21.900093 [INFO] mod_dptools.c:1588 enabled=true
Если убираю condition, то всё работает.
Re: freeswitch - не могу понять почему не срабатывает condit
Добавлено: 04 июл 2014, 15:15
Vlad1983
diff
Код: Выделить всё
--- old 2014-07-04 17:13:23.918722572 +0600
+++ new 2014-07-04 17:13:51.810722917 +0600
@@ -1,5 +1,5 @@
<action application="bridge" data="user/${dialed_extension}@${domain_name}"/>
-<action application="lua" data="mobile-redirector.lua get ${user_data(${dialed_extension}@${domain_name} attr id)}@${domain_name}"/>
+<action application="lua" data="mobile-redirector.lua get ${user_data(${dialed_extension}@${domain_name} attr id)}@${domain_name}" inline="true"/>
<action application="log" data="info enabled=${cond(${enabled} == 1 ? true : false)}"/>
<condition field="${cond(${enabled} == 1 ? true : false)}" expression="^true$">
<!--<action application="bridge" data="sofia/gateway/infolink-unlim/${forward_to}"/>-->
Re: freeswitch - не могу понять почему не срабатывает condit
Добавлено: 04 июл 2014, 15:25
denis21
Не помогло.
2014-07-04 15:22:31.130083 [NOTICE] switch_ivr_originate.c:2661 Cannot create outgoing channel of type [error] cause: [USER_NOT_REGISTERED]
2014-07-04 15:22:31.130083 [NOTICE] switch_ivr_originate.c:2661 Cannot create outgoing channel of type [user] cause: [USER_NOT_REGISTERED]
2014-07-04 15:22:31.130083 [INFO] mod_dptools.c:3194 Originate Failed. Cause: USER_NOT_REGISTERED
2014-07-04 15:22:31.130083 [INFO] mod_dptools.c:1588 enabled=false
Re: freeswitch - не могу понять почему не срабатывает condit
Добавлено: 04 июл 2014, 15:45
Vlad1983
Код: Выделить всё
--- old 2014-07-04 17:13:51.810722917 +0600
+++ new 2014-07-04 17:45:07.198746134 +0600
@@ -1,7 +1,12 @@
-<action application="bridge" data="user/${dialed_extension}@${domain_name}"/>
-<action application="lua" data="mobile-redirector.lua get ${user_data(${dialed_extension}@${domain_name} attr id)}@${domain_name}" inline="true"/>
-<action application="log" data="info enabled=${cond(${enabled} == 1 ? true : false)}"/>
-<condition field="${cond(${enabled} == 1 ? true : false)}" expression="^true$">
+<extension>
+ <condition field="destination_number" expression=".*" break="never">
+ <action application="bridge" data="user/${dialed_extension}@${domain_name}"/>
+ <action application="lua" data="mobile-redirector.lua get ${user_data(${dialed_extension}@${domain_name} attr id)}@${domain_name}" inline="true"/>
+ <action application="log" data="info enabled=${cond(${enabled} == 1 ? true : false)}"/>
+ </condition>
+
+ <condition field="${cond(${enabled} == 1 ? true : false)}" expression="^true$">
<!--<action application="bridge" data="sofia/gateway/infolink-unlim/${forward_to}"/>-->
<action application="log" data="INFO enabled is 1"/>
-</condition>
+ </condition>
+</extension>
Re: freeswitch - не могу понять почему не срабатывает condit
Добавлено: 04 июл 2014, 15:51
denis21
2014-07-04 15:49:36.120122 [INFO] mod_dptools.c:3194 Originate Failed. Cause: USER_NOT_REGISTERED
2014-07-04 15:49:36.120122 [INFO] mod_dptools.c:1588 enabled=false
2014-07-04 15:49:36.120122 [NOTICE] switch_core_state_machine.c:262 sofia/external/number@trunk has executed the last dialplan instruction, hanging up.
Насчёт inline, не думаю что это то... Я-же не использую метод stream:write для передачи данных обратно в свитч, а устанавливаю переменные для текущей сессии, по которым нужно работать.
Только проверка значений проблемна...
Re: freeswitch - не могу понять почему не срабатывает condit
Добавлено: 04 июл 2014, 15:58
Vlad1983
inline как раз то
у мну диалплан
Код: Выделить всё
<extension>
<condition field="destination_number" expression=".*" break="never">
<action application="bridge" data="user/${dialed_extension}@${domain_name}"/>
<action application="set" data="enabled=1" inline="true"/>
<action application="log" data="info enabled=${cond(${enabled} == 1 ? true : false)}"/>
</condition>
<condition field="${cond(${enabled} == 1 ? true : false)}" expression="^true$">
<action application="log" data="INFO enabled is 1"/>
</condition>
<extension>
выдает "Action log(INFO enabled is 1)"
Re: freeswitch - не могу понять почему не срабатывает condit
Добавлено: 04 июл 2014, 16:19
denis21
Код: Выделить всё
<extension name="внутренние-номера">
<condition field="destination_number" expression="^(\d{3}|\D{3,})$" require-nested="false" break="never">
<action application="set" data="dialed_extension=${destination_number}"/>
<action application="bind_meta_app" data="0 ab s execute_extension::att_xfer XML domainname"/>
<action application="bind_meta_app" data="1 ab s execute_extension::att_xfer2mobile XML domainname"/>
<action application="set" data="default_language=ru"/>
<action application="set" data="ringback=${ru-ring}"/>
<action application="set" data="transfer_ringback=/opt/freeswitch-1.2/sounds/company-sounds/holdmusic2.wav"/>
<action application="set" data="call_timeout=60"/>
<!-- <action application="set" data="sip_exclude_contact=${network_addr}"/> -->
<action application="set" data="hangup_after_bridge=true"/>
<action application="set" data="continue_on_fail=NORMAL_TEMPORARY_FAILURE,USER_BUSY,NO_ANSWER,TIMEOUT,USER_NOT_REGISTERED"/>
<!-- <action application="set" data="continue_on_fail=true"/> -->
<action application="hash" data="insert/${domain_name}-call_return/${dialed_extension}/${caller_id_number}"/>
<action application="hash" data="insert/${domain_name}-last_dial_ext/${dialed_extension}/${uuid}"/>
<action application="set" data="called_party_callgroup=${user_data(${dialed_extension}@${domain_name} var callgroup)}"/>
<action application="hash" data="insert/${domain_name}-last_dial_ext/${called_party_callgroup}/${uuid}"/>
<action application="hash" data="insert/${domain_name}-last_dial_ext/global/${uuid}"/>
<action application="hash" data="insert/${domain_name}-last_dial/${called_party_callgroup}/${uuid}"/>
<action application="bridge" data="user/${dialed_extension}@${domain_name}"/>
<action application="lua" data="mobile-redirector.lua get ${user_data(${dialed_extension}@${domain_name} attr id)}@${domain_name}"/>
<action application="log" data="info enabled=${cond(${enabled} == 1 ? true : false)} ${enabled}"/>
<!-- <condition field="${cond(${enabled} == 1 ? true : false)}" expression="^true$">-->
<action application="bridge" data="sofia/gateway/infolink-unlim/${forward_to}"/>
<!-- </condition>-->
</condition>
</extension>
Работает. Раскоментирую condition, не работает, has executed the last dialplan instruction, hanging up.
С inline переменные enabled, forward_to пустые.
Если напишу
Код: Выделить всё
<condition field="${enabled}" expression="^1$">
то так-же has executed the last dialplan instruction, hanging up.
Re: freeswitch - не могу понять почему не срабатывает condit
Добавлено: 04 июл 2014, 16:29
denis21
У вас модуль луа собрат? Давайте попробуем вызвать такой скрипт из диалплана.
Код: Выделить всё
if session:ready() then
session:setVariable("enabled","1")
end
Re: freeswitch - не могу понять почему не срабатывает condit
Добавлено: 04 июл 2014, 16:30
Vlad1983
Re: freeswitch - не могу понять почему не срабатывает condit
Добавлено: 04 июл 2014, 16:49
denis21
Код: Выделить всё
<condition field="${cond(${enabled} == 1 ? true : false)}" expression="^true$" break="never">
Что-то не понимаю...