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
Просмотрен: 3,201 раз
Обновлен: 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 )редактировать