Пожалуйста, войдите здесь. Часто задаваемые вопросы О нас
Задайте Ваш вопрос

возвращаясь к ChannelRedirect и n-way Call [решено]

0

не бейте сильно, уважаемые самизнаетекто. перечитав мгого этого ресурса и многих других, я так и не нашёл ответа. По мотивам известной всем статьи пытаюсь реализовать конференции. Всё замечательно работает, если инициатором конференции является звонящий (caller), но, когда конференцию инициирует принимающий вызов (callee) - не работает.
никак не могу понять может ли callee сделать ChannelRedirect(${BRIDGEPEER},bla-bla,xxx,1)? caller делает это отлично.

*CLI> core show version Asterisk 1.6.2.9-2+squeeze4 built by buildd @ biber on a i686 running Linux on 2011-12-18 21:42:21 UTC 

features.conf:

[applicationmap] nway-start => *1,self,Macro,nway-start 

extetsion.conf:

[globals] INDIAL_TIMEOUT=300 ; таймаут для внутренних вызовов INDIAL_OPTS=gTtkw ; параметы для внутренних вызовов [dst_local] exten => _1[012]XX,1,Macro(stdexten,SIP,${EXTEN}) [macro-stdexten] exten => s,1,NoOp(MACRO_CONTEXT=${MACRO_CONTEXT}) same => n,Set(BACK_EXTEN=${ARG2}) same => n,ExecIf($[${EXISTS(${BACK_EXTEN})} = 0 ]?Set(BACK_EXTEN=${CALLERID(num)})) same => n,ExecIf($[${LEN(${CALLERID(num)})} = 4 ]?Set(ALERTINFO=internal):Set(ALERTINFO=external)) same => n,SIPAddHeader(Alert-Info: ${ALERTINFO}) ; здест точка с запятой не комент. same => n,Set(__DYNAMIC_FEATURES=nway-start) same => n,Dial(${ARG1}/${ARG2},${INDIAL_TIMEOUT},${INDIAL_OPTS}) same => n,Goto(dialstatus,s-${DIALSTATUS},1) exten => i,1,Macro(invalidcall,${ARG2}) [dynamic-nway] exten => _XXXXX,1,Answer same => n,Set(CONFNO=${EXTEN}) same => n,Set(MEETME_EXIT_CONTEXT=dynamic-nway-invite) same => n,Set(DYNAMIC_FEATURES=) same => n,MeetMe(${CONFNO},pdMX) same => n,Hangup [dynamic-nway-invite] exten => 0,1,Read(DEST,dial,10,i) exten => 0,n,Set(DYNAMIC_FEATURES=nway-inv#nway-noinv) exten => 0,n,Dial(Local/${DEST}@dynamic-nway-dest,,g) exten => 0,n,Set(DYNAMIC_FEATURES=) exten => 0,n,Goto(dynamic-nway,${CONFNO},1) exten => i,1,Goto(dynamic-nway,${CONFNO},1) [dynamic-nway-dest] exten => _XXXX,1,Dial(SIP/${EXTEN}) [macro-nway-start] exten => s,1,NoOp(nway-start BRIDGEPEER: ${BRIDGEPEER} , CHANNEL: ${CHANNEL}) same => n,Set(CONFID=0) same => n(repeat),Set(CONFID=$[ ${CONFID} + 1 ]) same => n,MeetMeCount(${CALLERID(num)}${CONFID},COUNT) same => n,GotoIf($[ ${COUNT} > 0 ] ? s,repeat) same => n,Set(CONFNO=${CALLERID(num)}${CONFID}) same => n,ChannelRedirect(${BRIDGEPEER},dynamic-nway,${CONFNO},1) same => n,Set(DYNAMIC_FEATURES=) same => n,Goto(dynamic-nway,${CONFNO},1) 

логи:
успешный редирект:
1111 звонит на 1211, в процессе разговора жмет *1, 1211 попадает в конференцию, 1111 тудаже.

 VERBOSE[30809] pbx.c: [Dec 27 09:37:11] -- Executing [s@macro-stdexten:9] Set("SIP/1111-000161a1", "__DYNAMIC_FEATURES=nway-start") in new stack VERBOSE[30809] pbx.c: [Dec 27 09:37:11] -- Executing [s@macro-stdexten:10] Dial("SIP/1111-000161a1", "SIP/1211,300,gTtkw") in new stack .... VERBOSE[30809] app_dial.c: [Dec 27 09:37:11] -- Called 1211 VERBOSE[30809] app_dial.c: [Dec 27 09:37:11] -- SIP/1211-000161a2 is ringing VERBOSE[30809] app_dial.c: [Dec 27 09:37:13] -- SIP/1211-000161a2 answered SIP/1111-000161a1 DTMF[30809] channel.c: DTMF begin '*' received on SIP/1111-000161a1 DTMF[30809] channel.c: DTMF begin passthrough '*' on SIP/1111-000161a1 DTMF[30809] channel.c: DTMF end '*' received on SIP/1111-000161a1, duration 150 ms DTMF[30809] channel.c: DTMF end accepted with begin '*' on SIP/1111-000161a1 DTMF[30809] channel.c: DTMF end passthrough '*' on SIP/1111-000161a1 DTMF[30809] channel.c: DTMF begin '1' received on SIP/1111-000161a1 DTMF[30809] channel.c: DTMF begin passthrough '1' on SIP/1111-000161a1 DTMF[30809] channel.c: DTMF end '1' received on SIP/1111-000161a1, duration 150 ms DTMF[30809] channel.c: DTMF end accepted with begin '1' on SIP/1111-000161a1 DTMF[30809] channel.c: DTMF end passthrough '1' on SIP/1111-000161a1 VERBOSE[30809] features.c: [Dec 27 09:37:16] -- Feature Found: nway-start exten: nway-start VERBOSE[30809] pbx.c: [Dec 27 09:37:16] -- Executing [s@macro-nway-start:1] NoOp("SIP/1111-000161a1", "nway-start BRIDGEPEER: SIP/1211-000161a2 , CHANNEL: SIP/1111-000161a1") in new stack VERBOSE[30809] pbx.c: [Dec 27 09:37:16] -- Executing [s@macro-nway-start:2] Set("SIP/1111-000161a1", "CONFID=0") in new stack VERBOSE[30809] pbx.c: [Dec 27 09:37:16] -- Executing [s@macro-nway-start:3] Set("SIP/1111-000161a1", "CONFID=1") in new stack VERBOSE[30809] pbx.c: [Dec 27 09:37:16] -- Executing [s@macro-nway-start:4] MeetMeCount("SIP/1111-000161a1", "11111,COUNT") in new stack VERBOSE[30809] config.c: [Dec 27 09:37:16] == Parsing '/etc/asterisk/meetme.conf': [Dec 27 09:37:16] VERBOSE[30809] config.c: [Dec 27 09:37:16] == Found VERBOSE[30809] pbx.c: [Dec 27 09:37:16] -- Executing [s@macro-nway-start:5] GotoIf("SIP/1111-000161a1", "0 ? s,repeat") in new stack VERBOSE[30809] pbx.c: [Dec 27 09:37:16] -- Executing [s@macro-nway-start:6] Set("SIP/1111-000161a1", "CONFNO=11111") in new stack VERBOSE[30809] pbx.c: [Dec 27 09:37:16] -- Executing [s@macro-nway-start:7] ChannelRedirect("SIP/1111-000161a1", "SIP/1211-000161a2,dynamic-nway,11111,1") in new stack VERBOSE[30809] pbx.c: [Dec 27 09:37:16] -- Executing [s@macro-nway-start:8] Set("SIP/1111-000161a1", "DYNAMIC_FEATURES=") in new stack VERBOSE[30809] pbx.c: [Dec 27 09:37:16] -- Executing [s@macro-nway-start:9] Goto("SIP/1111-000161a1", "dynamic-nway,11111,1") in new stack VERBOSE[30809] pbx.c: [Dec 27 09:37:16] -- Goto (dynamic-nway,11111,1) VERBOSE[30809] app_macro.c: [Dec 27 09:37:16] == Channel 'SIP/1111-000161a1' jumping out of macro 'nway-start' VERBOSE[30809] app_macro.c: [Dec 27 09:37:16] == Channel 'SIP/1111-000161a1' jumping out of macro 'stdexten' VERBOSE[30809] pbx.c: [Dec 27 09:37:16] -- Executing [11111@dynamic-nway:1] Answer("SIP/1111-000161a1", "") in new stack VERBOSE[30809] pbx.c: [Dec 27 09:37:16] -- Executing [11111@dynamic-nway:2] Set("SIP/1111-000161a1", "CONFNO=11111") in new stack VERBOSE[30809] pbx.c: [Dec 27 09:37:16] -- Executing [11111@dynamic-nway:3] Set("SIP/1111-000161a1", "MEETME_EXIT_CONTEXT=dynamic-nway-invite") in new stack VERBOSE[30809] pbx.c: [Dec 27 09:37:16] -- Executing [11111@dynamic-nway:4] Set("SIP/1111-000161a1", "DYNAMIC_FEATURES=") in new stack VERBOSE[30809] pbx.c: [Dec 27 09:37:16] -- Executing [11111@dynamic-nway:5] MeetMe("SIP/1111-000161a1", "11111,pdMX") in new stack VERBOSE[30809] res_musiconhold.c: [Dec 27 09:37:23] -- Started music on hold, class 'default', on SIP/1111-000161a1 VERBOSE[30809] res_musiconhold.c: [Dec 27 09:37:23] -- Stopped music on hold on SIP/1111-000161a1 VERBOSE[30809] res_musiconhold.c: [Dec 27 09:37:24] -- Started music on hold, class 'default', on SIP/1111-000161a1 VERBOSE[30809] res_musiconhold.c: [Dec 27 09:37:25] -- Stopped music on hold on SIP/1111-000161a1 VERBOSE[30809] chan_dahdi.c: [Dec 27 09:37:25] -- Hungup 'DAHDI/pseudo-896025403 

неуспешный редирект:
1211 звонит на 1111, 1111 в процессе разговора жмет *1, отбой обоих.

 VERBOSE[30832] pbx.c: [Dec 27 09:37:28] -- Executing [1111@numberplan-main:1] Macro("SIP/1211-000161a5", "stdexten,SIP,1111") in new stack .... VERBOSE[30832] pbx.c: [Dec 27 09:37:28] -- Executing [s@macro-stdexten:9] Set("SIP/1211-000161a5", "__DYNAMIC_FEATURES=nway-start") in new stack VERBOSE[30832] pbx.c: [Dec 27 09:37:28] -- Executing [s@macro-stdexten:10] Dial("SIP/1211-000161a5", "SIP/1111,300,gTtkw") in new stack VERBOSE[30832] app_dial.c: [Dec 27 09:37:28] -- Called 1111 VERBOSE[30832] app_dial.c: [Dec 27 09:37:28] -- SIP/1111-000161a6 is ringing VERBOSE[30832] app_dial.c: [Dec 27 09:37:29] -- SIP/1111-000161a6 answered SIP/1211-000161a5 DTMF[30832] channel.c: DTMF begin '*' received on SIP/1111-000161a6 DTMF[30832] channel.c: DTMF begin passthrough '*' on SIP/1111-000161a6 DTMF[30832] channel.c: DTMF end '*' received on SIP/1111-000161a6, duration 150 ms DTMF[30832] channel.c: DTMF end accepted with begin '*' on SIP/1111-000161a6 DTMF[30832] channel.c: DTMF end passthrough '*' on SIP/1111-000161a6 DTMF[30832] channel.c: DTMF begin '1' received on SIP/1111-000161a6 DTMF[30832] channel.c: DTMF begin passthrough '1' on SIP/1111-000161a6 DTMF[30832] channel.c: DTMF end '1' received on SIP/1111-000161a6, duration 150 ms DTMF[30832] channel.c: DTMF end accepted with begin '1' on SIP/1111-000161a6 DTMF[30832] channel.c: DTMF end passthrough '1' on SIP/1111-000161a6 VERBOSE[30832] features.c: [Dec 27 09:37:31] -- Feature Found: nway-start exten: nway-start VERBOSE[30832] pbx.c: [Dec 27 09:37:31] -- Executing [s@macro-nway-start:1] NoOp("SIP/1111-000161a6", "nway-start BRIDGEPEER: SIP/1211-000161a5 , CHANNEL: SIP/1111-000161a6") in new stack VERBOSE[30832] pbx.c: [Dec 27 09:37:31] -- Executing [s@macro-nway-start:2] Set("SIP/1111-000161a6", "CONFID=0") in new stack VERBOSE[30832] pbx.c: [Dec 27 09:37:31] -- Executing [s@macro-nway-start:3] Set("SIP/1111-000161a6", "CONFID=1") in new stack VERBOSE[30832] pbx.c: [Dec 27 09:37:31] -- Executing [s@macro-nway-start:4] MeetMeCount("SIP/1111-000161a6", "11111,COUNT") in new stack VERBOSE[30832] config.c: [Dec 27 09:37:31] == Parsing '/etc/asterisk/meetme.conf': [Dec 27 09:37:31] VERBOSE[30832] config.c: [Dec 27 09:37:31] == Found VERBOSE[30832] pbx.c: [Dec 27 09:37:31] -- Executing [s@macro-nway-start:5] GotoIf("SIP/1111-000161a6", "0 ? s,repeat") in new stack VERBOSE[30832] pbx.c: [Dec 27 09:37:31] -- Executing [s@macro-nway-start:6] Set("SIP/1111-000161a6", "CONFNO=11111") in new stack VERBOSE[30832] pbx.c: [Dec 27 09:37:31] -- Executing [s@macro-nway-start:7] ChannelRedirect("SIP/1111-000161a6", "SIP/1211-000161a5,dynamic-nway,11111,1") in new stack VERBOSE[30832] pbx.c: [Dec 27 09:37:31] -- Executing [s@macro-nway-start:8] Set("SIP/1111-000161a6", "DYNAMIC_FEATURES=") in new stack VERBOSE[30832] pbx.c: [Dec 27 09:37:31] -- Executing [s@macro-nway-start:9] Goto("SIP/1111-000161a6", "dynamic-nway,11111,1") in new stack VERBOSE[30832] pbx.c: [Dec 27 09:37:31] -- Goto (dynamic-nway,11111,1) VERBOSE[30832] app_macro.c: [Dec 27 09:37:31] == Channel 'SIP/1111-000161a6' jumping out of macro 'nway-start' VERBOSE[30832] app_macro.c: [Dec 27 09:37:31] == Spawn extension (dynamic-nway, 11111, 1) exited non-zero on 'SIP/1211-000161a5' in macro 'stdexten' VERBOSE[30832] pbx.c: [Dec 27 09:37:31] == Spawn extension (dynamic-nway, 11111, 1) exited non-zero on 'SIP/1211-000161a5' VERBOSE[30832] pbx.c: [Dec 27 09:37:31] -- Executing [11111@dynamic-nway:1] Answer("SIP/1211-000161a5", "") in new stack VERBOSE[30832] pbx.c: [Dec 27 09:37:31] -- Executing [11111@dynamic-nway:2] Set("SIP/1211-000161a5", "CONFNO=11111") in new stack VERBOSE[30832] pbx.c: [Dec 27 09:37:31] -- Executing [11111@dynamic-nway:3] Set("SIP/1211-000161a5", "MEETME_EXIT_CONTEXT=dynamic-nway-invite") in new stack VERBOSE[30832] pbx.c: [Dec 27 09:37:31] -- Executing [11111@dynamic-nway:4] Set("SIP/1211-000161a5", "DYNAMIC_FEATURES=") in new stack VERBOSE[30832] pbx.c: [Dec 27 09:37:31] -- Executing [11111@dynamic-nway:5] MeetMe("SIP/1211-000161a5", "11111,pdMX") in new stack VERBOSE[30832] app_meetme.c: [Dec 27 09:37:31] -- Created MeetMe conference 1023 for conference '11111' VERBOSE[30832] file.c: [Dec 27 09:37:31] -- <SIP/1211-000161a5> Playing 'conf-onlyperson.alaw' (language 'ru') VERBOSE[30832] res_musiconhold.c: [Dec 27 09:37:32] -- Started music on hold, class 'default', on SIP/1211-000161a5 VERBOSE[30832] res_musiconhold.c: [Dec 27 09:37:32] -- Stopped music on hold on SIP/1211-000161a5 VERBOSE[30832] chan_dahdi.c: [Dec 27 09:37:32] -- Hungup 'DAHDI/pseudo-225260949' VERBOSE[30832] pbx.c: [Dec 27 09:37:32] == Spawn extension (dynamic-nway, 11111, 5) exited non-zero on 'SIP/1211-000161a5' 

update 21/01/2013

в общем, не дождавшись помощи от звездных гуру, отвечаю сам себе: редирект сделал через внешний AGI скрипт. приведу лишь отличия

features.conf

[applicationmap] nway-start => *1,self,Macro,nway-start nway-inv => **,self,Macro,nway-ok nway-noinv => *#,self,Macro,nway-notok 

extensions.conf

.... [dynamic-nway] exten => _XXXXX,1,Answer same => n,Set(CONFNO=${EXTEN}) same => n,Set(MEETME_EXIT_CONTEXT=dynamic-nway-invite) same => n,Set(DYNAMIC_FEATURES=) same => n,MeetMe(${CONFNO},1dpMXx) exten => h,1,NoOp(Exit from Conference) same => n,MeetMeCount(${CONFNO},COUNT) same => n,ExecIf($[ ${COUNT} = 1 ] ?MeetMeAdmin(${CONFNO},K)) [macro-nway-start] exten => s,1,NoOp() same => n,Set(CONFID=0) same => n(repeat),Set(CONFID=$[ ${CONFID} + 1 ]) same => n,MeetMeCount(${CALLERID(num)}${CONFID},COUNT) same => n,GotoIf($[ ${COUNT} > 0 ] ? s,repeat) same => n,Set(CONFNO=${CALLERID(num)}${CONFID}) same => n,AGI(n-way-conf.php) ... 

n-way-conf.php

#!/usr/bin/php <?php require('/usr/share/php5/phpagi/phpagi.php'); set_time_limit(0); $agi = new AGI(); $CHANNEL=$agi->request['agi_channel']; $BRIDGEPEER=$agi->get_variable('BRIDGEPEER', $getvalue = true); $CONFNO=$agi->get_variable('CONFNO', $getvalue = true); $agimngr = new AGI_AsteriskManager(); $agimngr->connect(); $agimngr->Redirect($BRIDGEPEER,$CHANNEL,$CONFNO,'dynamic-nway',1); ?> 

теперь редирект может сделать не только caller, но и callee и решился вопрос: как отключать последнего участника конференции.

P.S. приведенные конфиги без подробностей и вырезаны из контекста.

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

спросил 2012-12-26 17:09:47 +0400

aleokos Gravatar aleokos
41 ● 9 ● 5 ● 11

обновил 2013-01-21 15:06:28 +0400

Comments

А точно не работает то?

zzuz ( 2012-12-26 18:06:04 +0400 )редактировать

точно, проверял.

aleokos ( 2012-12-26 20:05:37 +0400 )редактировать

Не верю.

zzuz ( 2012-12-26 20:11:38 +0400 )редактировать

ну умница,че. только непонятно зачем для этого agi. можно было просто через System.

meral ( 2013-01-21 14:11:23 +0400 )редактировать

Не лишайте автора гордости за 9 строк сложнейшего кода. Думаю через несколько часов можно будет на github'е его лицезреть)

zzuz ( 2013-01-21 14:14:09 +0400 )редактировать

последнего отключать просто. когда у вас ктото дисконектится по h проверять сколько осталося. если один - вырубать.

meral ( 2013-01-21 14:15:46 +0400 )редактировать

agi для того чтобы форков не плодить. хотя, конечно их там не много, но мне так показалось кашернее

aleokos ( 2013-01-21 14:46:49 +0400 )редактировать

действительно по h отлично можно выключать. Вот только сообщение "Вас только что удалили.." просто убивает наповал :)

aleokos ( 2013-01-21 15:02:16 +0400 )редактировать

мужик, имей совесть. после каждого твоего редактирования всем участникам темы приходит простыня ответа.

meral ( 2013-01-21 17:32:19 +0400 )редактировать

agi точно также форкает скрипт. не питайте иллюзий.

meral ( 2013-01-21 17:33:03 +0400 )редактировать

редактировать больше не буду, иллюзий не питаю.

aleokos ( 2013-01-21 21:18:36 +0400 )редактировать

2 Ответа

0

версия астриска? лог "неудачного" редиректа? соответсвенные контексты выводом asterisk -rx "dialplan show 12345@context"?

ссылка удалить спам редактировать

ответил 2012-12-26 20:16:07 +0400

meral Gravatar meral flag of Ukraine
23347 ● 24 ● 20 ● 177
http://pro-sip.net/

Comments

это всё я могу выложить, меня мучает вопрос: может ли callee сделать ChannelRedirect(${BRIDGEPEER} в принцыпе, может есть какое-то ограничение или баг, а я не знаю о них.

aleokos ( 2012-12-27 08:04:42 +0400 )редактировать

выложил инфу. логи немного почиканы.

aleokos ( 2012-12-27 10:06:10 +0400 )редактировать

может,может. но там другие параметры и ТЕМ же диалпланом не получится.

meral ( 2012-12-27 11:20:24 +0400 )редактировать

поджскажете?

aleokos ( 2012-12-27 11:24:32 +0400 )редактировать

подскажу. transfer делайте снаружи. через 0.2 секунды после отработки макроса. 100% работает.

meral ( 2012-12-27 11:47:07 +0400 )редактировать

прошу прощения, не догнал. речь о макросе macro-nway-start?

aleokos ( 2012-12-27 12:17:02 +0400 )редактировать

нет.о внешнем скрипте. короче,забейте. по приведенной вами информации сказать чтото сложно. надо експерементировать. hint: скорее всего вы не тот канал редиректите.

meral ( 2012-12-27 15:15:31 +0400 )редактировать

вот состояние каналов при неудаачном редиректе

SIP/1111-00016dc2 numberplan-main 1 Up AppDial (Outgoing Line) 1111 00:00:25 SIP/1211-00016dc1
SIP/1211-00016dc1 macro-stdexten s 10 Up Dial SIP/1111,300,gTtkw 1211 00:00:25 SIP/1111-00016dc2

какой канал нужно редиректить?

aleokos ( 2012-12-27 15:29:22 +0400 )редактировать

может ещё какую-нить информацию предоставить?

aleokos ( 2012-12-27 15:30:38 +0400 )редактировать

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

meral ( 2012-12-27 15:58:26 +0400 )редактировать

Эх, нелегко Вам. Спасибо за подсказки и ещё раз извините за беспокойство.

aleokos ( 2012-12-27 16:05:59 +0400 )редактировать

нам нормально.но это не значит что у нас есть свободное время чтоб ваш дилплан накатить и протестить. а по логам долше получится.

meral ( 2012-12-27 16:26:25 +0400 )редактировать
0

Аналогичная ситуация. Нужно, чтобы nway call мог собирать callee.

features.conf

[applicationmap] nwaystart => *0,caller,Macro,nwaycall-start 

extensions.conf

[macro-nwaycall-start] exten => s,1,NoOp ; присоединяем к конференции собеседника same => n,Set(__CONFNO=900) ; вариант 1 same => n,ChannelRedirect(${BRIDGEPEER},dynamic-nway,${CONFNO},1) ; вариант 2 same => n,System(asterisk -rx 'channel redirect ${BRIDGEPEER} dynamic-nway,${CONFNO},1') ; вариант 3 (скрипт аналогичный топикстартеру) same => n,AGI(/var/lib/asterisk/agi-bin/redirect.php) ; присоединяем к конференции инициатора same => n,Playback(conf-placeintoconf) same => n,Wait(0.3) same => n,Playback(confbridge-join) same => n,Dial(Local/${CONFNO}@dynamic-nway) [dynamic-nway] exten => _XXX,1,Answer() same => n,Set(__CONFNO=${EXTEN}) same => n,Set(MEETME_EXIT_CONTEXT=dynamic-nway-invite) same => n,Set(__DYNAMIC_FEATURES=) same => n,MeetMe(${CONFNO},pqMX) same => n,Hangup 

Вариант 1 - не работает.

[2013-10-11 12:53:58] DEBUG[26734]: pbx.c:4265 pbx_extension_helper: Launching 'ChannelRedirect' -- Executing [s@macro-nwaycall-start:4] ChannelRedirect("SIP/501-0000000e", "SIP/provider-0000000d,dynamic-nway,900,1") in new stack [2013-10-11 12:53:58] DEBUG[26734]: channel.c:2703 ast_softhangup_nolock: Soft-Hanging up channel 'SIP/provider-0000000d' [2013-10-11 12:53:58] DEBUG[26734]: app_macro.c:435 _macro_exec: Executed application: ChannelRedirect 

Вариант 2 - не работает.

[2013-10-11 12:51:46] DEBUG[26728]: pbx.c:4265 pbx_extension_helper: Launching 'System' -- Executing [s@macro-nwaycall-start:4] System("SIP/501-0000000c", "asterisk -rx 'channel redirect SIP/provider-0000000b dynamic-nway,900,1'") in new stack -- Remote UNIX connection [2013-10-11 12:51:46] DEBUG[26731]: channel.c:2703 ast_softhangup_nolock: Soft-Hanging up channel 'SIP/provider-0000000b' 

Вариант 3 - работает.

[2013-10-11 12:58:54] DEBUG[26744]: manager.c:4709 process_message: Running action 'Redirect' [2013-10-11 12:58:54] DEBUG[26744]: channel.c:2703 ast_softhangup_nolock: Soft-Hanging up channel 'SIP/provider-00000011' [2013-10-11 12:58:54] DEBUG[26744]: channel.c:5964 __ast_channel_masquerade: Planning to masquerade channel SIP/501-00000012 into the structure of AsyncGoto/SIP/501-00000012 [2013-10-11 12:58:54] DEBUG[26744]: channel.c:5974 __ast_channel_masquerade: Done planning to masquerade channel SIP/501-00000012 into the structure of AsyncGoto/SIP/501-00000012 [2013-10-11 12:58:54] DEBUG[26744]: channel.c:6549 ast_do_masquerade: Actually Masquerading SIP/501-00000012(6) into the structure of AsyncGoto/SIP/501-00000012(6) [2013-10-11 12:58:54] DEBUG[26744]: channel.c:6753 ast_do_masquerade: Putting channel SIP/501-00000012 in alaw/alaw formats [2013-10-11 12:58:54] DEBUG[26744]: chan_sip.c:6734 sip_fixup: SIP Fixup: New owner for dialogue 5ab4a8af421bef667fe4bcc527d2692c@192.168.2.33:5060: SIP/501-00000012 (Old parent: AsyncGoto/SIP/501-00000012<ZOMBIE>) [2013-10-11 12:58:54] DEBUG[26741]: res_agi.c:3509 run_agi: AsyncGoto/SIP/501-00000012<ZOMBIE> hungup [2013-10-11 12:58:54] DEBUG[26744]: channel.c:6829 ast_do_masquerade: Done Masquerading SIP/501-00000012 (6) [2013-10-11 12:58:54] DEBUG[26744]: res_rtp_asterisk.c:849 ast_rtp_change_source: Changing ssrc from 662727108 to 1707455763 due to a source change [2013-10-11 12:58:54] DEBUG[26745]: pbx.c:4265 pbx_extension_helper: Launching 'Answer' -- Executing [900@dynamic-nway:1] Answer("SIP/501-00000012", "") in new stack [2013-10-11 12:58:54] DEBUG[26744]: manager.c:4290 match_filter: Examining event: Event: Newchannel Privilege: call,all Channel: AsyncGoto/SIP/501-00000012 ChannelState: 6 ChannelStateDesc: Up CallerIDNum: CallerIDName: AccountCode: Exten: s Context: macro-nwaycall-start Uniqueid: 1381481934.45 [2013-10-11 12:58:54] DEBUG[26744]: manager.c:4290 match_filter: Examining event: Event: Masquerade Privilege: call,all Clone: SIP/501-00000012 CloneState: Up Original: AsyncGoto/SIP/501-00000012 OriginalState: Up -- <AsyncGoto/SIP/501-00000012<ZOMBIE>>AGI Script /var/lib/asterisk/agi-bin/redirect.php completed, returning 4 [2013-10-11 12:58:54] ERROR[26744]: utils.c:1278 ast_careful_fwrite: fwrite() returned error: Connection reset by peer == Manager 'me_and_only_me' logged off from 127.0.0.1 [2013-10-11 12:58:54] DEBUG[26741]: app_macro.c:429 _macro_exec: Spawn extension (macro-nwaycall-start,s,4) exited non-zero on 'AsyncGoto/SIP/501-00000012<ZOMBIE>' in macro 'nwaycall-start' 

Т.е. если ChannelRedirect() выполняется от Callee - каким-то образом работает только через AGI->AMI. При этом похоже, что просто оба канала редиректятся в контекст [dynamic-nway], т.к. инициатору далее должны выполняться Playback, Wait и т.д., но в выводе их нет.

Уважаемые гуру, адекватная работа этой хотелки в принципе возможна, или это косяк на уровне кода * и нужно искать другие варианты ?

ссылка удалить спам редактировать

ответил 2013-10-11 13:34:15 +0400

bb2kp Gravatar bb2kp
105 ● 7 ● 1 ● 8

Comments

Хотелка возможна. Проблема в коде. Писать вопрос, как ответ, в теме годовалой давности - плохой тон.

zzuz ( 2013-10-11 15:07:44 +0400 )редактировать

Ваш ответ

Please start posting your answer anonymously - your answer will be saved within the current session and published after you log in or create a new account. Please try to give a substantial answer, for discussions, please use comments and please do remember to vote (after you log in)!
[скрыть предварительный просмотр]

Закладки и информация

Добавить закладку
1 закладка

подписаться на rss ленту новостей

Статистика

Задан: 2012-12-26 17:09:47 +0400

Просмотрен: 41,290 раз

Обновлен: Oct 11 '13

Проект компании "АТС Дизайн"
Asterisk® и Digium® являются зарегистрированными торговыми марками компании Digium, Inc., США.
IP АТС Asterisk распространяется под лицензией GNU GPL.