Freepbx 15.0.21 Asterisk 16.13.0
Billsec считается от начала звонка, а не от начала разговора. То есть duration и billsec всегда имеют одинаковые значения.
Меня интересуют исходящие звонки, так что я написал custom dialplan.
exten => s,1,NoOp(Entering custom context)
same => n,Dial(SIP/77777777/${dest},25,M(resetcdr)) #Trying to reset CDR on answer
;same => n,Dial(SIP/77777777/${dest},25,M(getAnswer)) #Saving ring time to custom var
same => n,ResetCDR() #Even not executing
same => n,ForkCDR() #Even not executing
same => n,hangup()
#Sending variables to script to calculate real Billsec
exten => h,1,System(/opt/asterisk/save-billsec.sh ${CDR(UNIQUEID)} ${CDR(billsec)} ${MY_RINGTIME})
[macro-resetcdr]
exten => s,1,Dumpchan()
same => n,ResetCDR() #Does nothing
same => n,ForkCDR() #Does nothing
[macro-getAnswer]
exten => s,1,Dumpchan()
same => n,Set(MY_RINGTIME=${ElapsedTime}) #Saving ring time to custom var
Тут я пытался всяко разно reset-нуть CDR - не получается. Далее я пытался перезаписать CDR(billsec) переменную. На что система мне ответила, billsec is read-only variable. И последнее что я сделал это написал скрипт, который сохраняет uniqueID и настоящий billsec в файл. А потом уже другой скрипт через крон переписывает значение billsec в таблице CDR:
update cdr set billsec = $time where uniqueid = $uniqueid order by calldate desc;
Но это извращение и не всегда работает. Я предполагаю что это могут быть какие-нибудь настройки, которые исправят billsec. Вот немного лога касающегося нашего кейса:
[2022-02-17 14:21:51] VERBOSE[26180][C-000001b9] app_dial.c: Called SIP/77777777/88888888
[2022-02-17 14:21:53] VERBOSE[26180][C-000001b9] app_dial.c: SIP/77777777-00000379 is making progress passing it to SIP/+97677777778-00000378
[2022-02-17 14:21:53] VERBOSE[26180][C-000001b9] app_dial.c: SIP/77777777-00000379 is ringing
[2022-02-17 14:22:04] VERBOSE[26180][C-000001b9] app_dial.c: SIP/77777777-00000379 answered SIP/+97677777778-00000378
[2022-02-17 14:22:04] VERBOSE[26180][C-000001b9] pbx.c: Executing [s@macro-dumpchan:1] DumpChan("SIP/77777777-00000379", "") in new stack
[2022-02-17 14:22:04] VERBOSE[26180][C-000001b9] app_dumpchan.c:
Dumping Info For Channel: SIP/77777777-00000379:
================================================================================
Info:
Name= SIP/77777777-00000379
Type= SIP
UniqueID= 1645078911.1159
LinkedID= 1645078909.1158
CallerIDNum= s
CallerIDName= (N/A)
ConnectedLineIDNum= 88888889
ConnectedLineIDName=88888889
DNIDDigits= (N/A)
RDNIS= (N/A)
Parkinglot= default
Language= mn
State= Up (6)
Rings= 0
NativeFormat= (ulaw)
WriteFormat= ulaw
ReadFormat= ulaw
RawWriteFormat= ulaw
RawReadFormat= ulaw
WriteTranscode= No
ReadTranscode= No
1stFileDescriptor= 46
Framesin= 559
Framesout= 625
TimetoHangup= 0
ElapsedTime= 0h0m s
BridgeID= (Not bridged)
Context= macro-dumpchan
Extension= s
Priority= 1
CallGroup=
PickupGroup=
Application= DumpChan
Data= (Empty)
Blocking_in= (Not Blocking)
Variables:
MACRO_DEPTH=1
MACRO_PRIORITY=1
MACRO_CONTEXT=send-sms
MACRO_EXTEN=s
DIALEDPEERNUMBER=77777777/88888888
SIPCALLID=2acb005419bf921317853c8e0a1cafa5@ims.ub.unitel.mn
ivrreturn=0
IVR_RETVM=
IVR_CONTEXT=ivr-10
IVR_CONTEXT_ivr-10=
CALLINGNUMPRES_SV=allowed_not_screened
CALLINGNAMEPRES_SV=allowed_not_screened
REVERSAL_REJECT=FALSE
MOHCLASS=
FROM_DID=+97677777777
REC_STATUS=RECORDING
RECORD_ID=SIP/+97677777778-00000378
MIXMON_ID=0x7fb1d0056e10
CALLFILENAME=in-+97677777777-88888889-20220217-142149-1645078909.1158
REC_POLICY_MODE=FORCE
MON_FMT=wav
TIMESTR=20220217-142149
YEAR=2022
MONTH=02
DAY=17
DIRECTION=INBOUND
================================================================================
[2022-02-17 14:22:04] VERBOSE[26180][C-000001b9] pbx.c: Executing [s@macro-dumpchan:2] ResetCDR("SIP/77777777-00000379", "") in new stack
[2022-02-17 14:22:04] VERBOSE[26180][C-000001b9] pbx.c: Executing [s@macro-dumpchan:3] ForkCDR("SIP/77777777-00000379", "") in new stack
[2022-02-17 14:22:10] VERBOSE[26180][C-000001b9] bridge_channel.c: Channel SIP/+97677777778-00000378 left 'simple_bridge' basic-bridge <c8643e3c-067d-41ae-a228-fb8503564634>
[2022-02-17 14:22:10] VERBOSE[26180][C-000001b9] pbx.c: Executing [h@send-sms:8] DumpChan("SIP/+97677777778-00000378", "") in new stack
[2022-02-17 14:22:10] VERBOSE[26180][C-000001b9] app_dumpchan.c:
Dumping Info For Channel: SIP/+97677777778-00000378:
================================================================================
Info:
Name= SIP/+97677777778-00000378
Type= SIP
UniqueID= 1645078909.1158
LinkedID= 1645078909.1158
CallerIDNum= 88888889
CallerIDName= 88888889
ConnectedLineIDNum= (N/A)
ConnectedLineIDName=(N/A)
DNIDDigits= +97677777777
RDNIS= (N/A)
Parkinglot= default
Language= mn
State= Up (6)
Rings= 0
NativeFormat= (ulaw)
WriteFormat= ulaw
ReadFormat= ulaw
RawWriteFormat= ulaw
RawReadFormat= ulaw
WriteTranscode= No
ReadTranscode= No
1stFileDescriptor= 22
Framesin= 1074
Framesout= 982
TimetoHangup= 0
ElapsedTime= 0h0m21s
BridgeID= (Not bridged)
Context= send-sms
Extension= h
Priority= 8
CallGroup=
PickupGroup=
Application= DumpChan
Data= (Empty)
Blocking_in= (Not Blocking)
Variables:
SYSTEMSTATUS=SUCCESS
DIALSTATUS=ANSWER
DIALEDTIME_MS=21483
DIALEDTIME=21
ANSWEREDTIME_MS=21462
ANSWEREDTIME=21
RTPAUDIOQOSRTT=minrtt=0.002273;maxrtt=0.004501;avgrtt=0.003117;stdevrtt=0.000019;
RTPAUDIOQOSLOSS=minrxlost=0.000000;maxrxlost=0.000000;avgrxlost=0.000000;stdevrxlost=0.000000;reported_minlost=0.000000;reported_maxlost=13.000000;reported_avglost=3.750000;reported_stdevlost=15.256658;
RTPAUDIOQOSJITTER=minrxjitter=0.000003;maxrxjitter=0.001043;avgrxjitter=0.000274;stdevrxjitter=inf;reported_minjitter=0.000000;reported_maxjitter=16.000000;reported_avgjitter=6.000000;reported_stdevjitter=32.484184;
RTPAUDIOQOS=ssrc=916409440;themssrc=1681473114;lp=0;rxjitter=0.000000;rxcount=1061;txjitter=0.000440;txcount=963;rlp=0;rtt=0.002273
RTPAUDIOQOSRTTBRIDGED=minrtt=0.001098;maxrtt=0.001144;avgrtt=0.001121;stdevrtt=0.000001;
RTPAUDIOQOSLOSSBRIDGED=minrxlost=0.000000;maxrxlost=1.000000;avgrxlost=0.333333;stdevrxlost=1.170628;reported_minlost=0.000000;reported_maxlost=12.000000;reported_avglost=4.000000;reported_stdevlost=14.047538;
RTPAUDIOQOSJITTERBRIDGED=minrxjitter=0.000001;maxrxjitter=0.001128;avgrxjitter=0.000308;stdevrxjitter=inf;reported_minjitter=8.000000;reported_maxjitter=32.000000;reported_avgjitter=18.666667;reported_stdevjitter=20.014809;
RTPAUDIOQOSBRIDGED=ssrc=1143936400;themssrc=3875000504;lp=1;rxjitter=0.000000;rxcount=860;txjitter=0.000331;txcount=864;rlp=0;rtt=0.001098
DIALEDPEERNUMBER=77777777/88888888
DIALEDPEERNAME=SIP/77777777-00000379
RINGTIME_MS=1671
RINGTIME=1
PROGRESSTIME_MS=1487
PROGRESSTIME=1
dugaar=202
dest=88888888
ivrreturn=0
BACKGROUNDSTATUS=SUCCESS
IVR_MSG=custom/tsomoo_announce_day-8khz
IVR_RETVM=
IVR_CONTEXT=ivr-10
IVR_CONTEXT_ivr-10=
INVALID_LOOPCOUNT=0
TIMEOUT_LOOPCOUNT=0
DB_RESULT=
CALLINGNUMPRES_SV=allowed_not_screened
CALLINGNAMEPRES_SV=allowed_not_screened
REVERSAL_REJECT=FALSE
MOHCLASS=
GOSUB_RETVAL=
CALLED_BLACKLIST=1
returnhere=1
FROM_DID=+97677777777
REC_STATUS=RECORDING
RECORD_ID=SIP/+97677777778-00000378
MIXMON_ID=0x7fb1d0056e10
LOCAL_MIXMON_ID=0x7fb1d0056e10
MIXMONITOR_FILENAME=/var/spool/asterisk/monitor/2022/02/17/in-+97677777777-88888889-20220217-142149-1645078909.1158.wav
CALLFILENAME=in-+97677777777-88888889-20220217-142149-1645078909.1158
REC_POLICY_MODE=FORCE
FROMEXTEN=88888889
REC_POLICY_MODE_SAVE=
MON_FMT=wav
TIMESTR=20220217-142149
YEAR=2022
MONTH=02
DAY=17
NOW=1645078909
DIRECTION=INBOUND
14:21:53 - 14:22:04 - 11 сек - телефон звонил
14:22:04 - 14:22:10 - 6 сек - был отвечен / разговаривал
первый dumpchan - переменные, сразу после того как ответил
второй dumpchan - переменные, после того как положил трубку - dialedtime=21 answeredtime=21
Отсюда мы видим что, несмотря на то что разговор был 6 секунд, answeredtime считает с самого начал звонка и имеет значение 21 секунду. Отсюда и billsec в таблице cdr (asteriskcdrdb) тоже 21 секунда. Может есть какие-нибудь настройки которые исправят ошибку.
Задан: 2022-02-17 10:48:53 +0400
Просмотрен: 2,290 раз
Обновлен: Feb 17 '22
Проект компании "АТС Дизайн"
Asterisk® и Digium® являются зарегистрированными торговыми марками компании
Digium, Inc., США.
IP АТС Asterisk распространяется под лицензией
GNU GPL.
asterisk 16.20.0 (в комплекте с freepbx 15).
eux ( 2022-02-17 12:21:45 +0400 )редактироватьзначит, у вас звонок УЖЕ отвечен. Проверяйте.
meral ( 2022-02-17 15:19:12 +0400 )редактировать