Нет сигнала Busy при звонке из города через DAHDI
Схема следующая.
Имеется Asterisk 1.6.2.20, FreePBX 2.9, плата Digium TE122.
Звонки в город и из города ходят нормально.
Во FreePBX в настройках пира 8888, стоит входящий DID 660603, т.е. звонки из города на этот номер направляются на внутренний номер 8888.
Проблема в том, что если 8888 занят или сбрасывает звонок, то busy абоненту из города не передается, у него продолжает идти дозвон.
Call Waiting и на телефоне и во FreePBX стоит no.
Вот настройки DAHDI:
| Code: |
| [office] group=1 signalling=pri_cpe trunkname=office trunkstyle=digital pridialplan=national prilocaldialplan=national ;priindication=outofband callwaiting=no dahdichan=1-15,17-31 switchtype=euroisdn context=from-dahdi echocancel=yes echocancelwhenbridged=yes language=ru |
При сбрасывании входящего звонка от SIP-телефона приходит Busy, но на PRI сигнал не отправляется.
Вот что в логе (pri debug включен):
| Code: |
| -- Executing [s@macro-dial-one:38] Dial("DAHDI/1-1", "SIP/8888,,tr") in new stack == Using SIP RTP TOS bits 184 == Using SIP RTP CoS mark 5 -- Called 8888 -- SIP/8888-000000ae is ringing -- Got SIP response 486 "Busy Here" back from 10.10.0.30 -- SIP/8888-000000ae is busy == Everyone is busy/congested at this time (1:1/0/0) -- Executing [s@macro-dial-one:39] ExecIf("DAHDI/1-1", "0?Set(DIALSTATUS=)") in new stack -- Executing [s@macro-dial-one:40] GosubIf("DAHDI/1-1", "0?s-BUSY,1") in new stack -- Executing [s@macro-dial-one:41] MacroExit("DAHDI/1-1", "") in new stack -- Executing [s@macro-exten-vm:15] GotoIf("DAHDI/1-1", "0?exit") in new stack -- Executing [s@macro-exten-vm:16] Set("DAHDI/1-1", "SV_DIALSTATUS=BUSY") in new stack -- Executing [s@macro-exten-vm:17] GosubIf("DAHDI/1-1", "0?docfu,1") in new stack -- Executing [s@macro-exten-vm:18] GosubIf("DAHDI/1-1", "0?docfb,1") in new stack -- Executing [s@macro-exten-vm:19] Set("DAHDI/1-1", "DIALSTATUS=BUSY") in new stack -- Executing [s@macro-exten-vm:20] ExecIf("DAHDI/1-1", "0?MacroExit()") in new stack -- Executing [s@macro-exten-vm:21] GotoIf("DAHDI/1-1", "1?s-BUSY,1") in new stack -- Goto (macro-exten-vm,s-BUSY,1) -- Executing [s-BUSY@macro-exten-vm:1] GotoIf("DAHDI/1-1", "0?exit,1") in new stack -- Executing [s-BUSY@macro-exten-vm:2] PlayTones("DAHDI/1-1", "busy") in new stack -- Executing [s-BUSY@macro-exten-vm:3] Busy("DAHDI/1-1", "20") in new stack |
После этого для вызывающего абонента гудки вызова продолжаются.
Записи в консоли от pri debug начинаются только после того, как я кладу трубку, с которой идет звонок.
Подскажите в чем может быть проблема. При звонках внутри сети или звона на внешнюю сеть Busy передается нормально.
Last edited by m_aster on Wed Sep 28, 2011 06:26
2.
| Quote: |
| Вот что в логе (pri debug включен): |
не включён
2) Включен, но когда на принимающей стороне сбрасываю звонок, пишет только то, что я указал выше. Когда кладу трубку на вызывающей стороне вот что в логе:
| Code: |
| < Protocol Discriminator: Q.931 (8) len=9 < TEI=0 Call Ref: len= 2 (reference 47/0x2F) (Sent from originator) < Message Type: DISCONNECT (69) < [08 02 80 90] < Cause (len= 4) [ Ext: 1 Coding: CCITT (ITU) standard (0) Spare: 0 Location: User (0) < Ext: 1 Cause: Normal Clearing (16), class = Normal Event (1) ] Received message for call 0x2aaac803a9c0 on link 0x11b278a0 TEI/SAPI 0/0 -- Processing IE 8 (cs0, Cause) -- Found active call: 0x2aaac803a9c0 cref:47 q931.c:8707 post_handle_q931_message: Call 47 enters state 12 (Disconnect Indication). Hold state: Idle -- Span 1: Channel 0/6 got hangup request, cause 16 == Spawn extension (macro-exten-vm, s-BUSY, 3) exited non-zero on 'DAHDI/6-1' in macro 'exten-vm' == Spawn extension (from-did-direct, 8888, 2) exited non-zero on 'DAHDI/6-1' -- Executing [h@from-did-direct:1] Macro("DAHDI/6-1", "hangupcall,") in new stack -- Executing [s@macro-hangupcall:1] GotoIf("DAHDI/6-1", "1?theend") in new stack -- Goto (macro-hangupcall,s,3) -- Executing [s@macro-hangupcall:3] Hangup("DAHDI/6-1", "") in new stack == Spawn extension (macro-hangupcall, s, 3) exited non-zero on 'DAHDI/6-1' in macro 'hangupcall' == Spawn extension (from-did-direct, h, 1) exited non-zero on 'DAHDI/6-1' q931.c:6837 q931_hangup: Hangup other cref:47 q931.c:6594 __q931_hangup: ourstate Disconnect Indication, peerstate Disconnect Request, hold-state Idle q931.c:5703 q931_release: Call 47 enters state 19 (Release Request). Hold state: Idle > DL-DATA request > Protocol Discriminator: Q.931 (8) len=9 > TEI=0 Call Ref: len= 2 (reference 47/0x2F) (Sent to originator) > Message Type: RELEASE (77) TEI=0 Transmitting N(S)=5, window is open V(A)=5 K=7 > Protocol Discriminator: Q.931 (8) len=9 > TEI=0 Call Ref: len= 2 (reference 47/0x2F) (Sent to originator) > Message Type: RELEASE (77) > [08 02 81 90] > Cause (len= 4) [ Ext: 1 Coding: CCITT (ITU) standard (0) Spare: 0 Location: Private network serving the local user (1) > Ext: 1 Cause: Normal Clearing (16), class = Normal Event (1) ] -- Hungup 'DAHDI/6-1' < Protocol Discriminator: Q.931 (8) len=5 < TEI=0 Call Ref: len= 2 (reference 47/0x2F) (Sent from originator) < Message Type: RELEASE COMPLETE (90) Received message for call 0x2aaac803a9c0 on link 0x11b278a0 TEI/SAPI 0/0 q931.c:8567 post_handle_q931_message: Call 47 enters state 0 (Null). Hold state: Idle q931.c:6837 q931_hangup: Hangup other cref:47 q931.c:6594 __q931_hangup: ourstate Null, peerstate Null, hold-state Idle Destroying call 0x2aaac803a9c0, ourstate Null, peerstate Null, hold-state Idle |
Вот что в логе, если звонить с одного сип-телефона на второй (в это время занятый).
| Code: |
| -- Called 3120 -- Got SIP response 486 "Busy Here" back from 10.10.3.250 -- SIP/3120-000000c9 is busy == Everyone is busy/congested at this time (1:1/0/0) -- Executing [s@macro-dial-one:39] ExecIf("SIP/8888-000000c8", "1?Set(DIALSTATUS=BUSY)") in new stack -- Executing [s@macro-dial-one:40] GosubIf("SIP/8888-000000c8", "0?s-BUSY,1") in new stack -- Executing [s@macro-dial-one:41] MacroExit("SIP/8888-000000c8", "") in new stack -- Executing [s@macro-exten-vm:15] GotoIf("SIP/8888-000000c8", "0?exit") in new stack -- Executing [s@macro-exten-vm:16] Set("SIP/8888-000000c8", "SV_DIALSTATUS=BUSY") in new stack -- Executing [s@macro-exten-vm:17] GosubIf("SIP/8888-000000c8", "0?docfu,1") in new stack -- Executing [s@macro-exten-vm:18] GosubIf("SIP/8888-000000c8", "0?docfb,1") in new stack -- Executing [s@macro-exten-vm:19] Set("SIP/8888-000000c8", "DIALSTATUS=BUSY") in new stack -- Executing [s@macro-exten-vm:20] ExecIf("SIP/8888-000000c8", "0?MacroExit()") in new stack -- Executing [s@macro-exten-vm:21] GotoIf("SIP/8888-000000c8", "1?s-BUSY,1") in new stack -- Goto (macro-exten-vm,s-BUSY,1) -- Executing [s-BUSY@macro-exten-vm:1] GotoIf("SIP/8888-000000c8", "0?exit,1") in new stack -- Executing [s-BUSY@macro-exten-vm:2] PlayTones("SIP/8888-000000c8", "busy") in new stack -- Executing [s-BUSY@macro-exten-vm:3] Busy("SIP/8888-000000c8", "20") in new stack == Spawn extension (macro-exten-vm, s-BUSY, 3) exited non-zero on 'SIP/8888-000000c8' in macro 'exten-vm' == Spawn extension (from-internal, 3120, 2) exited non-zero on 'SIP/8888-000000c8' -- Executing [h@from-internal:1] Hangup("SIP/8888-000000c8", "") in new stack == Spawn extension (from-internal, h, 1) exited non-zero on 'SIP/8888-000000c8' |
А вот это при звонке из города на занятый телефон:
| Code: |
| -- Called 3120 -- Got SIP response 486 "Busy Here" back from 10.10.3.250 -- SIP/3120-000000d1 is busy == Everyone is busy/congested at this time (1:1/0/0) -- Executing [s@macro-dial-one:39] ExecIf("DAHDI/6-1", "1?Set(DIALSTATUS=BUSY)") in new stack -- Executing [s@macro-dial-one:40] GosubIf("DAHDI/6-1", "0?s-BUSY,1") in new stack -- Executing [s@macro-dial-one:41] MacroExit("DAHDI/6-1", "") in new stack -- Executing [s@macro-exten-vm:15] GotoIf("DAHDI/6-1", "0?exit") in new stack -- Executing [s@macro-exten-vm:16] Set("DAHDI/6-1", "SV_DIALSTATUS=BUSY") in new stack -- Executing [s@macro-exten-vm:17] GosubIf("DAHDI/6-1", "0?docfu,1") in new stack -- Executing [s@macro-exten-vm:18] GosubIf("DAHDI/6-1", "0?docfb,1") in new stack -- Executing [s@macro-exten-vm:19] Set("DAHDI/6-1", "DIALSTATUS=BUSY") in new stack -- Executing [s@macro-exten-vm:20] ExecIf("DAHDI/6-1", "0?MacroExit()") in new stack -- Executing [s@macro-exten-vm:21] GotoIf("DAHDI/6-1", "1?s-BUSY,1") in new stack -- Goto (macro-exten-vm,s-BUSY,1) -- Executing [s-BUSY@macro-exten-vm:1] GotoIf("DAHDI/6-1", "0?exit,1") in new stack -- Executing [s-BUSY@macro-exten-vm:2] PlayTones("DAHDI/6-1", "busy") in new stack -- Executing [s-BUSY@macro-exten-vm:3] Busy("DAHDI/6-1", "20") in new stack |
При этом телефон вызывающего абонента продолжает звонить и только через несколько секунд получает Busy.
| Code: |
| == Spawn extension (macro-exten-vm, s-BUSY, 3) exited non-zero on 'DAHDI/6-1' in macro 'exten-vm' == Spawn extension (from-did-direct, 3120, 2) exited non-zero on 'DAHDI/6-1' -- Executing [h@from-did-direct:1] Macro("DAHDI/6-1", "hangupcall,") in new stack -- Executing [s@macro-hangupcall:1] GotoIf("DAHDI/6-1", "1?theend") in new stack -- Goto (macro-hangupcall,s,3) -- Executing [s@macro-hangupcall:3] Hangup("DAHDI/6-1", "") in new stack == Spawn extension (macro-hangupcall, s, 3) exited non-zero on 'DAHDI/6-1' in macro 'hangupcall' == Spawn extension (from-did-direct, h, 1) exited non-zero on 'DAHDI/6-1' -- Hungup 'DAHDI/6-1' |
При звонке на этот номер через IVR, Busy тоже отрабатывает сразу.
Added after 46 minutes:
Ответ нашелся. АТС оператора не понимает, когда я посылаю ей Busy.
Ей нужен Hangup с 17 причиной.
Теперь вопрос как разделить обработку звонков между внутренними номерами, звонки через IVR и прямые звонки. Ибо делать Hangup всегда не хочется.