From 55a91ee41990a929d7c38f11bd037604bbf0daf5 Mon Sep 17 00:00:00 2001 From: boffart <> Date: Fri, 8 Nov 2024 12:23:20 +0300 Subject: [PATCH] =?UTF-8?q?#802=20=D0=BF=D0=BE=D0=BF=D1=80=D0=B0=D0=B2?= =?UTF-8?q?=D0=B8=D0=BB=20=D0=BE=D1=88=D0=B8=D0=B1=D0=BA=D1=83=20=D0=B2=20?= =?UTF-8?q?=D0=BE=D0=B1=D1=80=D0=B0=D0=B1=D0=BE=D1=82=D0=BA=D0=B5=20=D1=82?= =?UTF-8?q?=D0=B0=D0=B1=D0=BB=D0=B8=D1=86=D1=8B=20cdr.=20=D0=97=D0=B0?= =?UTF-8?q?=D0=B2=D0=B8=D1=81=D0=B0=D0=BB=D0=B8=20=D1=81=D1=82=D1=80=D0=BE?= =?UTF-8?q?=D0=BA=D0=B8=20=D0=BF=D1=80=D0=B8=20=D0=BF=D0=B5=D1=80=D0=B5?= =?UTF-8?q?=D0=B0=D0=B4=D1=80=D0=B5=D1=81=D0=B0=D1=86=D0=B8=D0=B8=20=D0=BD?= =?UTF-8?q?=D0=B0=20=D0=BD=D0=B5=D0=B4=D0=BE=D1=81=D1=82=D1=83=D0=BF=D0=BD?= =?UTF-8?q?=D1=8B=D0=B9=20=D0=BD=D0=BE=D0=BC=D0=B5=D1=80=20=D1=82=D0=B5?= =?UTF-8?q?=D0=BB=D0=B5=D1=84=D0=BE=D0=BD=D0=B0.?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/Core/Asterisk/Configs/lua/extensions.lua | 5 +++++ .../Libs/WorkerCallEvents/ActionHangupChan.php | 18 ++++++++++++++++++ 2 files changed, 23 insertions(+) diff --git a/src/Core/Asterisk/Configs/lua/extensions.lua b/src/Core/Asterisk/Configs/lua/extensions.lua index 0a960c02..18c28a6b 100644 --- a/src/Core/Asterisk/Configs/lua/extensions.lua +++ b/src/Core/Asterisk/Configs/lua/extensions.lua @@ -1266,6 +1266,11 @@ function event_hangup_chan() data['agi_channel'] = get_variable("CHANNEL"); data['OLD_LINKEDID']= get_variable("OLD_LINKEDID"); data['UNIQUEID'] = get_variable("pt1c_UNIQUEID"); + if( data['UNIQUEID'] == '')then + -- Possible this is a call forwarding + data['UNIQUEID'] = get_variable("transfer_UNIQUEID"); + end + data['VMSTATUS'] = get_variable("VMSTATUS"); -- Retrieve the verbose call ID and append the original call ID if available diff --git a/src/Core/Workers/Libs/WorkerCallEvents/ActionHangupChan.php b/src/Core/Workers/Libs/WorkerCallEvents/ActionHangupChan.php index eac5fdd8..145b5b6c 100644 --- a/src/Core/Workers/Libs/WorkerCallEvents/ActionHangupChan.php +++ b/src/Core/Workers/Libs/WorkerCallEvents/ActionHangupChan.php @@ -161,6 +161,24 @@ private static function hangupChanEndCalls(WorkerCallEvents $worker, array $data } } + // The SRC channel has been completed and DST channel has not been created + $filter = [ + 'verbose_call_id=:verbose_call_id: AND endtime = "" AND dst_chan = "" AND src_chan = :src_chan:', + 'bind' => [ + 'verbose_call_id' => $data['verbose_call_id'], + 'src_chan' => $data['agi_channel'], + ], + ]; + $m_data = CallDetailRecordsTmp::find($filter); + foreach ($m_data as $row) { + $row->writeAttribute('endtime', $row->start); + $row->writeAttribute('transfer', 0); + $res = $row->update(); + if (!$res) { + SystemMessages::sysLogMsg('Action_hangup_chan', implode(' ', $row->getMessages()), LOG_DEBUG); + } + } + self::regMissedCall($data, $countRows); }