Не завершается обработка вызова
| Code: |
| [2010-10-27 14:52:52] VERBOSE[8871] logger.c: -- Accepting call from 'xxx' to 'yyy' on channel 0/29, span 3 |
обрабатывается
| Code: |
| [2010-10-27 14:52:52] VERBOSE[4846] logger.c: -- Goto (from-clients,yyy,1) |
осуществляются попытки соединения
| Code: |
| [2010-10-27 14:52:53] VERBOSE[4846] logger.c: -- Called OPER1/yyy [2010-10-27 14:53:55] VERBOSE[4846] logger.c: -- Nobody picked up in 60000 ms [2010-10-27 14:53:55] VERBOSE[4846] logger.c: -- Called OPER2/yyy [2010-10-27 14:54:58] VERBOSE[4846] logger.c: -- Nobody picked up in 60000 ms [2010-10-27 14:54:58] VERBOSE[4846] logger.c: -- Called OPER3/yyy [2010-10-27 14:55:54] VERBOSE[4846] logger.c: -- SIP/OPER3-00039e0e answered DAHDI/91-1 [2010-10-27 14:55:54] VERBOSE[8871] logger.c: -- Channel 0/29, span 3 got hangup, cause 0 [2010-10-27 14:55:54] VERBOSE[4846] logger.c: -- Hungup 'DAHDI/91-1' |
а в это время абонент пытается позвонить :
| Code: |
| [2010-10-27 14:53:41] VERBOSE[8869] logger.c: ^? -- Accepting call from 'xxx' to 'yyy' on channel 0/31, span 1 |
| Code: |
| [2010-10-27 14:53:57] VERBOSE[8871] logger.c: ^? -- Accepting call from 'xxx' to 'yyy' on channel 0/13, span 3 |
| Code: |
| [2010-10-27 14:54:10] VERBOSE[8871] logger.c: ^? -- Accepting call from 'xxx' to 'yyy' on channel 0/21, span 3 |
| Code: |
| [2010-10-27 14:54:51] VERBOSE[8869] logger.c: ^? -- Accepting call from 'xxx' to 'yyy' on channel 0/3, span 1 |
| Code: |
| [2010-10-27 14:55:03] VERBOSE[8869] logger.c: ^? -- Accepting call from 'xxx' to 'yyy' on channel 0/11, span 1 |
| Code: |
| [2010-10-27 14:55:29] VERBOSE[8869] logger.c: ^? -- Accepting call from 'xxx' to 'yyy' on channel 0/25, span 1 |
| Code: |
| [2010-10-27 14:55:48] VERBOSE[8869] logger.c: ^? -- Accepting call from 'xxx' to 'yyy' on channel 0/29, span 1 |
Т.е абонент набрал номер, подождал сколько-то, повесил трубку, и снова попытался позвонить. При каждом вызове мой скрипт проверяет CallerID абонента, и если такой номер уже пытается осуществить вызов, то новый вызов прекращается.
Т.е получается астериск "не увидел" сигнал отбоя, т.к по логам АТС к которой подключен астериск пусто. А т.к астериск пишет что коннект был и если бы он висел на АТС, то АТС бы его тоже зафиксировала.
Подскажите куда копать, а то у меня нет идей (((
Абонент "медный".
Железо digium, ПО : asterisk 1.4.29.1, dahdi 2.4.0, libpri 1.4.12-beta2
Насколько я понял ситуацию, после того как абонент повесил трубку недозвонившись абонент попадает в контест i и уже там должен обрабатываться
Диалплан можно представить так
| Code: |
| ... exten => _X.,n(try),Dial(${OPER}/{EXTEN}) exten => _X.,n,AGI(check.pl) exten => _X.,n,GotoIf($[${TRY}=1]?try) ... |
Когда абонент вешает трубку, астериск "не видит" этого и продолжает выполнять команду Dial и так далее весь диалплан, пока не переберет всех операторов и только после этого завершается обработка вызова.
Разумеется эта ситуация не постоянная, а то бы её было проще решить. С имитировать её у меня не получается.
Но в каких-то ситуациях, астериск не видит, что на том конце положили трубку и работает до окончания работы всей логики и только потом завершает вызов.
_________________
Успехов!
Моя проблема в том, что в каких-то ситуациях астериск не видит сигнала о том, что на другом конце положили трубку, ну и как следствие команда Dial продолжает выполняться и так далее весь диалплан включая вызов AGI.
_________________
Успехов!
Alex_asdf, что ты имеешь ввиду под этим?
| Alex_asdf wrote: |
| Абонент "медный". |
разберитесь что бы зарвершение соединения правильно обрабаотывалось, а потмом уже дальше копать.
если asterisk не знает что уже сеанс связи заершен, как это узнает AGI или что то другое?
Я не вижу смыла это пробовать, я могу вообще эту часть убрать, если она вас смущает.
PS Прошу тему перенести обратно.
2 Alekz
То что абонент подключен к станции медной парой и он чисто физически не может занять две линии.
2 adt2k
Вот тут уже близко. Видимо как-то криво я все это объяснил, или слишком много информации дал.
Хотя я это уже писал, повторю, в какой-то ситуации астериск пропускает (или до него это теряется) информацию о том, что вызов завершился. Если бы это было регулярно или хотя бы часто, было бы проще.
Как вариант все время снимать дебуг с 4-х спанов и ждать когда это произойдет, другого выхода я ни вижу. Ну а тему создал с целью поиска, возможно у кого-то было нечто подобное.
| Code: |
| [2010-11-10 15:57:50] VERBOSE[21153] logger.c: -- Called OPER1/xxxx [2010-11-10 15:57:52] VERBOSE[21153] logger.c: -- SIP/OPER1-0000023b is making progress passing it to DAHDI/7-1 [2010-11-10 15:57:52] DEBUG[21153] chan_dahdi.c: Received AST_CONTROL_PROGRESS on DAHDI/7-1 [2010-11-10 15:57:52] VERBOSE[21153] logger.c: > DL-DATA request [2010-11-10 15:57:52] VERBOSE[21153] logger.c: > Protocol Discriminator: Q.931 (8) len=9 [2010-11-10 15:57:52] VERBOSE[21153] logger.c: > TEI=0 Call Ref: len= 2 (reference 23166/0x5A7E) (Sent to originator) [2010-11-10 15:57:52] VERBOSE[21153] logger.c: > Message Type: PROGRESS (3) [2010-11-10 15:57:52] VERBOSE[21153] logger.c: TEI=0 Transmitting N(S)=116, window is open V(A)=116 K=7 [2010-11-10 15:57:52] VERBOSE[21153] logger.c: > Protocol Discriminator: Q.931 (8) len=9 [2010-11-10 15:57:52] VERBOSE[21153] logger.c: > TEI=0 Call Ref: len= 2 (reference 23166/0x5A7E) (Sent to originator) [2010-11-10 15:57:52] VERBOSE[21153] logger.c: > Message Type: PROGRESS (3) [2010-11-10 15:57:52] VERBOSE[21153] logger.c: > [1e 02 81 88] [2010-11-10 15:57:52] VERBOSE[21153] logger.c: > Progress Indicator (len= 4) [ Ext: 1 Coding: CCITT (ITU) standard (0) 0: 0 Location: Private network serving the local user (1) [2010-11-10 15:57:52] VERBOSE[21153] logger.c: > Ext: 1 Progress Description: Inband information or appropriate pattern now available. (8) ] [2010-11-10 15:57:59] VERBOSE[27261] logger.c: < Protocol Discriminator: Q.931 (8) len=9 [2010-11-10 15:57:59] VERBOSE[27261] logger.c: < TEI=0 Call Ref: len= 2 (reference 23166/0x5A7E) (Sent to originator) [2010-11-10 15:57:59] VERBOSE[27261] logger.c: < Message Type: PROGRESS (3) [2010-11-10 15:57:59] VERBOSE[27261] logger.c: < [1e 02 83 81] [2010-11-10 15:57:59] VERBOSE[27261] logger.c: < Progress Indicator (len= 4) [ Ext: 1 Coding: CCITT (ITU) standard (0) 0: 0 Location: Transit network (3) [2010-11-10 15:57:59] VERBOSE[27261] logger.c: < Ext: 1 Progress Description: Call is not end-to-end ISDN; further call progress information may be available inband. (1) ] [2010-11-10 15:57:59] VERBOSE[27261] logger.c: -- Making new call for cref 55934 [2010-11-10 15:57:59] VERBOSE[27261] logger.c: Received message for call 0x8c8da10 on 0x84fe9b8 TEI/SAPI 0/0, call->pri is 0x84fe9b8 TEI/SAPI 0/0 [2010-11-10 15:57:59] VERBOSE[27261] logger.c: -- Processing IE 30 (cs0, Progress Indicator) [2010-11-10 15:57:59] VERBOSE[27261] logger.c: > DL-DATA request [2010-11-10 15:57:59] VERBOSE[27261] logger.c: > Protocol Discriminator: Q.931 (8) len=9 [2010-11-10 15:57:59] VERBOSE[27261] logger.c: > TEI=0 Call Ref: len= 2 (reference 23166/0x5A7E) (Sent from originator) [2010-11-10 15:57:59] VERBOSE[27261] logger.c: > Message Type: RELEASE COMPLETE (90) [2010-11-10 15:57:59] VERBOSE[27261] logger.c: TEI=0 Transmitting N(S)=123, window is open V(A)=123 K=7 [2010-11-10 15:57:59] VERBOSE[27261] logger.c: > Protocol Discriminator: Q.931 (8) len=9 [2010-11-10 15:57:59] VERBOSE[27261] logger.c: > TEI=0 Call Ref: len= 2 (reference 23166/0x5A7E) (Sent from originator) [2010-11-10 15:57:59] VERBOSE[27261] logger.c: > Message Type: RELEASE COMPLETE (90) [2010-11-10 15:57:59] VERBOSE[27261] logger.c: > [08 02 81 d1] [2010-11-10 15:57:59] VERBOSE[27261] logger.c: > Cause (len= 4) [ Ext: 1 Coding: CCITT (ITU) standard (0) Spare: 0 Location: Private network serving the local user (1) [2010-11-10 15:57:59] VERBOSE[27261] logger.c: > Ext: 1 Cause: Invalid call reference value (81), class = Invalid message (e.g. parameter out of range) (5) ] [2010-11-10 15:57:59] VERBOSE[27261] logger.c: q931_hangup: other hangup [2010-11-10 15:57:59] VERBOSE[27261] logger.c: NEW_HANGUP DEBUG: Calling q931_hangup, ourstate Null, peerstate Null, hold-state Idle [2010-11-10 15:57:59] VERBOSE[27261] logger.c: NEW_HANGUP DEBUG: Destroying the call, ourstate Null, peerstate Null, hold-state Idle [2010-11-10 15:58:53] VERBOSE[21153] logger.c: -- Nobody picked up in 60000 ms |
Если я правильно понял логи, то астериску сообщили о том, что вызов завершается (RELEASE COMPLETE), но он его проигнорировал и позже выдал "Nobody picked up in 60000 ms".
Схема : АТС -E1(1)- Астериск -E1(2)- АТС
| Code: |
| [14:04:52] VERBOSE[24241] logger.c: -- Called r1/QWER [14:05:31] VERBOSE[24241] logger.c: -- DAHDI/88-1 answered DAHDI/31-1 [14:05:31] VERBOSE[24241] logger.c: q931.c:4971 q931_connect: Call 15451 enters state 8 (Connect Request). Hold state: Idle [14:05:31] VERBOSE[24241] logger.c: > DL-DATA request [14:05:31] VERBOSE[24241] logger.c: > Protocol Discriminator: Q.931 (8) len=14 [14:05:31] VERBOSE[24241] logger.c: > TEI=0 Call Ref: len= 2 (reference 15451/0x3C5B) (Sent to originator) [14:05:31] VERBOSE[24241] logger.c: > Message Type: CONNECT (7) [14:05:31] VERBOSE[24241] logger.c: TEI=0 Transmitting N(S)=71, window is open V(A)=71 K=7 [14:05:31] VERBOSE[24241] logger.c: > Protocol Discriminator: Q.931 (8) len=14 [14:05:31] VERBOSE[24241] logger.c: > TEI=0 Call Ref: len= 2 (reference 15451/0x3C5B) (Sent to originator) [14:05:31] VERBOSE[24241] logger.c: > Message Type: CONNECT (7) [14:05:31] VERBOSE[24241] logger.c: > [18 03 a9 83 9f] [14:05:31] VERBOSE[24241] logger.c: > Channel ID (len= 5) [ Ext: 1 IntID: Implicit Other(PRI) Spare: 0 Exclusive Dchan: 0 [14:05:31] VERBOSE[24241] logger.c: > ChanSel: As indicated in following octets [14:05:31] VERBOSE[24241] logger.c: > Ext: 1 Coding: 0 Number Specified Channel Type: 3 [14:05:31] VERBOSE[24241] logger.c: > Ext: 1 Channel: 31 Type: CPE] [14:05:31] VERBOSE[24241] logger.c: > [1e 02 81 82] [14:05:31] VERBOSE[24241] logger.c: > Progress Indicator (len= 4) [ Ext: 1 Coding: CCITT (ITU) standard (0) 0: 0 Location: Private network serving the local user (1) [14:05:31] VERBOSE[24241] logger.c: > Ext: 1 Progress Description: Called equipment is non-ISDN. (2) ] [14:05:31] VERBOSE[27261] logger.c: < Protocol Discriminator: Q.931 (8) len=12 [14:05:31] VERBOSE[27261] logger.c: < TEI=0 Call Ref: len= 2 (reference 15451/0x3C5B) (Sent to originator) [14:05:31] VERBOSE[27261] logger.c: < Message Type: STATUS (125) [14:05:31] VERBOSE[27261] logger.c: < [08 02 83 e2] [14:05:31] VERBOSE[27261] logger.c: < Cause (len= 4) [ Ext: 1 Coding: CCITT (ITU) standard (0) Spare: 0 Location: Transit network (3) [14:05:31] VERBOSE[27261] logger.c: < Ext: 1 Cause: Wrong message (98), class = Protocol Error (e.g. unknown message) (6) ] [14:05:31] VERBOSE[27261] logger.c: < [14 01 0c] [14:05:31] VERBOSE[27261] logger.c: < Call State (len= 3) [ Ext: 0 Coding: CCITT (ITU) standard (0) Call state: Disconnect Indication (12) [14:05:31] VERBOSE[27261] logger.c: -- Making new call for cref 48219 [14:05:31] VERBOSE[27261] logger.c: Received message for call 0x8b15128 on 0x84fe9b8 TEI/SAPI 0/0, call->pri is 0x84fe9b8 TEI/SAPI 0/0 [14:05:31] VERBOSE[27261] logger.c: -- Processing IE 8 (cs0, Cause) [14:05:31] VERBOSE[27261] logger.c: -- Processing IE 20 (cs0, Call State) [14:05:31] VERBOSE[27261] logger.c: > DL-DATA request [14:05:31] VERBOSE[27261] logger.c: > Protocol Discriminator: Q.931 (8) len=9 [14:05:31] VERBOSE[27261] logger.c: > TEI=0 Call Ref: len= 2 (reference 15451/0x3C5B) (Sent from originator) [14:05:31] VERBOSE[27261] logger.c: > Message Type: RELEASE COMPLETE (90) [14:05:31] VERBOSE[27261] logger.c: TEI=0 Transmitting N(S)=72, window is open V(A)=72 K=7 [14:05:31] VERBOSE[27261] logger.c: > Protocol Discriminator: Q.931 (8) len=9 [14:05:31] VERBOSE[27261] logger.c: > TEI=0 Call Ref: len= 2 (reference 15451/0x3C5B) (Sent from originator) [14:05:31] VERBOSE[27261] logger.c: > Message Type: RELEASE COMPLETE (90) [14:05:31] VERBOSE[27261] logger.c: > [08 02 81 e5] [14:05:31] VERBOSE[27261] logger.c: > Cause (len= 4) [ Ext: 1 Coding: CCITT (ITU) standard (0) Spare: 0 Location: Private network serving the local user (1) [14:05:31] VERBOSE[27261] logger.c: > Ext: 1 Cause: Message not compatible with call state (101), class = Protocol Error (e.g. unknown message) (6) ] [14:05:31] VERBOSE[27261] logger.c: q931_hangup: other hangup [14:05:31] VERBOSE[27261] logger.c: NEW_HANGUP DEBUG: Calling q931_hangup, ourstate Null, peerstate Null, hold-state Idle [14:05:31] VERBOSE[27261] logger.c: NEW_HANGUP DEBUG: Destroying the call, ourstate Null, peerstate Null, hold-state Idle [14:05:35] VERBOSE[27261] logger.c: q931.c:5063 q931_disconnect: Call 15451 enters state 11 (Disconnect Request). Hold state: Idle [14:05:35] VERBOSE[27261] logger.c: > DL-DATA request [14:05:35] VERBOSE[27261] logger.c: > Protocol Discriminator: Q.931 (8) len=9 [14:05:35] VERBOSE[27261] logger.c: > TEI=0 Call Ref: len= 2 (reference 15451/0x3C5B) (Sent to originator) [14:05:35] VERBOSE[27261] logger.c: > Message Type: DISCONNECT (69) [14:05:35] VERBOSE[27261] logger.c: TEI=0 Transmitting N(S)=78, window is open V(A)=78 K=7 [14:05:35] VERBOSE[27261] logger.c: > Protocol Discriminator: Q.931 (8) len=9 [14:05:35] VERBOSE[27261] logger.c: > TEI=0 Call Ref: len= 2 (reference 15451/0x3C5B) (Sent to originator) [14:05:35] VERBOSE[27261] logger.c: > Message Type: DISCONNECT (69) [14:05:35] VERBOSE[27261] logger.c: > [08 02 81 90] [14:05:35] VERBOSE[27261] logger.c: > Cause (len= 4) [ Ext: 1 Coding: CCITT (ITU) standard (0) Spare: 0 Location: Private network serving the local user (1) [14:05:35] VERBOSE[27261] logger.c: > Ext: 1 Cause: Normal Clearing (16), class = Normal Event (1) ] [14:05:35] VERBOSE[27261] logger.c: < Protocol Discriminator: Q.931 (8) len=10 [14:05:35] VERBOSE[27261] logger.c: < TEI=0 Call Ref: len= 2 (reference 15451/0x3C5B) (Sent from originator) [14:05:35] VERBOSE[27261] logger.c: < Message Type: RELEASE COMPLETE (90) [14:05:35] VERBOSE[27261] logger.c: < [08 03 00 80 d1] [14:05:35] VERBOSE[27261] logger.c: < Cause (len= 5) [ Ext: 0 Coding: CCITT (ITU) standard (0) Spare: 0 Location: User (0) [14:05:35] VERBOSE[27261] logger.c: < Ext: 1 Cause: Unknown (0), class = Normal Event (0) ] [14:05:35] VERBOSE[27261] logger.c: < Cause data 1: d1 (209) [14:05:35] VERBOSE[27261] logger.c: Received message for call 0x872d100 on 0x84fe9b8 TEI/SAPI 0/0, call->pri is 0x84fe9b8 TEI/SAPI 0/0 [14:05:35] VERBOSE[27261] logger.c: -- Processing IE 8 (cs0, Cause) [14:05:35] VERBOSE[27261] logger.c: q931.c:7686 post_handle_q931_message: Call 15451 enters state 0 (Null). Hold state: Idle [14:05:35] VERBOSE[27261] logger.c: q931_hangup: other hangup [14:05:35] VERBOSE[27261] logger.c: NEW_HANGUP DEBUG: Calling q931_hangup, ourstate Null, peerstate Null, hold-state Idle [14:05:35] VERBOSE[27261] logger.c: NEW_HANGUP DEBUG: Destroying the call, ourstate Null, peerstate Null, hold-state Idle [14:05:35] VERBOSE[27261] logger.c: -- Channel 0/31, span 1 got hangup ACK |
т.е получается астериск повесил трубку на первом плече, однако
| Code: |
| [15:05:29] VERBOSE[27263] logger.c: < Protocol Discriminator: Q.931 (8) len=10 [15:05:29] VERBOSE[27263] logger.c: < TEI=0 Call Ref: len= 2 (reference 4211/0x1073) (Sent to originator) [15:05:29] VERBOSE[27263] logger.c: < Message Type: DISCONNECT (69) [15:05:29] VERBOSE[27263] logger.c: < [08 03 02 80 9f] [15:05:29] VERBOSE[27263] logger.c: < Cause (len= 5) [ Ext: 0 Coding: CCITT (ITU) standard (0) Spare: 0 Location: Public network serving the local user (2) [15:05:29] VERBOSE[27263] logger.c: < Ext: 1 Cause: Unknown (0), class = Normal Event (0) ] [15:05:29] VERBOSE[27263] logger.c: < Cause data 1: 9f (159) [15:05:29] VERBOSE[27263] logger.c: Received message for call 0x8b20bd8 on 0x8504378 TEI/SAPI 0/0, call->pri is 0x8504378 TEI/SAPI 0/0 [15:05:29] VERBOSE[27263] logger.c: -- Processing IE 8 (cs0, Cause) [15:05:29] VERBOSE[27263] logger.c: -- Found active call: 0x8b20bd8 cref:36979 [15:05:29] VERBOSE[27263] logger.c: q931.c:7819 post_handle_q931_message: Call 36979 enters state 12 (Disconnect Indication). Hold state: Idle [15:05:29] VERBOSE[27263] logger.c: -- Channel 0/26, span 3 got hangup request, cause 0 [15:05:29] VERBOSE[24241] logger.c: -- Executing [h@from-clients:1] NoOp("DAHDI/31-1", "End call in h") in new stack [15:05:29] VERBOSE[24241] logger.c: -- Executing [h@from-clients:2] GotoIf("DAHDI/31-1", "0?bye") in new stack [15:05:29] VERBOSE[24241] logger.c: -- Executing [h@from-clients:3] NoOp("DAHDI/31-1", "Status : ANSWER (16)") in new stack [15:05:29] VERBOSE[24241] logger.c: -- Executing [h@from-clients:4] DeadAGI("DAHDI/31-1", "agi/logics_from_users.php|disconnect|1289477129|QWER)") in new stack [15:05:29] WARNING[24241] res_agi.c: Running DeadAGI on a live channel will cause problems, please use AGI [15:05:29] VERBOSE[24241] logger.c: -- Launched AGI Script /var/lib/asterisk/agi-bin/agi/logics_from_users.php [15:05:29] VERBOSE[24241] logger.c: -- AGI Script agi/logics_from_users.php completed, returning 0 [15:05:29] VERBOSE[24241] logger.c: -- Executing [h@from-clients:5] NoOp("DAHDI/31-1", "Bye") in new stack [15:05:29] DEBUG[24241] chan_dahdi.c: Set option AUDIO MODE, value: ON(1) on DAHDI/88-1 [15:05:29] DEBUG[24241] chan_dahdi.c: Not yet hungup... Calling hangup once with icause, and clearing call [15:05:29] VERBOSE[24241] logger.c: q931_hangup: other hangup [15:05:29] VERBOSE[24241] logger.c: NEW_HANGUP DEBUG: Calling q931_hangup, ourstate Disconnect Indication, peerstate Disconnect Request, hold-state Idle [15:05:29] VERBOSE[24241] logger.c: q931.c:5009 q931_release: Call 36979 enters state 19 (Release Request). Hold state: Idle [15:05:29] VERBOSE[24241] logger.c: > DL-DATA request [15:05:29] VERBOSE[24241] logger.c: > Protocol Discriminator: Q.931 (8) len=9 [15:05:29] VERBOSE[24241] logger.c: > TEI=0 Call Ref: len= 2 (reference 4211/0x1073) (Sent from originator) [15:05:29] VERBOSE[24241] logger.c: > Message Type: RELEASE (77) [15:05:29] VERBOSE[24241] logger.c: TEI=0 Transmitting N(S)=120, window is open V(A)=120 K=7 [15:05:29] VERBOSE[24241] logger.c: > Protocol Discriminator: Q.931 (8) len=9 [15:05:29] VERBOSE[24241] logger.c: > TEI=0 Call Ref: len= 2 (reference 4211/0x1073) (Sent from originator) [15:05:29] VERBOSE[24241] logger.c: > Message Type: RELEASE (77) [15:05:29] VERBOSE[24241] logger.c: > [08 02 81 90] [15:05:29] VERBOSE[24241] logger.c: > Cause (len= 4) [ Ext: 1 Coding: CCITT (ITU) standard (0) Spare: 0 Location: Private network serving the local user (1) [15:05:29] VERBOSE[24241] logger.c: > Ext: 1 Cause: Normal Clearing (16), class = Normal Event (1) ] [15:05:29] DEBUG[24241] chan_dahdi.c: Set option AUDIO MODE, value: OFF(0) on DAHDI/88-1 [15:05:29] VERBOSE[24241] logger.c: -- Hungup 'DAHDI/88-1' [15:05:29] VERBOSE[24241] logger.c: == Spawn extension (from-clients, QWER, 21) exited non-zero on 'DAHDI/31-1' [15:05:29] DEBUG[24241] chan_dahdi.c: Set option AUDIO MODE, value: ON(1) on DAHDI/31-1 [15:05:29] DEBUG[24241] chan_dahdi.c: Set option AUDIO MODE, value: OFF(0) on DAHDI/31-1 [15:05:29] VERBOSE[24241] logger.c: -- Hungup 'DAHDI/31-1' [15:05:29] VERBOSE[27263] logger.c: < Protocol Discriminator: Q.931 (8) len=5 [15:05:29] VERBOSE[27263] logger.c: < TEI=0 Call Ref: len= 2 (reference 4211/0x1073) (Sent to originator) [15:05:29] VERBOSE[27263] logger.c: < Message Type: RELEASE COMPLETE (90) |
... вызов "висит" дальше и завершается уже после того как со второго плеча пришел дисконнект.
Вопрос : почему такое произошло и почему обработка вызова не завершилась по завершению вызова на первом плече.
| Code: |
| [check-for-lost-call] exten => connect,1,Noop(Connect to channel ${check_channel}) exten => connect,n,Chanspy(${check_channel},qo) exten => connect,n,Hangup exten => check,1,Noop(Check channel ${check_channel}) exten => check,n,Record(/var/spool/asterisk/tmp/${UNIQUEID}.wav,wav,10) exten => check,n,System(asterisk -rx "soft hangup ${check_channel}") exten => check,n,Hangup |
а в момент соединения вызвать скрипт
| Code: |
| $fn="/var/spool/asterisk/outgoing/$argv[1]); $f = fopen($fn, "w"); fwrite($f, "CallerID: AsteriskPBX\n"); fwrite($f, "Channel: LOCAL/connect@check-for-lost-call\n"); fwrite($f, "Context: check-for-lost-call\n"); fwrite($f, "Extension: check\n"); fwrite($f, "Priority: 1\n"); fwrite($f, "Set: check_channel=$argv[1]\n"); fclose($f); |
т.е по логике я должен был законнектиться к проверяемому каналу, и потом начать запись с этого канала, как только в канале стало тихо, прекратить запись и завершить зависший канал.
К каналу то он коннектиться, только вот запись не начинается (не переходит в check), чего-то я упустил.
Added after 21 minutes:
Я так понимаю в connect должно какое-то событие произойти, которое даст возможность кол-файлу перейти в check
Added after 24 minutes:
Пробовал ставит Answer перед Chanspy , но эффекта 0
| Code: |
| exten => check,n,Record(/var/spool/asterisk/tmp/${EPOCH}:wav,10) |
тогда если на канале тишина 10 сек, то канал завершается.
Костыль придуман, сейчас бы с причиной разобраться.