From: marina Date: Fri, 7 Mar 2025 06:55:05 +0000 (+0300) Subject: ERP-355 Автоматизация звонков роботом из когорт X-Git-Url: https://gitweb.erp-flowers.ru/?a=commitdiff_plain;h=cfe0d2842593d2a7f37484064b6c067570fdf941;p=erp24_rep%2Fyii-erp24%2F.git ERP-355 Автоматизация звонков роботом из когорт --- diff --git a/erp24/api2/config/api2.config.php b/erp24/api2/config/api2.config.php index 8cba7a24..439db79e 100644 --- a/erp24/api2/config/api2.config.php +++ b/erp24/api2/config/api2.config.php @@ -39,7 +39,8 @@ return [ 'auth' => 'auth/login', 'delivery/admin-auth' => 'delivery/admin-auth', ['class' => 'yii\rest\UrlRule', 'controller' => ['task']], - 'POST data-buh/request/' => 'data-buh/request' + 'POST data-buh/request/' => 'data-buh/request', + 'lptracker/' => 'l-p-tracker/', ], ], 'request' => [ diff --git a/erp24/api2/controllers/LPTrackerController.php b/erp24/api2/controllers/LPTrackerController.php new file mode 100644 index 00000000..b458cab2 --- /dev/null +++ b/erp24/api2/controllers/LPTrackerController.php @@ -0,0 +1,37 @@ +get('/projects'); + var_dump($response); + } + + public function actionGetFunnels() + { +// $api = new LPTrackerApi(); +// //GET contact/search?project_id=[project_id]&phone=[phone]&email=[email] +// $response = $api->get("/contact/search?project_id=117605&phone=79036571587&email="); +// +// echo '
';
+//        var_dump($response);
+//        echo '
'; + } + + public function actionTest() + { +// $api = new LPTrackerApi(); + +// var_dump($response); +// die(); + + } + +} \ No newline at end of file diff --git a/erp24/api2/records/LPTrackerApi.php b/erp24/api2/records/LPTrackerApi.php new file mode 100644 index 00000000..1dc04bdd --- /dev/null +++ b/erp24/api2/records/LPTrackerApi.php @@ -0,0 +1,82 @@ +client = new Client([ + 'base_uri' => self::BASE_URI, + 'timeout' => self::TIMEOUT, + ]); + + if (empty($this->token)) { + $this->auth(); + } + } catch (Exception $exception) { + throw new Exception($exception); + } + } + + + private function auth() + { + $response = $this->post('/login', [ + 'login' => self::LOGIN, + 'password' => self::PASSWORD, + 'service' => self::SERVICE, + 'version' => '1.0' + ]); + + if (!empty($response) && $response['status'] == self::SUCCESS_STATUS && $response['result']['token']) { + $this->token = $response['result']['token']; + } else { + throw new Exception('Не удалось получить токен!'); + } + } + + public function get($endpoint) + { + $response = $this->client->get($endpoint, [ + 'headers' => [ + 'token' => $this->token, + 'Content-type' => 'application/json', + ] + ]); + + return json_decode($response->getBody(), true); + } + + public function post($endpoint, array $data = []) + { + $response = $this->client->post($endpoint, [ + 'json' => $data, + 'headers' => [ + 'token' => $this->token, + 'Content-Type' => 'application/json', + ] + ]); + + return json_decode($response->getBody(), true); + } + +} \ No newline at end of file diff --git a/erp24/records/SentKogort.php b/erp24/records/SentKogort.php index 2fa033dc..c0de3a42 100644 --- a/erp24/records/SentKogort.php +++ b/erp24/records/SentKogort.php @@ -20,10 +20,14 @@ use Yii; */ class SentKogort extends \yii\db\ActiveRecord { + public const CALL = 3; + public const SUCCESS_UPLOAD_TO_LPTRACKER_STATUS = 1; + public const ERROR_UPLOAD_TO_LPTRACKER_STATUS = 2; + public const KOGORT_NUMBERS = [ 'target' => 1, 'whatsapp' => 2, - 'call' => 3, + 'call' => self::CALL, ]; public const STATUSES = [ @@ -87,4 +91,10 @@ class SentKogort extends \yii\db\ActiveRecord $this->updateAttributes(['updated_at' => date('Y-m-d H:i:s')]); } } + + public function getUser() + { + return $this->hasOne(Users::class, ['phone' => 'phone']); + + } } diff --git a/erp24/scripts/tasks/task_35_sent_file_to_lptracker.php b/erp24/scripts/tasks/task_35_sent_file_to_lptracker.php new file mode 100644 index 00000000..79243b0c --- /dev/null +++ b/erp24/scripts/tasks/task_35_sent_file_to_lptracker.php @@ -0,0 +1,156 @@ +setTaskNum($taskNum) + ->setName('Task ' . $taskNum) + ->setDate($dateTask) + ->setDateStart($dateTaskStart); + $validate = $schedulerTaskLog->validate(); + if ($validate) { + $schedulerTaskLog->save(); + } + + $numbers = SentKogort::findOne(['number' => '79036571587']); + + foreach ($numbers as $number) { + $api = new LPTrackerApi(); + $response = $api->post('lead', [ + 'contact' => [ + 'project_id' => LPTrackerApi::SERVICE, + 'name' => "", +// 'name' => $number->users->name, + 'profession' => '', + 'site' => '', + 'details' => [ + [ + 'type' => 'phone', +// 'data' => $number->phone, + 'data' => "+71234567890", + ] + ] + ], + 'callback' => false, + 'funnel' => LPTrackerApi::SERVICE, + 'lead_date' => date('d.m.Y H:i'), + 'deal_date' => date('d.m.Y H:i'), + 'owner' => 0, + 'payments' => [ + ], + ]); + } + + $info = ' ================ test Task ' . $taskNum . ' stop ================'; + echo $info; + $log .= $info; + $log .= ' date >= ' . strtotime("-1 week", $time); + $dateTaskStop = date('Y-m-d H:i:s', $time); + } else { + $info = ' Task ' . $taskNum . ' skip '; + echo $info; + $log .= $info; + } +} catch (Exception $e) { + $error = 'Exception: ' . $e->getMessage() . ' ' . $e->getFile() . ' >>> ' . $e->getLine(); +} + +if (empty($schedulerTaskLog)) { + $schedulerTaskLog = new SchedulerTaskLog(); + $schedulerTaskLog->setTaskNum($taskNum) + ->setName('Task ' . $taskNum) + ->setDate($dateTask) + ->setDateStart($dateTaskStart) + ->setDateStop($dateTaskStop) + ->setDescription($description) + ->setError($error) + ->setInfo($infoText) + ->setLog($log); +} else { + $schedulerTaskLog->setDateStop($dateTaskStop) + ->setDescription($description) + ->setError($error) + ->setInfo($infoText) + ->setLog($log); +} +$validate = $schedulerTaskLog->validate(); +if ($validate) { + $schedulerTaskLog->save(); +} + +function createApiCron($key, $weekRange) +{ + $model = new ApiCronBuh(); + $model->date = date('Y-m-d H:i:s'); + $model->request_id = strval(strtotime($model->date) . '_' . $key); + $model->json_post = Json::encode([ + 'request_id' => $model->request_id, + 'cost_items' => [ + 'start_time' => date('Y-m-d 00:00:00', strtotime($weekRange['start_time'])), + 'end_time' => date('Y-m-d 23:59:59', strtotime($weekRange['end_time'])), + ] + ]); + $model->inn = $key; + try { + $model->save(); + } catch (Exception $e) { + throw new Exception($e); + } +} +