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

Последовательность выполнения команд (n-way call)

0

Добрый день! Есть кусок диалплана, который используется для редиректа противоположной стороны разговора в динамическую конференц-комнату

[macro-nway-start]
exten => s,1,Set(__CONFNO=${UNIQUEID})
        same => n,ChannelRedirect(${BRIDGEPEER},nway-conf,${CONFNO},1)
        same => n,Read(NEW_CALLEE,dial,20,i)
        same => n,Set(DYNAMIC_FEATURES=${DYNAMIC_FEATURES_NWAYINV})
        same => n,Noop(${DIAL_OPTIONS})
        same => n,ExecIf($[${REGEX("H" ${DIAL_OPTIONS})} = 0]?Set(_DIAL_OPTIONS=${DIAL_OPTIONS}H))
        same => n,Set(CALLER=${CALLERID(num)})
        same => n,Set(DIALOUT_CONTEXT=${SIPPEER(${CALLER},context)})
        same => n,ExecIf($["${DIALOUT_CONTEXT}" = ""]?Set(DIALOUT_CONTEXT=common))
        same => n,Dial(Local/${NEW_CALLEE}@${DIALOUT_CONTEXT},,${DIAL_OPTIONS}g)
        same => n,ChannelRedirect(${CHANNEL(name)},nway-conf,${CONFNO},1)

[nway-conf]
exten => _X.,1,Answer
        same => n,Set(__CONFNO=${EXTEN})
        same => n,Noop(${CONFNO})
;       same => n,Set(DYNAMIC_FEATURES=${DYNAMIC_FEATURES_NWAY})
        same => n,Set(CONFBRIDGE(bridge,language)=${CHANNEL(language)})
        same => n,Set(CONFBRIDGE(user,announce_user_count)=no)
        same => n,Set(CONFBRIDGE(user,announce_join_leave)=no)
        same => n,Set(CONFBRIDGE(user,announce_only_user)=no)
        same => n,Set(CONFBRIDGE(user,music_on_hold_when_empty)=yes)
        same => n,ConfBridge(${CONFNO},,,nway_menu)
        same => n,Goto(nway-invite,s,1)

Вот по этой схеме http://voxlink.ru/kb/asterisk-configuration/callAsteriskConfBridge/

Так вот, если вызывающий абонент инициирует macro-nway-start, то все нормально

   --  Feature Found: nway-start exten: nway-start
        -- Executing [s@macro-nway-start:1] Set("SIP/2052-0000006c", "__CONFNO=1444137177.293") in new stack
        **-- Executing [s@macro-nway-start:2] ChannelRedirect("SIP/2052-0000006c", "SIP/2051-0000006d,nway-conf,1444137177.293,1") in new stack
        -- Executing [s@macro-nway-start:3] Read("SIP/2052-0000006c", "NEW_CALLEE,dial,20,i") in new stack
        -- Accepting a maximum of 20 digits.
        -- Executing [1444137177.293@nway-conf:1] Answer("SIP/2051-0000006d", "") in new stack
        -- Executing [1444137177.293@nway-conf:2] Set("SIP/2051-0000006d", "__CONFNO=1444137177.293") in new stack**
        -- Executing [1444137177.293@nway-conf:3] NoOp("SIP/2051-0000006d", "1444137177.293") in new stack
        -- Executing [1444137177.293@nway-conf:4] Set("SIP/2051-0000006d", "CONFBRIDGE(bridge,language)=ru") in new stack
        -- Executing [1444137177.293@nway-conf:5] Set("SIP/2051-0000006d", "CONFBRIDGE(user,announce_user_count)=no") in new stack
        -- Executing [1444137177.293@nway-conf:6] Set("SIP/2051-0000006d", "CONFBRIDGE(user,announce_join_leave)=no") in new stack
        -- Executing [1444137177.293@nway-conf:7] Set("SIP/2051-0000006d", "CONFBRIDGE(user,announce_only_user)=no") in new stack
        -- Executing [1444137177.293@nway-conf:8] Set("SIP/2051-0000006d", "CONFBRIDGE(user,music_on_hold_when_empty)=yes") in new stack
        -- Executing [1444137177.293@nway-conf:9] ConfBridge("SIP/2051-0000006d", "1444137177.293,,,nway_menu") in new stack
        -- <SIP/2051-0000006d> Playing 'confbridge-join.alaw' (language 'ru')
        -- <Bridge/0x7f12b4000918-input> Playing 'confbridge-join.slin' (language 'ru')
        -- Started music on hold, class 'default', on SIP/2051-0000006d
        -- User entered nothing.
        -- Executing [s@macro-nway-start:4] Set("SIP/2052-0000006c", "DYNAMIC_FEATURES=nway-ok") in new stack
        -- Executing [s@macro-nway-start:5] NoOp("SIP/2052-0000006c", "") in new stack
        -- Executing [s@macro-nway-start:6] ExecIf("SIP/2052-0000006c", "1?Set(_DIAL_OPTIONS=H)") in new stack
        -- Executing [s@macro-nway-start:7] Set("SIP/2052-0000006c", "CALLER=2052") in new stack
        -- Executing [s@macro-nway-start:8] Set("SIP/2052-0000006c", "DIALOUT_CONTEXT=common") in new stack
        -- Executing [s@macro-nway-start:9] ExecIf("SIP/2052-0000006c", "0?Set(DIALOUT_CONTEXT=common)") in new stack
        -- Executing [s@macro-nway-start:10] Dial("SIP/2052-0000006c", "Local/@common,,Hg") in new stack
    [Oct  6 16:13:10] NOTICE[10639][C-0000005d]: chan_local.c:978 local_call: No such extension/context @common while calling Local channel
        -- Couldn't call Local/@common
      == Everyone is busy/congested at this time (0:0/0/0)
        -- Executing [s@macro-nway-start:11] ChannelRedirect("SIP/2052-0000006c", "SIP/2052-0000006c,nway-conf,1444137177.293,1") in new stack

А вот если вызываемый, то asterisk сначала ждет конца выполнения всего macro-nway-start, и только после этого запускает nway-conf.

--  Feature Found: nway-start exten: nway-start
    -- Executing [s@macro-nway-start:1] Set("SIP/2051-0000006f", "__CONFNO=1444137352.301") in new stack
    **-- Executing [s@macro-nway-start:2] ChannelRedirect("SIP/2051-0000006f", "SIP/2052-0000006e,nway-conf,1444137352.301,1") in new stack
    -- Executing [s@macro-nway-start:3] Read("SIP/2051-0000006f", "NEW_CALLEE,dial,20,i") in new stack
    -- Accepting a maximum of 20 digits.
    -- User entered nothing.
    -- Executing [s@macro-nway-start:4] Set("SIP/2051-0000006f", "DYNAMIC_FEATURES=nway-ok") in new stack
    -- Executing [s@macro-nway-start:5] NoOp("SIP/2051-0000006f", "") in new stack**
    -- Executing [s@macro-nway-start:6] ExecIf("SIP/2051-0000006f", "1?Set(_DIAL_OPTIONS=H)") in new stack
    -- Executing [s@macro-nway-start:7] Set("SIP/2051-0000006f", "CALLER=2051") in new stack
    -- Executing [s@macro-nway-start:8] Set("SIP/2051-0000006f", "DIALOUT_CONTEXT=common") in new stack
    -- Executing [s@macro-nway-start:9] ExecIf("SIP/2051-0000006f", "0?Set(DIALOUT_CONTEXT=common)") in new stack
    -- Executing [s@macro-nway-start:10] Dial("SIP/2051-0000006f", "Local/@common,,Hg") in new stack
[Oct  6 16:16:15] NOTICE[10676][C-0000005f]: chan_local.c:978 local_call: No such extension/context @common while calling Local channel
    -- Couldn't call Local/@common
  == Everyone is busy/congested at this time (0:0/0/0)
    -- Executing [s@macro-nway-start:11] ChannelRedirect("SIP/2051-0000006f", "SIP/2051-0000006f,nway-conf,1444137352.301,1") in new stack
    -- Executing [1444137352.301@nway-conf:1] Answer("SIP/2051-0000006f", "") in new stack
    -- Executing [1444137352.301@nway-conf:2] Set("SIP/2051-0000006f", "__CONFNO=1444137352.301") in new stack
    -- Executing [1444137352.301@nway-conf:3] NoOp("SIP/2051-0000006f", "1444137352.301") in new stack
    -- Executing [1444137352.301@nway-conf:4] Set("SIP/2051-0000006f", "CONFBRIDGE(bridge,language)=ru") in new stack
    -- Executing [1444137352.301@nway-conf:5] Set("SIP/2051-0000006f", "CONFBRIDGE(user,announce_user_count)=no") in new stack
    -- Executing [1444137352.301@nway-conf:6] Set("SIP/2051-0000006f", "CONFBRIDGE(user,announce_join_leave)=no") in new stack
    -- Executing [1444137352.301@nway-conf:7] Set("SIP/2051-0000006f", "CONFBRIDGE(user,announce_only_user)=no") in new stack
    -- Executing [1444137352.301@nway-conf:8] Set("SIP/2051-0000006f", "CONFBRIDGE(user,music_on_hold_when_empty)=yes") in new stack
    -- Executing [1444137352.301@nway-conf:9] ConfBridge("SIP/2051-0000006f", "1444137352.301,,,nway_menu") in new stack
    -- <SIP/2051-0000006f> Playing 'confbridge-join.alaw' (language 'ru')

Почему меняется последовательность выполнения команд подскажите очень прошу

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

спросил 2015-10-06 18:04:21 +0400

podolskiy Gravatar podolskiy
1 5 1

обновил 2015-10-06 18:11:10 +0400

Comments

А не потому , что " -- User entered nothing." ?

zzuz ( 2015-10-06 21:09:18 +0400 )редактировать

Так ведь в двух случаях " -- User entered nothing." Только в первом случае контекст nway-conf выполняется сразу не дожидаясь ввода от юзера, а во втором ждет когда юзер что то введет, потом выполняет до конца macro-nway-start, а только потом nway-conf

podolskiy ( 2015-10-06 23:15:06 +0400 )редактировать

" Только в первом случае контекст nway-conf выполняется сразу не дожидаясь ввода от юзера" - не верю.

zzuz ( 2015-10-07 01:27:33 +0400 )редактировать

Собственно Вы привели ссылку , по которой якобы настраивали. Но судя по статье Вы решили накидать отсебятины.

zzuz ( 2015-10-07 01:30:16 +0400 )редактировать

Да что ж вы такой не верующий :) Хорошо, спрошу по другому, почему при выполнении одинаковых операций (вызов контекста macro-nway-start) с аппарата вызывающего и вызываемого пользователя разные логи вываливаются на консоль? :) Где отсебятина?

podolskiy ( 2015-10-07 08:23:04 +0400 )редактировать

Ну для начала , если брать статью, то где макрос macro-nway-ok ? Где собственно aplicationmap ? Уверен , что и он подкорректирован.

zzuz ( 2015-10-07 11:48:49 +0400 )редактировать

Та он то есть,просто я не понимаю каким боком он относится к данной теме.Вопрос был по macro-nway-start,странности происходят в нем.Вот все остальное, что относится к данному nway-call

[nway-invite] exten => s,1,Read(NEWCALLEE,dial,20,i) same => n,Set(DYNAMICFEATURES=${DYNAMICFEATURESNWAYINV}) same => n,ExecIf($[${REGEX("H" ${DIALOPTIONS})} = 0]?Set(DIALOPTIONS=${DIALOPTIONS}H)) same => n,Set(CALLER=${CALLERID(num)}) same => n,Set(DIALOUTCONTEXT=${SIPPEER(${CALLER},context)}) same => n,ExecIf($["${DIALOUTCONTEXT}" = ""]?Set(DIALOUTCONTEXT=common)) same => n,Dial(Local/${NEWCALLEE}@${DIALOUTCONTEXT},,${DIALOPTIONS}g) same => n,ChannelRedirect(${CHANNEL(name)},nway-conf,${CONFNO},1)

[macro-nway-ok] exten => s,1,ChannelRedirect(${BRIDGEPEER},nway-conf,${CONFNO},1)

features.conf: nway-start => *0,self,Macro,nway-start nway-ok => *2,self/caller,Macro,nway-ok

ps.Сорри за кашу, не нашел, как отредактировать комментарии

podolskiy ( 2015-10-07 12:00:38 +0400 )редактировать

1 Ответ

0

потомучто.

звонки caller/called в версиях посл е 1.8 существеено отличаются. если вы взялися модифицировать макросы,вам прийдется их продебажить(dumpchan всякие) и отладить

channelredirect не работает. запускайте редиирект с внешнего скрипта(а внешний скрипт через system)

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

ответил 2015-10-07 21:38:55 +0400

meral Gravatar meral flag of Ukraine
21228 23 18 169
http://pro-sip.net/

Ваш ответ

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)!
[скрыть предварительный просмотр]

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

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

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

Статистика

Задан: 2015-10-06 18:04:21 +0400

Просмотрен: 323 раз

Обновлен: Oct 07 '15

Похожие вопросы:

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