From b030585ba16cdf29a2a0e343d9d64771e0f5df41 Mon Sep 17 00:00:00 2001 From: fomichev Date: Wed, 5 Mar 2025 14:01:08 +0300 Subject: [PATCH] =?utf8?q?=D0=98=D1=81=D0=BF=D1=80=D0=B0=D0=B2=D0=BB=D0=B5?= =?utf8?q?=D0=BD=D0=B8=D1=8F=20=D0=B2=20=D0=BE=D1=82=D0=BF=D1=80=D0=B0?= =?utf8?q?=D0=B2=D0=BA=D0=B5=20=D0=B8=20=D1=81=D0=BE=D1=85=D1=80=D0=B0?= =?utf8?q?=D0=BD=D0=B5=D0=BD=D0=B8=D0=B8?= MIME-Version: 1.0 Content-Type: text/plain; charset=utf8 Content-Transfer-Encoding: 8bit --- erp24/helpers/DataHelper.php | 12 ++++++++++++ erp24/jobs/SendWhatsappMessageJob.php | 25 ++++++++++++++----------- erp24/services/WhatsAppService.php | 10 ++++++---- 3 files changed, 32 insertions(+), 15 deletions(-) diff --git a/erp24/helpers/DataHelper.php b/erp24/helpers/DataHelper.php index 29499e6c..e620cd65 100644 --- a/erp24/helpers/DataHelper.php +++ b/erp24/helpers/DataHelper.php @@ -50,6 +50,18 @@ class DataHelper return strtolower($str); } + + public static function uuid($prefix = '') + { + $chars = md5(uniqid(mt_rand(), true)); + $uuid = substr($chars,0,8) . '-'; + $uuid .= substr($chars,8,4) . '-'; + $uuid .= substr($chars,12,4) . '-'; + $uuid .= substr($chars,16,4) . '-'; + $uuid .= substr($chars,20,12); + return $prefix . $uuid; + } + public static function isJson($string) { json_decode($string); return json_last_error() === JSON_ERROR_NONE; diff --git a/erp24/jobs/SendWhatsappMessageJob.php b/erp24/jobs/SendWhatsappMessageJob.php index f25cfe07..8b0faffa 100644 --- a/erp24/jobs/SendWhatsappMessageJob.php +++ b/erp24/jobs/SendWhatsappMessageJob.php @@ -5,6 +5,7 @@ namespace app\jobs; use yii\base\BaseObject; use yii\queue\JobInterface; use Yii; +use yii_app\helpers\DataHelper; use yii_app\services\WhatsAppMessageResponse; use yii_app\services\WhatsAppService; use yii_app\records\UsersMessageManagement; @@ -50,34 +51,36 @@ class SendWhatsappMessageJob extends BaseObject implements JobInterface $apiKey = Yii::$app->params['WHATSAPP_API_KEY']; $cascadeId = WhatsAppService::getCascadeIdByName('WABA') ?? 5686; $whatsappService = new WhatsAppService($apiKey, $cascadeId); - $requestId = uniqid(); + $requestId = DataHelper::uuid(); try { - - $message = $this->messageData['message']; + $isTest = $this->isTest; + $message = ($this->messageData)['message']; + $kogortDate = ($this->messageData)['kogort_date']; + $targetDate = ($this->messageData)['target_date']; if ($this->isTest) { - $message = "Здравствуйте\n - Узнать подробности вы можете на нашем сайте https://bazacvetov24.ru."; + $message = "Здравствуйте\nУзнать подробности вы можете на нашем сайте https://bazacvetov24.ru."; } - $response = $whatsappService->sendMessage($requestId, $phone, $message, $this->isTest); + $response = $whatsappService->sendMessage($requestId, $phone, $message, $isTest); $status = 'sent'; - if (!$status instanceof WhatsAppMessageResponse) { + if (!$response instanceof WhatsAppMessageResponse) { $status = $response ?? 'error'; } $record = new UsersWhatsappMessage(); $record->request_id = $requestId; $record->phone = $phone; $record->message = $message; - $record->kogort_date = $this->messageData['kogort_date']; - $record->target_date = $this->messageData['target_date']; + $record->kogort_date = $kogortDate; + $record->target_date = $targetDate; $record->status = $status; $record->created_at = date('Y-m-d H:i:s'); if ($record->save()) { - Yii::warning("WhatsApp сообщение успешно отправлено и сохранено для телефона {$phone}. Request ID: " . $response->requestId, 'whatsapp'); + Yii::warning("WhatsApp сообщение успешно отправлено и сохранено для телефона {$phone}. Request ID: " . + $response->requestId, 'whatsapp'); } else { - Yii::warning("WhatsApp сообщение отправлено, но не удалось сохранить запись для телефона {$phone}.", 'whatsapp'); + Yii::warning("WhatsApp сообщение отправлено, но не удалось сохранить запись для телефона {$phone}." . json_encode($record->getErrors(), JSON_UNESCAPED_UNICODE), 'whatsapp'); } } catch (\Exception $e) { Yii::error("Ошибка отправки WhatsApp сообщения для телефона {$phone}: " . $e->getMessage(), 'whatsapp'); diff --git a/erp24/services/WhatsAppService.php b/erp24/services/WhatsAppService.php index 7ad5f0a5..fe9d0242 100644 --- a/erp24/services/WhatsAppService.php +++ b/erp24/services/WhatsAppService.php @@ -9,6 +9,7 @@ use Psr\Http\Message\ResponseInterface; use Yii; use yii\base\Arrayable; use yii\base\Exception; +use yii_app\helpers\DataHelper; use yii_app\records\UsersMessageManagement; /** @@ -131,7 +132,7 @@ class WhatsAppService * */ - public function sendMessage($requestId, $phone, $message, $startTime = null, $ttl = null, $isTest = false) + public function sendMessage($requestId, $phone, $message, $isTest = false, $startTime = null, $ttl = null) { if (!$message) { @@ -141,7 +142,7 @@ class WhatsAppService $channel = self::getChannelByName('WABA'); $subjectId = $channel['subjectId'] ?? 11374; - $requestId = $requestId ?? uniqid(); + $requestId = $requestId ?? DataHelper::uuid(); // Формируем фильтр получателя по номеру телефона $subscriberFilter = [ 'address' => $phone, @@ -201,6 +202,7 @@ class WhatsAppService $payload['ttl'] = $ttl; } $apiUrl = self::$apiBaseUrl . '/cascade/schedule'; + Yii::warning(json_encode($payload, JSON_UNESCAPED_UNICODE)); try { $response = $this->client->request('POST', $apiUrl, [ 'headers' => [ @@ -221,11 +223,11 @@ class WhatsAppService if (!$errorMessage) { $errorMessage = "Ошибка: код " . $response->getStatusCode() . ". " . $errorDetail; } - Yii::error($errorMessage); + Yii::error($errorMessage, 'response'); return $errorKey; } } catch (RequestException $e) { - Yii::error("Ошибка при выполнении запроса: " . $e->getMessage()); + Yii::error("Ошибка при выполнении запроса: " . $e->getMessage(), 'request'); return null; } } -- 2.39.5