|
10 | 10 | use MikoPBX\Core\System\BeanstalkClient; |
11 | 11 | use MikoPBX\Core\Workers\WorkerCdr; |
12 | 12 | use MikoPBX\PBXCoreREST\Controllers\BaseController; |
| 13 | +use Modules\ModuleCleanRecords\Models\CdrRecordsData; |
| 14 | +use Modules\ModuleNotifier\Lib\Providers\CdrDbProvider; |
13 | 15 |
|
14 | 16 | class GetController extends BaseController |
15 | 17 | { |
@@ -60,6 +62,58 @@ public function getDataAction(): void |
60 | 62 | $this->response->sendRaw(); |
61 | 63 | } |
62 | 64 |
|
| 65 | + /** |
| 66 | + * Получаем список файлов записей по идентификаторам. |
| 67 | + * curl 'http://127.0.0.1/pbxcore/api/cdr/records-path?id[]=mikopbx-1751624009.210&id[]=mikopbx-1751622380.183&id[]=mikopbx-1751377388.208' |
| 68 | + * @return void |
| 69 | + */ |
| 70 | + public function getRecordsPathByIdAction(): void |
| 71 | + { |
| 72 | + $id = $this->request->get('id'); |
| 73 | + if(is_string($id)){ |
| 74 | + $id = [$id]; |
| 75 | + } |
| 76 | + $result = array_fill_keys($id, []); |
| 77 | + $filter = [ |
| 78 | + 'columns' => 'linkedid,recordingfile,start,answer,src_num,dst_num', |
| 79 | + 'linkedid IN ({linkedid:array}) AND recordingfile <> ""', |
| 80 | + 'bind' => [ |
| 81 | + 'linkedid' => $id |
| 82 | + ], |
| 83 | + 'miko_result_in_file' => true, |
| 84 | + ]; |
| 85 | + |
| 86 | + $client = new BeanstalkClient(WorkerCdr::SELECT_CDR_TUBE); |
| 87 | + $message = $client->request(json_encode($filter), 2); |
| 88 | + if ($message === false) { |
| 89 | + $this->response->setContent(''); |
| 90 | + } else { |
| 91 | + $filename = json_decode($message, true); |
| 92 | + $arr_data = []; |
| 93 | + if (is_string($filename) && file_exists($filename)) { |
| 94 | + $arr_data = json_decode(file_get_contents($filename), true); |
| 95 | + @unlink($filename); |
| 96 | + } |
| 97 | + foreach ($arr_data as $cdrData){ |
| 98 | + if(!file_exists($cdrData['recordingfile'])){ |
| 99 | + continue; |
| 100 | + } |
| 101 | + // Создаём объект DateTime |
| 102 | + $date = \DateTime::createFromFormat('Y-m-d H:i:s.u', $cdrData['start']); |
| 103 | + $formatted = $date->format('Y-m-d_H-i-s'); |
| 104 | + $result[$cdrData['linkedid']][] = [ |
| 105 | + 'file' => $cdrData['recordingfile'], |
| 106 | + 'start' => $formatted, |
| 107 | + 'src' => $cdrData['src_num'], |
| 108 | + 'dst' => $cdrData['dst_num'] |
| 109 | + ]; |
| 110 | + } |
| 111 | + |
| 112 | + } |
| 113 | + print_r(json_encode($result, JSON_PRETTY_PRINT | JSON_UNESCAPED_SLASHES)); |
| 114 | + $this->response->sendRaw(); |
| 115 | + } |
| 116 | + |
63 | 117 | /** |
64 | 118 | * Скачивание записи разговора. |
65 | 119 | * /pbxcore/api/cdr/records MIKO AJAM |
|
0 commit comments