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

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

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

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

gaspaarr
Сообщения: 217
Зарегистрирован: 17 сен 2014, 21:20

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

Сообщение gaspaarr »

Два отдельных исходящих маршрута. В обоих указаны транки сначала 1 потом 2.
Первый маршрут используется для переадресации при неответе (как misc dest указан номер телефона):

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

  -- Called SIP/TRUNK1-2123456/89181234567
    -- Got SIP response 503 "Service Unavailable" back from 1.2.3.4:5060
    -- SIP/TRUNK1-2123456-00000755 is circuit-busy
  == Everyone is busy/congested at this time (1:0/1/0)
    -- Executing [s@macro-dialout-trunk:23] NoOp("SIP/1992-00000754", "Dial failed for some reason with DIALSTATUS = CONGESTION and HANGUPCAUSE = 34") in new stack
    -- Executing [s@macro-dialout-trunk:24] GotoIf("SIP/1992-00000754", "0?continue,1:s-CONGESTION,1") in new stack
    -- Goto (macro-dialout-trunk,s-CONGESTION,1)
    -- Executing [s-CONGESTION@macro-dialout-trunk:1] Set("SIP/1992-00000754", "RC=34") in new stack
    -- Executing [s-CONGESTION@macro-dialout-trunk:2] Goto("SIP/1992-00000754", "34,1") in new stack
    -- Goto (macro-dialout-trunk,34,1)
    -- Executing [34@macro-dialout-trunk:1] Goto("SIP/1992-00000754", "continue,1") in new stack
    -- Goto (macro-dialout-trunk,continue,1)
    -- Executing [continue@macro-dialout-trunk:1] NoOp("SIP/1992-00000754", "TRUNK Dial failed due to CONGESTION HANGUPCAUSE: 34 - failing through to other trunks") in new stack
    -- Executing [continue@macro-dialout-trunk:2] Set("SIP/1992-00000754", "CALLERID(number)=1992") in new stack
    -- Executing [89181234567@from-internal:7] Set("SIP/1992-00000754", "CALLERID(all)=") in new stack
    -- Executing [89181234567@from-internal:8] Set("SIP/1992-00000754", "_KEEPCID=TRUE") in new stack
    -- Executing [89181234567@from-internal:9] Goto("SIP/1992-00000754", "app-blackhole,zapateller,1") in new stack
    -- Goto (app-blackhole,zapateller,1)
    -- Executing [zapateller@app-blackhole:1] NoOp("SIP/1992-00000754", "Blackhole Dest: Play SIT Tone") in new stack
    -- Executing [zapateller@app-blackhole:2] Answer("SIP/1992-00000754", "") in new stack
    -- Executing [zapateller@app-blackhole:3] Zapateller("SIP/1992-00000754", "") in new stack
    -- Auto fallthrough, channel 'SIP/1992-00000754' status is 'CONGESTION'
sip*CLI>
    -- Attempting call on Local/s@tc-maint for application NoCDR() (Retry 1)
    -- Called s@tc-maint
Как мы видим, после отлупа от 1 транка, звонок уходит в блэкхол, и не пытается пойти через транк 2.

А это другой маршрут, используемый при прямом наборе, тут все работает как надо, получив отлуп от 1 транка, звонок успешно уходит через 2ой:

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

-- Called SIP/TRUNK1-2123456/89181234567
    -- Got SIP response 503 "Service Unavailable" back from 1.2.3.4:5060
    -- SIP/TRUNK1-2123456-00000757 is circuit-busy
  == Everyone is busy/congested at this time (1:0/1/0)
    -- Executing [s@macro-dialout-trunk:23] NoOp("SIP/1992-00000756", "Dial failed for some reason with DIALSTATUS = CONGESTION and HANGUPCAUSE = 34") in new stack
    -- Executing [s@macro-dialout-trunk:24] GotoIf("SIP/1992-00000756", "0?continue,1:s-CONGESTION,1") in new stack
    -- Goto (macro-dialout-trunk,s-CONGESTION,1)
    -- Executing [s-CONGESTION@macro-dialout-trunk:1] Set("SIP/1992-00000756", "RC=34") in new stack
    -- Executing [s-CONGESTION@macro-dialout-trunk:2] Goto("SIP/1992-00000756", "34,1") in new stack
    -- Goto (macro-dialout-trunk,34,1)
    -- Executing [34@macro-dialout-trunk:1] Goto("SIP/1992-00000756", "continue,1") in new stack
    -- Goto (macro-dialout-trunk,continue,1)
    -- Executing [continue@macro-dialout-trunk:1] NoOp("SIP/1992-00000756", "TRUNK Dial failed due to CONGESTION HANGUPCAUSE: 34 - failing through to other trunks") in new stack
    -- Executing [continue@macro-dialout-trunk:2] Set("SIP/1992-00000756", "CALLERID(number)=1992") in new stack
    -- Executing [89181234567@2123456-ALL:7] Macro("SIP/1992-00000756", "dialout-trunk,3,89181234567,,off") in new stack
    -- Executing [s@macro-dialout-trunk:1] Set("SIP/1992-00000756", "DIAL_TRUNK=3") in new stack
    -- Executing [s@macro-dialout-trunk:2] GosubIf("SIP/1992-00000756", "0?sub-pincheck,s,1()") in new stack
    -- Executing [s@macro-dialout-trunk:3] GotoIf("SIP/1992-00000756", "0?disabletrunk,1") in new stack
    -- Executing [s@macro-dialout-trunk:4] Set("SIP/1992-00000756", "DIAL_NUMBER=89181234567") in new stack
    -- Executing [s@macro-dialout-trunk:5] Set("SIP/1992-00000756", "DIAL_TRUNK_OPTIONS=trL(720000:60000:29501)") in new stack
    -- Executing [s@macro-dialout-trunk:6] Set("SIP/1992-00000756", "OUTBOUND_GROUP=OUT_3") in new stack
    -- Executing [s@macro-dialout-trunk:7] GotoIf("SIP/1992-00000756", "1?nomax") in new stack
    -- Goto (macro-dialout-trunk,s,9)
    -- Executing [s@macro-dialout-trunk:9] GotoIf("SIP/1992-00000756", "0?skipoutcid") in new stack
    -- Executing [s@macro-dialout-trunk:10] Set("SIP/1992-00000756", "DIAL_TRUNK_OPTIONS=TL(720000:60000:29500)") in new stack
    -- Executing [s@macro-dialout-trunk:11] Macro("SIP/1992-00000756", "outbound-callerid,3") in new stack
    -- Executing [s@macro-outbound-callerid:1] ExecIf("SIP/1992-00000756", "0?Set(CALLERPRES()=)") in new stack
    -- Executing [s@macro-outbound-callerid:2] ExecIf("SIP/1992-00000756", "0?Set(REALCALLERIDNUM=1992)") in new stack
    -- Executing [s@macro-outbound-callerid:3] GotoIf("SIP/1992-00000756", "1?normcid") in new stack
    -- Goto (macro-outbound-callerid,s,6)
    -- Executing [s@macro-outbound-callerid:6] Set("SIP/1992-00000756", "USEROUTCID=") in new stack
    -- Executing [s@macro-outbound-callerid:7] Set("SIP/1992-00000756", "EMERGENCYCID=") in new stack
    -- Executing [s@macro-outbound-callerid:8] Set("SIP/1992-00000756", "TRUNKOUTCID=2123456") in new stack
    -- Executing [s@macro-outbound-callerid:9] GotoIf("SIP/1992-00000756", "1?trunkcid") in new stack
    -- Goto (macro-outbound-callerid,s,14)
    -- Executing [s@macro-outbound-callerid:14] ExecIf("SIP/1992-00000756", "1?Set(CALLERID(all)=2123456)") in new stack
    -- Executing [s@macro-outbound-callerid:15] ExecIf("SIP/1992-00000756", "0?Set(CALLERID(all)=)") in new stack
    -- Executing [s@macro-outbound-callerid:16] ExecIf("SIP/1992-00000756", "1?Set(CALLERID(all)=2123456)") in new stack
    -- Executing [s@macro-outbound-callerid:17] ExecIf("SIP/1992-00000756", "0?Set(CALLERPRES()=prohib_passed_screen)") in new stack
    -- Executing [s@macro-outbound-callerid:18] Set("SIP/1992-00000756", "CDR(outbound_cnum)=2123456") in new stack
    -- Executing [s@macro-outbound-callerid:19] Set("SIP/1992-00000756", "CDR(outbound_cnam)=") in new stack
[2015-01-22 00:21:39] WARNING[28305]: func_cdr.c:349 cdr_write_callback: CDR requires a value (CDR(variable)=value)
    -- Executing [s@macro-dialout-trunk:12] GosubIf("SIP/1992-00000756", "0?sub-flp-3,s,1()") in new stack
    -- Executing [s@macro-dialout-trunk:13] Set("SIP/1992-00000756", "OUTNUM=89181234567") in new stack
    -- Executing [s@macro-dialout-trunk:14] Set("SIP/1992-00000756", "custom=SIP/TRUNK2-2123456") in new stack
    -- Executing [s@macro-dialout-trunk:15] ExecIf("SIP/1992-00000756", "0?Set(DIAL_TRUNK_OPTIONS=M(setmusic^default)TL(720000:60000:29500))") in new stack
    -- Executing [s@macro-dialout-trunk:16] ExecIf("SIP/1992-00000756", "0?Set(DIAL_TRUNK_OPTIONS=TL(720000:60000:29500)M(confirm))") in new stack
    -- Executing [s@macro-dialout-trunk:17] Macro("SIP/1992-00000756", "dialout-trunk-predial-hook,") in new stack
    -- Executing [s@macro-dialout-trunk-predial-hook:1] MacroExit("SIP/1992-00000756", "") in new stack
    -- Executing [s@macro-dialout-trunk:18] GotoIf("SIP/1992-00000756", "0?bypass,1") in new stack
    -- Executing [s@macro-dialout-trunk:19] ExecIf("SIP/1992-00000756", "1?Set(CONNECTEDLINE(num,i)=89181234567)") in new stack
    -- Executing [s@macro-dialout-trunk:20] ExecIf("SIP/1992-00000756", "1?Set(CONNECTEDLINE(name,i)=CID:2123456)") in new stack
    -- Executing [s@macro-dialout-trunk:21] GotoIf("SIP/1992-00000756", "0?customtrunk") in new stack
    -- Executing [s@macro-dialout-trunk:22] Dial("SIP/1992-00000756", "SIP/TRUNK2-2123456/89181234567,300,TL(720000:60000:29500)") in new stack
  == Using SIP RTP TOS bits 184
  == Using SIP RTP CoS mark 5
    -- Called SIP/TRUNK2-2123456/89181234567
    -- SIP/TRUNK2-2123456-00000758 is making progress passing it to SIP/1992-00000756
  == Spawn extension (macro-dialout-trunk, s, 22) exited non-zero on 'SIP/1992-00000756' in macro 'dialout-trunk'
  == Spawn extension (2123456-ALL, 89181234567, 7) exited non-zero on 'SIP/1992-00000756'
    -- Executing [h@2123456-ALL:1] Macro("SIP/1992-00000756", "hangupcall,") in new stack
    -- Executing [s@macro-hangupcall:1] GotoIf("SIP/1992-00000756", "1?theend") in new stack
    -- Goto (macro-hangupcall,s,3)
    -- Executing [s@macro-hangupcall:3] ExecIf("SIP/1992-00000756", "0?Set(CDR(recordingfile)=)") in new stack
    -- Executing [s@macro-hangupcall:4] Hangup("SIP/1992-00000756", "") in new stack
  == Spawn extension (macro-hangupcall, s, 4) exited non-zero on 'SIP/1992-00000756' in macro 'hangupcall'
  == Spawn extension (2123456-ALL, h, 1) exited non-zero on 'SIP/1992-00000756'
Баг или так и должно быть?
Аватара пользователя
zzuz
Сообщения: 1658
Зарегистрирован: 21 сен 2010, 13:33
Контактная информация:

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

Сообщение zzuz »

Как настроили - так и работает. Нет никакого бага.
Линия24 - Системы Массового Телефонного Обслуживания
gaspaarr
Сообщения: 217
Зарегистрирован: 17 сен 2014, 21:20

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

Сообщение gaspaarr »

Настроили все верно, очередной баг астериска...

Если в исходящем маршруте стоит условие -- CID вида 1XX, а Extension с которого осуществляется вызов имеет ext номер 1119 но в CID Num Alias подставлено 111, то вызов обрабатывается только первым транком, потом уходит в блэкхол. При этом система правильно трактует CID Num Alias, просто на каком-то этапе, когда надо передать вызов на второй транк, система смотрит не на CID Num Alias, а на Ext num и соответственно заруливает вызов в блэкхол, т.к. для такого CID у нее нет маршрута.
Аватара пользователя
zzuz
Сообщения: 1658
Зарегистрирован: 21 сен 2010, 13:33
Контактная информация:

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

Сообщение zzuz »

Причем тут asterisk ? Речь идет о Freepbx . А то , что усложняете Вы себе жизнь странными схемами - это проблема не фрейморка.
Линия24 - Системы Массового Телефонного Обслуживания
gaspaarr
Сообщения: 217
Зарегистрирован: 17 сен 2014, 21:20

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

Сообщение gaspaarr »

Согласен, с алиасами неоднозначная ситуация, теперь те же грабли с внешними входящими звонками, теперь вообще не ясно, кто виноват, * или freepbx.

В маршруте прописано:
exten => _*8[89]XXXXXXXXX/_XXX.

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

Если убираю _XXX. в маршруте, то вызов переходит на второй транк.

На каком уровне дэбага можно увидеть процесс обработки CID в маршруте?
Аватара пользователя
zzuz
Сообщения: 1658
Зарегистрирован: 21 сен 2010, 13:33
Контактная информация:

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

Сообщение zzuz »

Все расскажет команда

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

dialplan show <набираемый_номер>@from-internal 
А уровень дебага тут ни при чем , так как это не дебаг , а обычное логгирование.

В вашем маршруте идет переадресация с внутреннего интерфейса. Почему Вы решили , что звонок должен подходить под шаблон _XXX. ?
Линия24 - Системы Массового Телефонного Обслуживания
gaspaarr
Сообщения: 217
Зарегистрирован: 17 сен 2014, 21:20

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

Сообщение gaspaarr »

Так по dialplan show все именно так, как и должно быть (CID, транки)... вопрос в том, чтобы понять, когда вызов не проходит по первому транку, какой caller id обрабатывается в системе, раз он не попадает во второй транк.
gaspaarr
Сообщения: 217
Зарегистрирован: 17 сен 2014, 21:20

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

Сообщение gaspaarr »

Обновил модули freepbx, поменял 13 ядро на 11... этот глюк не ушел
ded
Сообщения: 15628
Зарегистрирован: 26 авг 2010, 19:00

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

Сообщение ded »

чтобы понять, когда вызов не проходит по первому транку, какой caller id обрабатывается в системе - добавьте строки NoOp(Caller ID is {CALLERID(all)}) во все места, где обрабатывается этот вызов.
gaspaarr
Сообщения: 217
Зарегистрирован: 17 сен 2014, 21:20

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

Сообщение gaspaarr »

ну да... все так и есть,
вот первая попытка:

"Caller ID first try is "89101234567" <89101234567> 89101234567") in new stack

а вот это вторая попытка, после того как первый транк отказался выполнять вызов:

"Caller ID second try is "" <> ") in new stack

и все таки, это баг астериска или freepbx?
Ответить
© 2008 — 2025 Asterisk.ru
Digium, Asterisk and AsteriskNOW are registered trademarks of Digium, Inc.
Design and development by PostMet-Netzwerk GmbH