瀏覽代碼

提交录音文件入库

liuyuanhang 4 年之前
父節點
當前提交
153a18a991
共有 1 個文件被更改,包括 117 次插入44 次删除
  1. 117 44
      app/Http/Controllers/Api/V2/CommonController.php

+ 117 - 44
app/Http/Controllers/Api/V2/CommonController.php

xqd xqd xqd
@@ -502,6 +502,8 @@ class CommonController extends Controller
                         'RegionId' => "cn-kunming",
                         'PhoneNoA' => $phone1,
                         'PhoneNoB' => $phone2,
+                        // 修改
+                        'IsRecordingEnabled' => true
                     ],
                 ])
                 ->request();
@@ -972,21 +974,23 @@ class CommonController extends Controller
         // 开始json
         $req = request()->post();
         // 首先创建记录
-        try {
-            $data = [];
-            $data['call_time'] = $req[0]['call_time'];
-            $data['call_type'] = $req[0]['call_type'];
-            $data['aphone'] = $req[0]['phone_no'];
-            $data['bphone'] = $req[0]['peer_no'];
-            $data['call_id'] = $req[0]['call_id'];
-            $data['secret_no'] = $req[0]['called_display_no'];
-            $data['sub_id'] = $req[0]['sub_id'];
-            CallLog::create($data);
-        }catch (\Exception $e){
-            var_dump($e->getFile().$e->getLine().$e->getMessage());
-
-        }catch (\PDOException $e){
-            var_dump($e->getFile().$e->getLine().$e->getMessage());
+        if ($req){
+            try {
+                $data = [];
+                $data['call_time'] = $req[0]['call_time'];
+                $data['call_type'] = $req[0]['call_type'];
+                $data['aphone'] = $req[0]['phone_no'];
+                $data['bphone'] = $req[0]['peer_no'];
+                $data['call_id'] = $req[0]['call_id'];
+                $data['secret_no'] = $req[0]['called_display_no'];
+                $data['sub_id'] = $req[0]['sub_id'];
+                CallLog::create($data);
+            }catch (\Exception $e){
+                var_dump($e->getFile().$e->getLine().$e->getMessage());
+
+            }catch (\PDOException $e){
+                var_dump($e->getFile().$e->getLine().$e->getMessage());
+            }
         }
 
         return json_encode(['code'=>0,'msg'=>"成功"],JSON_UNESCAPED_UNICODE);
@@ -1027,43 +1031,112 @@ class CommonController extends Controller
 
         $req = request()->post();
         $callids = CallLog::where('call_id',$req[0]['call_id'])->first();
-        try {
-            if ($callids){
-                if($req[0]['release_dir']==0||(strtotime($req[0]['release_time'])-strtotime($req[0]['start_time']))==0||$req[0]['unconnected_cause']!=0){
-                    CallLog::where('call_id',$req[0]['call_id'])->delete();
-                }else{
-                    // 修改信息
-                    $axbId = Axb::where(['xphone'=>$req[0]['called_display_no'],'subs_id'=>$req[0]['sub_id']])->first();
-                    if($axbId){
-                        $where['docter_id'] = $axbId['docter_id'];
-                        $where['user_id'] = $axbId['user_id'];
-                        $where['product_type'] =1;
-                        $where['order_status'] =3;
-                        $where['payment_status'] =2;
-                        $order_id = Order::where($where)->first();
-                        if ($order_id){
-                            $order_id = $order_id->id;
-                            $save_data = [];
-                            $save_data['order_id'] = $order_id;
-                            $save_data['ring_time'] = $req[0]['release_time'];
-                            $save_data['docter_id'] = $axbId['docter_id'];
-                            $save_data['release_dir'] = $req[0]['release_dir'];
-                            $save_data['talk_time'] = strtotime($req[0]['release_time'])-strtotime($req[0]['start_time']);
-                            $save_data['text'] = json_encode($req,JSON_UNESCAPED_UNICODE);
-                            // 解除号码绑定,并且删除数据库绑定信息
+        if ($req && $callids) {
+            try {
+                if ($callids){
+                    if($req[0]['release_dir']==0||(strtotime($req[0]['release_time'])-strtotime($req[0]['start_time']))==0||$req[0]['unconnected_cause']!=0){
+                        CallLog::where('call_id',$req[0]['call_id'])->delete();
+                    }else{
+                        // 修改信息
+                        $axbId = Axb::where(['xphone'=>$req[0]['called_display_no'],'subs_id'=>$req[0]['sub_id']])->first();
+                        if($axbId){
+                            $where['docter_id'] = $axbId['docter_id'];
+                            $where['user_id'] = $axbId['user_id'];
+                            $where['product_type'] =1;
+                            $where['order_status'] =3;
+                            $where['payment_status'] =2;
+                            $order_id = Order::where($where)->first();
+                            if ($order_id){
+                                $order_id = $order_id->id;
+                                $save_data = [];
+                                $save_data['order_id'] = $order_id;
+                                $save_data['ring_time'] = $req[0]['release_time'];
+                                $save_data['docter_id'] = $axbId['docter_id'];
+                                $save_data['release_dir'] = $req[0]['release_dir'];
+                                $save_data['talk_time'] = strtotime($req[0]['release_time'])-strtotime($req[0]['start_time']);
+                                $save_data['text'] = json_encode($req,JSON_UNESCAPED_UNICODE);
+                                // 解除号码绑定,并且删除数据库绑定信息
 //                            $this->unLokPhone($req[0]['called_display_no'],$req[0]['sub_id']);
 //                            Axb::where(['subs_id'=>$req[0]['sub_id']])->delete();
-                            CallLog::where('call_id',$req[0]['call_id'])->update($save_data);
-                            return json_encode(['code'=>0,'msg'=>"成功"],JSON_UNESCAPED_UNICODE);
+                                CallLog::where('call_id',$req[0]['call_id'])->update($save_data);
+                                return json_encode(['code'=>0,'msg'=>"成功"],JSON_UNESCAPED_UNICODE);
+                            }
                         }
                     }
                 }
+
+            }catch (\Exception $e){
+                CallLog::create(['text'=>json_encode($e->getFile().$e->getCode().$e->getMessage(),JSON_UNESCAPED_UNICODE)]);
+            }catch (\PDOException $e){
+                CallLog::create(['text'=>json_encode($e->getFile().$e->getCode().$e->getMessage(),JSON_UNESCAPED_UNICODE)]);
             }
+        }
+        return json_encode(['code' => 0, 'msg' => "成功"], JSON_UNESCAPED_UNICODE);
+    }
 
+    /**
+     * 录音文件返回
+     * @return false|string
+     */
+    public function Recording_status(){
+        $req = request()->post();
+        trace(['录音文件返回'=>'成功','入库数据'=>$req[0]],'info');
+        $config = config('config.axb');
+        AlibabaCloud::accessKeyClient($config['appid'], $config['appscret'])
+            ->regionId('cn-kunming')
+            ->asDefaultClient();
+        try {
+            $result = AlibabaCloud::dyplsapi()
+                ->v20170525()
+                ->queryRecordFileDownloadUrl()
+                ->withCallTime(date('Y-m-d H:i:s',substr($req[0]['call_time'], 0, 10)))
+                ->withCallId($req[0]['call_id'])
+                ->withPoolKey($req[0]['pool_key'])
+                ->request()->toArray();
+            trace(['录音文件返回1'=>'成功1','入库数据'=>$result],'info');
+            if ($result['Message']=='OK'){
+                $file = $this->downImgRar($result['DownloadUrl'],$req[0]['call_id']);
+                CallLog::where('call_id',$req[0]['call_id'])->update(['files'=>$file]);
+                trace(['录音文件完成'=>'成功','入库链接'=>$file],'info');
+            }
         }catch (\Exception $e){
-            CallLog::create(['text'=>json_encode($e->getFile().$e->getCode().$e->getMessage(),JSON_UNESCAPED_UNICODE)]);
-        }catch (\PDOException $e){
-            CallLog::create(['text'=>json_encode($e->getFile().$e->getCode().$e->getMessage(),JSON_UNESCAPED_UNICODE)]);
+            trace(['录音文件返回'=>'失败','入库数据'=>$req,'录音文件返回'=>isset($result)?$result:''],'info');
+        }
+        return json_encode(['code' => 0, 'msg' => "成功"], JSON_UNESCAPED_UNICODE);
+    }
+
+
+    /**
+     * 链接下载到本地
+     * @param $url
+     * @param $rename
+     * @param $ext
+     * @return string
+     */
+    public function downImgRar($url,$rename,$ext='mp3'){
+        trace(['开始转换'=>'1','链接'=>$url],'info');
+        try {
+            $dir = iconv("UTF-8", "GBK", "upload/callLog/");
+            if (!file_exists($dir)){
+                mkdir ($dir,0777,true);
+            }
+            $file_path = 'upload/callLog/';
+            $ch = curl_init($url);
+            curl_setopt($ch, CURLOPT_HEADER, 0);
+            curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
+            curl_setopt($ch, CURLOPT_BINARYTRANSFER,1);
+            $rawdata=curl_exec ($ch);
+            curl_close ($ch);
+            // 使用中文文件名需要转码
+            $fp = fopen($file_path.iconv('UTF-8', 'GBK', $rename).".".$ext,'w');
+            fwrite($fp, $rawdata);
+            fclose($fp);
+            // 返回路径
+            trace(['转换成功!'=>'1','地址'=>$_SERVER['DOCUMENT_ROOT'].$file_path.$rename.".".$ext],'info');
+            return $file_path.$rename.".".$ext;
+        }catch (\Exception $e){
+            trace(['转换失败'=>'1','错误'=>$e->getFile().'文件'.$e->getLine().'行'.$e->getMessage().'错误!'],'info');
+
         }
 
     }