@ru_freeswitch

Страница 72 из 430
Denis 災 nobody
05.04.2017
16:13:25
видимо, надо как loopback/${digits}/XML/default

но у нас генерилка диалплана, поступает запрос на $digits и дальше идёт формирование, тот же бридж

Александр
05.04.2017
16:14:33
не работает

Denis 災 nobody
05.04.2017
16:14:49
конфиги статика?

Google
Александр
05.04.2017
16:16:54
2017-04-05 19:14:15.970535 [NOTICE] switch_core_session.c:2986 Execute att_xfer(loopback/${digits}/XML/default) EXECUTE sofia/internal/sip:5556@192.168.200.91:5060 att_xfer(loopback/7014101/XML/default) 2017-04-05 19:14:15.970535 [NOTICE] switch_channel.c:1054 New Channel loopback/7014101/XML/default-a [ea418d92-1a1a-11e7-ad52-27ddc2797685] 2017-04-05 19:14:15.970535 [NOTICE] switch_channel.c:1052 Rename Channel loopback/7014101/XML/default-a->loopback/7014101-a [ea418d92-1a1a-11e7-ad52-27ddc2797685] 2017-04-05 19:14:15.970535 [DEBUG] mod_loopback.c:391 loopback/7014101-b CHANNEL ROUTING 2017-04-05 19:14:15.970535 [INFO] switch_core_state_machine.c:239 No Route, Aborting 2017-04-05 19:14:15.970535 [NOTICE] switch_core_state_machine.c:240 Hangup loopback/7014101-b [CS_ROUTING] [NO_ROUTE_DESTINATION]

номер только не 5556, а 1002

вот план на 7014101 <extension name="RnD" continue="true"> <condition field="destination_number" expression="^7014(1\d{2}|444)$" > <action application="set" data="sip_h_X-accountcode=${accountcode}" /> <action application="set" data="sip_h_X-Tag=" /> <action application="set" data="call_direction=outbound" /> <action application="set" data="hangup_after_bridge=true" /> <action application="set" data="effective_caller_id_name=${outbound_caller_id_name}" /> <action application="set" data="effective_caller_id_number=${outbound_caller_id_number}" /> <action application="set" data="inherit_codec=true" /> <action application="set" data="media_bug_answer_req=true"/> <action application="export" data="record=$${base_dir}/recordings/archive/${strftime(%Y)}/${strftime(%b)}/${strftime(%d)}/7014/outbound/${caller_id_name}/${destination_number}_${uuid}.mp3" /> <action application="export" data="execute_on_answer=record_session ${record}" /> <action application="bridge" data="sofia/gateway/rnd/$1" /> </condition> </extension>

до нужного контекста не доходит

Denis 災 nobody
05.04.2017
16:25:57
а если для теста скопировать код в features, с вариантом когда было last line

Александр
05.04.2017
16:28:12
last line?

если добавить в features то все работает

Regex (PASS) [RnD] destination_number(7014101) =~ /^7014(1\d{2}|444)$/ break=on-false

но блин план то не там)

у меня 70 fs примерно, может чуть больше... не дублировать же все маршруты в features

можно так же подинклудить, но это же не по ГОСТу) надо чтобы красиво было)

Denis 災 nobody
05.04.2017
16:43:57
если поможет, то можно попробовать впихнуть transfer|execute_extension

в паблик

Google
Александр
05.04.2017
16:44:17
это как?

Denis 災 nobody
05.04.2017
16:45:01
добавить after_xfer с просто трансфером в дефолт

Александр
05.04.2017
16:45:41
вообще не понял

Denis 災 nobody
05.04.2017
16:46:24
https://wiki.freeswitch.org/wiki/Variable_force_transfer_context https://wiki.freeswitch.org/wiki/Variable_force_transfer_dialplan смотрел?

вообще не понял
в секции features делаешь блок, где будет трансфер в дефолт. Не?

Александр
05.04.2017
16:50:01
смотрел... в секции features делаешь блок, где будет трансфер в дефолт. Не? в том и дело что не понял как его сделать

Denis 災 nobody
05.04.2017
16:51:17
<section name="dialplan" description="Regex/XML Dialplan"> <context name="features"> <!— one or more extension tags —> </context>

а там extension, condition, action transfer

Александр
05.04.2017
16:53:55
а можно пример подробнее? ну реально не врубаюсь)

Denis 災 nobody
05.04.2017
17:05:59
куда уж подробнее..

прямо в код вписать?)

Александр
05.04.2017
17:07:05
я бы не отказался ибо действительно не понимаю что вы хотите до меня донести

Denis 災 nobody
05.04.2017
17:27:59
имхо, тут очень дельное может подсказать @rostel

Александр
05.04.2017
17:28:24
он собственно сюда и направил)

Denis 災 nobody
05.04.2017
17:41:47
любители луа, почему фс от него дохнет? ) (gdb) bt #0 0x00007f37be29cbbb in SWIG_PropagateClientData () at mod_lua_wrap.cpp:8678 #1 luaopen_freeswitch (L=<optimized out>) at mod_lua_wrap.cpp:8722 #2 0x00007f37be28300a in lua_init () at mod_lua.cpp:127 #3 0x00007f37be283b93 in lua_function (session=0x7f37d004fd78, data=0x7f37a8001e70 "somescript.lua") at mod_lua.cpp:468 #4 0x00007f37fc5d596b in switch_core_session_exec (session=session@entry=0x7f37d004fd78, application_interface=application_interface@entry=0x193ae08, arg=arg@entry=0x7f37a8001e70 "somescript.lua") at src/switch_core_session.c:2754 #5 0x00007f37fc5d5f5a in switch_core_session_execute_application_get_flags (session=session@entry=0x7f37d004fd78, app=0x7f37a8001e68 "lua", arg=0x7f37a8001e70 "somescript.lua", flags=flags@entry=0x0) at src/switch_core_session.c:2624 #6 0x00007f37fc5d8d4a in switch_core_standard_on_execute (session=0x7f37d004fd78) at src/switch_core_state_machine.c:283 #7 switch_core_session_run (session=0x7f37d004fd78) at src/switch_core_state_machine.c:535 #8 0x00007f37fc5d325e in switch_core_session_thread (thread=<optimized out>, obj=0x7f37d004fd78) at src/switch_core_session.c:1607 #9 0x00007f37fc5cf092 in switch_core_session_thread_pool_worker (thread=0x7f37d006a490, obj=<optimized out>) at src/switch_core_session.c:1673 #10 0x00007f37fc6a2500 in dummy_worker (opaque=0x7f37d006a490) at threadproc/unix/thread.c:151 #11 0x00007f37fa6b3dc5 in start_thread () from /lib64/libpthread.so.0 #12 0x00007f37f9d8a73d in clone () from /lib64/libc.so.6

Максим
05.04.2017
17:49:24
В скрипте используете конструктор сессий? Подключение к бд по dbh?

Denis 災 nobody
05.04.2017
17:51:18
function log(message, session, level) freeswitch.consoleLog(level, string.format('%s. Destination: %s; from: %s; to: %s; uuid: %s; X-Inring: %s\n', message, session:getVariable('destination_number'), session:getVariable('sip_from_user'), session:getVariable('sip_to_user'), session:getVariable('uuid'), session:getVariable('sip_h_X-Inring') )) end orig_channel_name = session:getVariable('origination_channel_name') limit_var_key = session:getVariable('limit_var_key') —log(string.format('lua done'), session, 'notice')

весь скрипт

Александр
05.04.2017
17:58:30
огромное спасибо @Dragonflybsd, все работает

kino
05.04.2017
18:07:40
Google
Alexandru
05.04.2017
22:33:01
а consolelog где заканчивается?

ааа

вижу

function log(message, session, level) freeswitch.consoleLog(level, string.format('%s. Destination: %s; from: %s; to: %s; uuid: %s; X-Inring: %s\n', message, session:getVariable('destination_number'), session:getVariable('sip_from_user'), session:getVariable('sip_to_user'), session:getVariable('uuid'), session:getVariable('sip_h_X-Inring') )) end orig_channel_name = session:getVariable('origination_channel_name') limit_var_key = session:getVariable('limit_var_key') —log(string.format('lua done'), session, 'notice')
static int _wrap_consoleLog(lua_State* L) { int SWIG_arg = 0; char *arg1 = (char *) 0 ; char *arg2 = (char *) 0 ; SWIG_check_num_args("consoleLog",2,2) if(!SWIG_lua_isnilstring(L,1)) SWIG_fail_arg("consoleLog",1,"char *"); if(!SWIG_lua_isnilstring(L,2)) SWIG_fail_arg("consoleLog",2,"char *"); arg1 = (char *)lua_tostring(L, 1); arg2 = (char *)lua_tostring(L, 2); consoleLog(arg1,arg2); return SWIG_arg; if(0) SWIG_fail; fail: lua_error(L); return SWIG_arg; }

я не знаю что тут может покласть фрисвитч

и не понимаю почему обрывается на трединге

бред какой-то

зачем ему создавать новый тред??

а тьфу, ун скрипт обработать да...

не

ссплю уже

Alexandru
05.04.2017
23:07:40
завтра посмотрю свежим взглядом

Денис, а можешь попробовать изначально все переменные отдельно поспрашивать и объединиь, чтобы string.format внутри consolelog не юзать?

мне кажется что это луашный враппер всетаки тупит

я имею в виду mod_lua_wrap

nu nado smotret

Максим
05.04.2017
23:10:36
всегда писал как то так

freeswitch.consoleLog('INFO',"LuaLogicDetection.lua detected VIP client "..def_number.." and distributed to fscallcenter\n");

и ни каких проблем, зачем string.format?

Google
Максим
05.04.2017
23:13:14
я как то столкнулся с такой штукой что обычный вывод в лог модуль mod_xml_rpc парсил по регулярке O_O зачем не понимаю. Так вот если строка длинная попадалась, то был выход за пределы массива и модуль клал FS

отсюда вывод, чем проще, тем надёжнее)

ros
06.04.2017
03:59:37
а можно пример подробнее? ну реально не врубаюсь)
попробовать как-то так (не проверял) <extension name="att_xfer_fil"> <condition field="destination_number" expression="^att_xfer_fil$"> <action application="read" data="3 4 'tone_stream://%(10000,0,350,440)' digits 30000 #"/> <action application="set" data="origination_cancel_key=#"/> <action application="transfer" data="${digits} XML redirect_xfer"/> </condition> </extension> <!--==== вынести из контекста features ====--> <context name="redirect_xfer"> <extension name="RnD" continue="true"> <condition field="destination_number" expression="^(100\d)$" > <action application="att_xfer" data="user/$1@$${domain}"/> </condition> </extension> <extension name="RnD" continue="true"> <condition field="destination_number" expression="^7014(1\d{2}|444)$" > <action application="bridge" data="sofia/gateway/rnd/$1" /> </condition> </extension> </context>

ros
06.04.2017
09:03:33
отредактировал портянку

att_xfer вместо bridge

Александр
06.04.2017
09:37:32
без изменений

Denis 災 nobody
06.04.2017
09:40:02
а в дебаг логе что?

Admin
ERROR: S client not available

Александр
06.04.2017
09:52:06
а в дебаг логе полный пипец... не успеваю отловить... там в один момент времени порядка 700 звонков крутится)) если знаете как отфильтровать вывод, подскажите плз

Denis 災 nobody
06.04.2017
09:52:45
включили, позвонили, выключили, потом в логе по юиду грепаем

...но обычно есть рядом тестовый контур

нода без звонков или вообще пустая система

Александр
06.04.2017
11:08:53
подшаманил немного, ситуация немного изменилась при переключении у абонента А(1 FS) включается музыка, абонент Б(1 FS) слышит гудок и набирает номер абонента Г(2 FS), абонент Г берет трубку и в этот момент у абонента А НЕ происходит сброс и он остается на удержании, но при этом если положит трубку абонент Б, переключение не произойдет А если НЕ дожидаться пока абонент Г возьмет трубку и положить трубку у абонента Б, переключение происходит нормально, в результате абонент А и Г могут общаться.

Denis 災 nobody
06.04.2017
11:21:57
что при этом в логах? )

да, поднимай тестовую ноду

Александр
06.04.2017
11:24:21
только вечером смогу... не могу я в этих километрах логов найти свое

Denis 災 nobody
06.04.2017
11:33:39
уже говорил, fsctl loglevel debug, снимаешь дамп (как можно быстрее и не в часы пик), fsctl loglevel err или какой по дефолту был

потом находишь channel uuid и грепаешь в фс логе

Александр
06.04.2017
11:37:51
на этом FS крутится Callcenter, там час пик с 2:00 мск по 20:00 мск, поэтому если смотреть логи то только после 20:00 мск)

Google
Denis 災 nobody
06.04.2017
11:38:06
после 20 и смотри )

Igor
06.04.2017
13:18:20
всем привет

вылезла одна хрень, не пойму как забороть. Вобщем есть originate, если поточнее то originate sofia/profile/num@ip 'wait_for_anwer,conference:id' inline Вобщем в caller_id_number в конференцию прилетает кривой номер, т.е. с префиксом от провайдера, чего крайне не хотелось бы. Пробовал запихнуть в канал sip_cid_type=none, ignore_display_updates=true (частично решило вопрос, но опять же не полностью, т.к. там при отправке Б номера есть нюанс). Собственно вопрос, суньте носом в переменную которая отвечает за caller_id_number с которым member входит в конференцию, чтобы взять ее и поменять так как мне нужно origination_caller_id_number, effective_caller_id_number,caller_id_number,sip_from_user уже пробовал, ФС не реагирует.

при всем при этом если меняю conference на bridge, то всё отрабатывает норм

Denis 災 nobody
06.04.2017
13:52:18
а если черещ loopback?

там работают все эти effective

Igor
06.04.2017
13:55:49
да вот cdr ломает зараза

всё бы ничего

Denis 災 nobody
06.04.2017
13:56:06
ну сделай хук на хэнгап с фиксом

Igor
06.04.2017
13:56:36
хм

как вариант

спасибо, ща попробуем

Say
07.04.2017
09:34:00
Ребят а возможно ли в настройках gateway задать в поведение, когда FS принудительно перезаписывал бы from для всех вызовов ?

Igor
07.04.2017
09:34:31
всмысле один статичный? или несколько разных?

Say
07.04.2017
09:34:45
статичный

ТОесть Идет входящий вызов -> попадает в bridge -> Исходщий, вот хочется чтобы все что отправленно через конкретный gateway в исходящем вызове всегда подставлялно from из настроек gateway

Igor
07.04.2017
09:36:39
задаешь from-user же, и поотключай всякие caller-id-in-from и тп

Say
07.04.2017
09:37:07
<param name="caller-id-in-from" value="false" />

Igor
07.04.2017
09:37:23
а еще что в параметрах?

Страница 72 из 430