ВидеоКонф(ВКС)  ::   FAQ  ::   Поиск  ::   Регистрация  ::   Вход

ChannelRedirect отваливается caller

Новичком считается только что прочитавший «Астериск - будущее телефонии»
http://asterisk.ru/knowledgebase/books
и пытающийся сделать большее

Модераторы: april22, Zavr2008

ChannelRedirect отваливается caller

Сообщение v-11 » 31 июл 2017, 00:43

Пытаюсь, почитав выдачу гугла по запросу "asterisk nway conference"
(нарпимер https://voxlink.ru/kb/asterisk-configur ... onfBridge/
или
https://forum.asterisk.ru/viewtopic.php ... elredirect)
, сделать на тестовой машине перевод обоих участников обычного разговора в confbridge(с дальнейшеим приглашением остальных участников из меню, для начала)
И, если с закидыванием того, кому звоним, никаких проблем, то инициатор звонка просто сбрасывается. Отрезал уже всё что можно:

features.conf
[applicationmap]
nway-start => 0,self,Macro,nway-start

extensions.conf
[Calls_Conf]
exten => conference,1,NoOp()
same => n,ConfBridge(0,,,menu)
[macro-nway-start]
exten => s,1,NoOp(BRIDGEPEER: ${BRIDGEPEER} , CHANNEL: ${CHANNEL}, CALLERID: ${CALLERID(num)})
same => n,ChannelRedirect(${BRIDGEPEER},Calls_Conf,conference,1)
same => n,ChannelRedirect(${CHANNEL},Calls_Conf,conference,1)

звоню с 101 на 103,
В логе:
Executing [s@macro-nway-start:1] NoOp("SIP/101-000001b7", "BRIDGEPEER: SIP/103-000001b8 , CHANNEL: SIP/101-000001b7, CALLERID: 101") in new stack
-- Executing [s@macro-nway-start:2] ChannelRedirect("SIP/101-000001b7", "SIP/103-000001b8,Calls_Conf,conference,1") in new stack
-- Channel SIP/103-000001b8 left 'simple_bridge' basic-bridge <af019f4e-e5c0-49cd-b016-438880c875a8>
-- Executing [conference@Calls_Conf:1] NoOp("SIP/103-000001b8", "") in new stack
-- Executing [conference@Calls_Conf:2] ConfBridge("SIP/103-000001b8", "0,,,menu") in new stack
-- <SIP/103-000001b8> Playing 'conf-onlyperson.gsm' (language 'en')
-- Executing [s@macro-nway-start:3] ChannelRedirect("SIP/101-000001b7", "SIP/101-000001b7,Calls_Conf,conference,1") in new stack
== Channel 'SIP/101-000001b7' jumping out of macro 'nway-start'
-- Channel SIP/101-000001b7 left 'simple_bridge' basic-bridge <af019f4e-e5c0-49cd-b016-438880c875a8>
-- Executing [conference@Calls_Conf:1] NoOp("SIP/101-000001b7", "") in new stack
-- Channel CBAnn/0-0000005a;2 joined 'softmix' base-bridge <cdc23515-9f21-4df5-acb1-87c047dcf04b>
-- Channel SIP/103-000001b8 joined 'softmix' base-bridge <cdc23515-9f21-4df5-acb1-87c047dcf04b>
-- <CBAnn/0-0000005a;1> Playing 'confbridge-join.gsm' (language 'en')

Что за канал CBAnn..., мочему мой суицидальный SIP/101-000001b7 делает jumping out of macro ?... verbosity задрал в максимум, всё равно не понимаю

PS:версия Asterisk certified/13.13-cert4, CentOS6.9
v-11
 
Сообщений: 6
Зарегистрирован: 31 июл 2017, 00:26

Re: ChannelRedirect отваливается caller

Сообщение ded » 31 июл 2017, 12:05

v-11 писал(а):Что за канал CBAnn...,

Канал CB - это и есть ConfBridge, синтетический канал, в котором участники слышат друг-друга.
v-11 писал(а):мочему мой суицидальный SIP/101-000001b7 делает jumping out of macro ?..
Человечество делится на тех кто исправляет свои опечатки и описки, и тех, кому это пофиг. Это к вопросу Мочему.
Ваш макрос macro-nway-start содержит три шага (см. выше),
-- Executing [s@macro-nway-start:3] ChannelRedirect("SIP/101-000001b7", "SIP/101-000001b7,Calls_Conf,conference,1") in new stack - это третий шаг!
и, будучи вызываем из какой-либо точки диалпланаЮ возвращает выполнение диалплана в ту точку, откуда вызывался.
== Channel 'SIP/101-000001b7' jumping out of macro 'nway-start' - то есть jumping out of macro 'nway-start' -
ded
 
Сообщений: 15821
Зарегистрирован: 26 авг 2010, 19:00

Re: ChannelRedirect отваливается caller

Сообщение v-11 » 31 июл 2017, 13:39

будучи вызываем из какой-либо точки диалпланаЮ возвращает выполнение диалплана в ту точку, откуда вызывался.

Значит ли это, что астериск выполняет для звонящего(101) только одну строчку, на которую ссылается макрос (NoOp()), после чего возвращается назад (а там - пусто)?
Если да, то почему 103й проходит дальше по контексту до Confbridge(0,,,menu)?
v-11
 
Сообщений: 6
Зарегистрирован: 31 июл 2017, 00:26

Re: ChannelRedirect отваливается caller

Сообщение ded » 31 июл 2017, 13:48

Потому что 103 выполняет другую цепочку диалплана в другом контексте -
Код: выделить все
[Calls_Conf]
exten => conference,1,NoOp()
same => n,ConfBridge(0,,,menu)
ded
 
Сообщений: 15821
Зарегистрирован: 26 авг 2010, 19:00

Re: ChannelRedirect отваливается caller

Сообщение v-11 » 31 июл 2017, 14:18

т.е. в данном примере всё, что происходит для вызываемого 103го -"полноценные" действия Астериска с переводом его канала в другую цепочку/контекст, а для 101го - макрос-внутри-звонка, делающий одну указанную строку указанного контекста(channel redirect в NoOp) и возвращающийся назад(в уже развалившийся без ушедшего в confbridge 103го звонок) без возможности пройти "дальше" по контексту Calls_Conf?
v-11
 
Сообщений: 6
Зарегистрирован: 31 июл 2017, 00:26

Re: ChannelRedirect отваливается caller

Сообщение ded » 31 июл 2017, 14:24

Не осилил это Ваше длинное предложение.
Краткость - это сестра. Просто сестра.
ded
 
Сообщений: 15821
Зарегистрирован: 26 авг 2010, 19:00

Re: ChannelRedirect отваливается caller

Сообщение v-11 » 31 июл 2017, 14:36

Не осилил это Ваше длинное предложение.

Канал SIP/101... - выполняет ТОЛЬКО строку "exten => conference,1,NoOp()"?
v-11
 
Сообщений: 6
Зарегистрирован: 31 июл 2017, 00:26

Re: ChannelRedirect отваливается caller

Сообщение awsswa » 31 июл 2017, 14:41

Вроде уже все что могли намекнули что есть ошибка копирования ... осталось только пальцем кнуть в ошибку синтеза.
Ткнуть ?
платный суппорт по мере возможностей
awsswa
 
Сообщений: 2390
Зарегистрирован: 09 июн 2012, 10:52
Откуда: Россия, Пермь skype: yarick_perm

Re: ChannelRedirect отваливается caller

Сообщение v-11 » 02 сен 2017, 18:37

Итого надо было сделать две вещи:
1)добавить опцию g в команду dial чтобы по её завершению вызывающий катился дальше по контексту
2)написать таки Goto в контекст с конференцией в конце макроса

features:
[applicationmap]
nway-start => 0,self,Macro,nway-start

extensions:
[localsets]
exten => _XXX,1,NoOp()
same => n,Set(DYNAMIC_FEATURES=nway-start)
same => n,Dial(SIP/${EXTEN},,g)
same => n,Hangup()

[conf]
exten => conf,1,ConfBridge(0)

[macro-nway-start]
exten => s,1,NoOp()
same => n,ChannelRedirect(${BRIDGEPEER},conf,conf,1)
same => n,GoTo(conf,conf,1)

Пока что для меня остаются загадкой две вещи:
1) почему не работают ожидаемым образом pre-dial handlerы "b" и "B"?
(описанные тут https://wiki.asterisk.org/wiki/display/ ... l+Handlers)
у меня в случае с b - feature недоступна никому, а в случае с B(или если её установить как в примере выше) - устанавливается и для caller и для callee
2)как сделать закидывание в conf доступным обоим участникам разговора? При текущей конфигурации callee, вызвавший macro-nway-start закинет в conf только caller'a, а сам получит hangup. Видимо, это связано с тем что callee ни про какой dial,,g не знает (по крайней мере переменная macro_exten у него пустая)
v-11
 
Сообщений: 6
Зарегистрирован: 31 июл 2017, 00:26

Re: ChannelRedirect отваливается caller

Сообщение v-11 » 02 сен 2017, 20:57

По dynamic features я совсем запутался.
запихнул в [macro-nway-start] строку вида Verbose(features are ${DYNAMIC_FEATURES})..
Так вот для Caller'a там есть искомый nway-start в переменной, а для callee - нет! И при этом по нажатию на 0 макрос запускается!
v-11
 
Сообщений: 6
Зарегистрирован: 31 июл 2017, 00:26


Вернуться в Вопросы новичков

Кто сейчас на форуме

Сейчас этот форум просматривают: Google [Bot] и гости: 27

© 2008 — 2024 Asterisk.ru
Digium, Asterisk and AsteriskNOW are registered trademarks of Digium, Inc.
Design and development by PostMet-Netzwerk GmbH