Проблема с CDR - много лишнего
Откуда: Саратов
Сообщений: 414
|
Проблема с CDR - много лишнего
Звоню с мобильного на домашний тел, домашний Астериск 1.2.27 поднимает трубку, я донабираю нужный номер и через SIP-провайдера звоню куда нужно. В CDR отображается только входящий звонок на Астериск, длительность которого отсчитывается от момента поднятия Астериском трубки. Потом добавил ForkCDR. Теперь стало отображаться оба звонка - входящий на Астериск и исходящий на SIP-провайдера. А как сделать так, чтобы входящий звонок вообще не отображался в CDR, а для SIP-провайдера писались только отвеченные звонки?
+7(925)140-7438
|
Сообщений: 1573
|
Re: Проблема с CDR - много лишнего
ForkCDR: Forks the Call Data Record
NoCDR: Tell Asterisk to not maintain a CDR for the current call
ResetCDR: Resets the Call Data Record
|
Откуда: pl Earth
Сообщений: 224
|
Re: Проблема с CDR - много лишнего
или поставить биллинг :) например a2b
Успехов!
|
Откуда: Саратов
Сообщений: 414
|
Re: Проблема с CDR - много лишнего
Биллинг абсолютно излишен. Информации из CDR вполне бы хватило. NoCDR действует на оба конца звонка, так что это не прокатило. Мож ещё кто что подскажет?
+7(925)140-7438
|
Сообщений: 1573
|
Re: Проблема с CDR - много лишнего
А если включить кое что? )
[in_call]
exten => s,1,Answer
exten => s,n,NoCDR()
...
exten => s,n,WaitExten(8)
exten => _X.,1,GoTo(out_prov,${EXTEN},1)
[out_prov]
exten => _X.,1,ForkCDR()
exten => _X.,n, ...
Можно и так:
[in_call]
exten => s,1,Answer
exten => s,n,NoCDR()
exten => s,n,WaitExten(8)
exten => _X.,1,ForkCDR()
exten => _X.,n,Dial ...
|
Откуда: Москва
Сообщений: 3421
|
Re: Проблема с CDR - много лишнего
Evgen: ... а для SIP-провайдера писались только отвеченные звонки?
В cdr.conf:
[general]
unanswered = no
|
Сообщений: 1573
|
Re: Проблема с CDR - много лишнего
Опа ..., новая(давно нужная) опция появилась ...
|
Откуда: Саратов
Сообщений: 414
|
Re: Проблема с CDR - много лишнего
В первоначальном посте шла речь об Астериск 1.2.27, такой опции там не было. Позавчера снёс его и установил 1.4.21, там unanswered=no присутствует, причем в описании сказано, что эта опция включена по умолчанию.
В общем, с помощью ForkCDR и NoCDR (спасибо cron333) можно добиться того, чтобы входящий звонок вообще не отображался в CDR.
Но звонки на SIP-провайдера пишутся все, как отвеченные, так и любые неотвеченные, вне зависимости от "unanswered=no/yes".
Пробовал делать NoCDR или ResetCDR в зависимости от DIALSTATUS, но в итоге всё равно пишется всё.
exten => _X.,1,Dial(SIP/SipNet/${EXTEN})
exten => _X.,n,GotoIf($["${DIALSTATUS}" = "ANSWER"]?label)
exten => _X.,n,NoCDR (или ResetCDR)
exten => _X.,n(label),Hangup
Куда копать?
+7(925)140-7438
|
Сообщений: 1573
|
Re: Проблема с CDR - много лишнего
exten => _X.,1,NoCDR
exten => _X.,n,Dial(SIP/SipNet/${EXTEN},,g)
exten => _X.,n,GotoIf($["${DIALSTATUS}" = "ANSWER"]?label)
exten => _X.,n,Hangup
exten => _X.,n(label),ResetCDR()
exten => _X.,n,Hangup
я бы так сделал:
exten => _X.,1,Macro(dial-out,${EXTEN},60)
[macro-dial-out]
exten => s,1,NoCDR
exten => s,n,Dial(SIP/SipNet/${ARG1},${ARG2})
exten => s,n,GoTo(s-${DIALSTATUS},1)
exten => s-ANSWER,1,ResetCDR()
exten => s-ANSWER,n,Hangup
exten => _s-.,1,Hangup
|
Откуда: Саратов
Сообщений: 414
|
Re: Проблема с CDR - много лишнего
1) exten => _X.,1,NoCDR
2) exten => _X.,n,Dial(SIP/SipNet/${EXTEN},,g)
3) exten => _X.,n,GotoIf($["${DIALSTATUS}" = "ANSWER"]?label)
4) exten => _X.,n,Hangup
В варианте Dial без флага "g" до третьей строчки доходили попытки звонков со статусом BUSY или CHANUNAVAIL, все остальные заканчивались сообщением:
== Spawn extension (default, 84959119514, 1) exited non-zero on 'SIP/192.168.0.61-b6b00f68'
В варианте Dial с флагом "g" до третьей строчки стали доходить и отвеченные звонки, то есть звонки со статусом ANSWER.
А вот если я кладу трубку, не дождавшись ответа абонента, то такие звонки и щас пропадают где-то в этом "сложном" диалплане из 4 строк с тем же страшным сообщением:
== Spawn extension (default, 84959119514, 1) exited non-zero on 'SIP/192.168.0.61-b6b00f68'
Причём debug говорит, что всё нормально. То есть мы видим правильный DIALSTATUS=CANCEL
[Aug 4 15:25:30] DEBUG[25702] chan_sip.c: **** Received BYE (8) - Command in SIP BYE
[Aug 4 15:25:30] DEBUG[25702] chan_sip.c: Setting SIP_ALREADYGONE on dialog ef6be97d-f2789c85@192.168.0.61
[Aug 4 15:25:30] DEBUG[25702] chan_sip.c: Received bye, issuing owner hangup
[Aug 4 15:25:30] DEBUG[26888] rtp.c: Channel '<unspecified>' has no RTP, not doing anything
[Aug 4 15:25:30] DEBUG[26888] channel.c: Hanging up channel 'SIP/SipNet-081f0530'
[Aug 4 15:25:30] DEBUG[26888] chan_sip.c: Hangup call SIP/SipNet-081f0530, SIP callid 68cecd79394fdf0a4e0bd9dd37d81b1f@sipne$
[Aug 4 15:25:30] DEBUG[26888] chan_sip.c: Hanging up channel in state Ringing (not UP)
[Aug 4 15:25:30] DEBUG[26888] chan_sip.c: Acked pending invite 103
[Aug 4 15:25:30] DEBUG[26888] chan_sip.c: Stopping retransmission on '68cecd79394fdf0a4e0bd9dd37d81b1f@sipnet.ru' of Request$
[Aug 4 15:25:30] DEBUG[26888] devicestate.c: Notification of state change to be queued on device/channel SIP/SipNet-081f0530
[Aug 4 15:25:30] DEBUG[26888] devicestate.c: Notification of state change to be queued on device/channel SIP/SipNet
[Aug 4 15:25:30] DEBUG[25695] devicestate.c: No provider found, checking channel drivers for SIP - SipNet-081f0530
[Aug 4 15:25:30] DEBUG[26888] app_dial.c: Exiting with DIALSTATUS=CANCEL.
[Aug 4 15:25:30] DEBUG[25695] chan_sip.c: Checking device state for peer SipNet-081f0530
[Aug 4 15:25:30] DEBUG[26888] pbx.c: Spawn extension (default,84959119514,1) exited non-zero on 'SIP/192.168.0.61-b6b00c38'
[Aug 4 15:25:30] DEBUG[26888] channel.c: Soft-Hanging up channel 'SIP/192.168.0.61-b6b00c38'
[Aug 4 15:25:30] DEBUG[26888] channel.c: Hanging up channel 'SIP/192.168.0.61-b6b00c38'
[Aug 4 15:25:30] DEBUG[26888] chan_sip.c: Hangup call SIP/192.168.0.61-b6b00c38, SIP callid ef6be97d-f2789c85@192.168.0.61)
Похоже, мне просто неизвестно, что конкретно делает Asterisk после команды Dial.
+7(925)140-7438
|
|