VIDEOCHAT  ::   FAQ  ::   Поиск  ::   Регистрация  ::   Вход

CONGESTION не отрабатывается при переадресации

Проблемы Asterisk без вэб-оболочек и их решения

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

ded
Сообщения: 15630
Зарегистрирован: 26 авг 2010, 19:00

Re: CONGESTION не отрабатывается при переадресации

Сообщение ded »

Логику исполнения/прохождения вызова можно запутать в тупик, и это никакой не баг. На любом языке программирования (каким по сути является также и исполнение диалплана), можно создать стоп или бесконечный цикл, вольно или не вольно.

Между строкой
"Caller ID first try is "89101234567" <89101234567> 89101234567") in new stack
и
"Caller ID second try is "" <> ") in new stack
у вас в консоли можно видеть исполнение вашего вызова, последовательное исполнение всех макросов и переходов. Зачем же Вы не распутываете этот узел, а сюда пишете?
gaspaarr
Сообщения: 217
Зарегистрирован: 17 сен 2014, 21:20

Re: CONGESTION не отрабатывается при переадресации

Сообщение gaspaarr »

Вот на этом этапе теряется CALLERID.

-- Executing [continue@macro-dialout-trunk:1] NoOp("SIP/PROV-0000007b", "TRUNK Dial failed due to CONGESTION HANGUPCAUSE: 34 - failing through to other trunks") in new stack
-- Executing [continue@macro-dialout-trunk:2] Set("SIP/PROV-0000007b", "CALLERID(number)=") in new stack

Чьи это макросы? Кто формирует команду? Мне все таки кажется, что freepbx не настолько глубоко лезет в дела asterisk'а
ded
Сообщения: 15630
Зарегистрирован: 26 авг 2010, 19:00

Re: CONGESTION не отрабатывается при переадресации

Сообщение ded »

Это макросы freePBX.
На втором шаге затирается текущее значение CALLERID(number) командой
Set("SIP/PROV-0000007b", "CALLERID(number)=")
Вот кусок этого макроса (он у вас тоже есть) с метки continue. Шаги отличаются немного, я взял с другой версии, но это не важно.

Код: Выделить всё

 'continue' =>     1. GotoIf($["${OUTFAIL_${ARG1}}" = ""]?noreport) [pbx_config]
                    2. AGI(${OUTFAIL_${ARG1}})                    [pbx_config]
     [noreport]     3. Noop(TRUNK Dial failed due to ${DIALSTATUS} HANGUPCAUSE: ${HANGUPCAUSE} - failing through to other trunks) [pbx_config]
                    4. Set(CALLERID(number)=${AMPUSER})           [pbx_config]
Тут видно, что при событии TRUNK Dial failed со статусом HANGUPCAUSE в переменную CALLERID(number) передаётся содержи мое переменной ${AMPUSER}
Если там пусто, то это, конечно, может быть баг, но я сильно-сильно сомневаюсь. Вижу просто чьи то руки/действия.

Если люди не понимают логику freePBX, как настроить через вэб интерфейс все тонкости, указать на транке нужный Caller ID, то начинают ругать "дебильный интерфейс, или переписывать под себя макрос macro-dialout-trunk, это тоже можно сделать в рамках гибкости freePBX, но только всё это не правильно.

Объяснять "как надо сделать правильно" через форум затратно по времени в 3-4 раза, чем просто молча сделать "как надо". И в 10-20 раз менее эффективно, потому что люди ленятся искать, ленятся копаться в закрученых пружинках, проще написать на форуме "Что, неужели никто не знает почему это так у меня происходит?"
gaspaarr
Сообщения: 217
Зарегистрирован: 17 сен 2014, 21:20

Re: CONGESTION не отрабатывается при переадресации

Сообщение gaspaarr »

Я в макросы вообще не лазил, все настроено через вэб морду freepbx.
На транках настроен жестко свой CallerID, никакой другой туда не подставляется.

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

Подскажите имя скрипта который это делает? Посмотрю, что там прописано...
ded
Сообщения: 15630
Зарегистрирован: 26 авг 2010, 19:00

Re: CONGESTION не отрабатывается при переадресации

Сообщение ded »

ded писал(а):у вас в консоли можно видеть исполнение вашего вызова, последовательное исполнение всех макросов и переходов.
Согласно

Код: Выделить всё

'continue' =>     1. GotoIf($["${OUTFAIL_${ARG1}}" = ""]?noreport) [pbx_config]
                    2. AGI(${OUTFAIL_${ARG1}})                    [pbx_config]
     [noreport]     3. Noop(TRUNK Dial failed due to ${DIALSTATUS} HANGUPCAUSE: ${HANGUPCAUSE} - failing through to other trunks) [pbx_config]
                    4. Set(CALLERID(number)=${AMPUSER})           [pbx_config]
у вас перепрыгивается шаг 2. AGI(${OUTFAIL_${ARG1}}) потому что проверка
GotoIf($["${OUTFAIL_${ARG1}}" = ""]?noreport) получила пусто, и исполнение перешло на метку [noreport]
3. Noop(TRUNK Dial failed due to ${DIALSTATUS} HANGUPCAUSE: ${HANGUPCAUSE} - failing through to other trunks)
не известно, как у вас через вэб интерфейс организован перебор транков, но вот по исполнению диалплана будет обработка исходящего через второй транк, обрабатывается это в AGI(${OUTFAIL_${ARG1}})
ded писал(а):Объяснять "как надо сделать правильно" через форум затратно по времени в 3-4 раза, чем просто молча сделать "как надо".
gaspaarr
Сообщения: 217
Зарегистрирован: 17 сен 2014, 21:20

Re: CONGESTION не отрабатывается при переадресации

Сообщение gaspaarr »

Можете путь и имя скрипта этого указать?
Ответить
© 2008 — 2025 Asterisk.ru
Digium, Asterisk and AsteriskNOW are registered trademarks of Digium, Inc.
Design and development by PostMet-Netzwerk GmbH