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;
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;
$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');
use Yii;
use yii\base\Arrayable;
use yii\base\Exception;
+use yii_app\helpers\DataHelper;
use yii_app\records\UsersMessageManagement;
/**
*
*/
- 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) {
$channel = self::getChannelByName('WABA');
$subjectId = $channel['subjectId'] ?? 11374;
- $requestId = $requestId ?? uniqid();
+ $requestId = $requestId ?? DataHelper::uuid();
// Формируем фильтр получателя по номеру телефона
$subscriberFilter = [
'address' => $phone,
$payload['ttl'] = $ttl;
}
$apiUrl = self::$apiBaseUrl . '/cascade/schedule';
+ Yii::warning(json_encode($payload, JSON_UNESCAPED_UNICODE));
try {
$response = $this->client->request('POST', $apiUrl, [
'headers' => [
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;
}
}