Server IP : 80.87.202.40 / Your IP : 216.73.216.169 Web Server : Apache System : Linux rospirotorg.ru 5.14.0-539.el9.x86_64 #1 SMP PREEMPT_DYNAMIC Thu Dec 5 22:26:13 UTC 2024 x86_64 User : bitrix ( 600) PHP Version : 8.2.27 Disable Function : NONE MySQL : OFF | cURL : ON | WGET : ON | Perl : ON | Python : OFF | Sudo : ON | Pkexec : ON Directory : /home/bitrix/ext_www/rospirotorg.ru/bitrix/modules/messageservice/lib/Providers/Edna/ |
Upload File : |
<?php namespace Bitrix\MessageService\Providers\Edna; use Bitrix\Main\Error; use Bitrix\Main\Result; use Bitrix\MessageService; use Bitrix\MessageService\Providers; use Bitrix\MessageService\Sender\Result\MessageStatus; use Bitrix\MessageService\Sender\Result\SendMessage; abstract class Sender extends Providers\Base\Sender { protected Providers\OptionManager $optionManager; protected Providers\SupportChecker $supportChecker; protected EdnaRu $utils; protected Providers\ExternalSender $externalSender; abstract protected function initializeDefaultExternalSender(): Providers\ExternalSender; abstract protected function getSendMessageParams(array $messageFields): Result; abstract protected function getSendMessageMethod(array $messageFields): string; abstract protected function isTemplateMessage(array $messageFields): bool; abstract protected function sendHSMtoChat(array $messageFields): Result; /** * @param Providers\OptionManager $optionManager * @param Providers\SupportChecker $supportChecker */ public function __construct( Providers\OptionManager $optionManager, Providers\SupportChecker $supportChecker, EdnaRu $utils ) { $this->optionManager = $optionManager; $this->supportChecker = $supportChecker; $this->utils = $utils; $this->externalSender = $this->initializeDefaultExternalSender(); } public function sendMessage(array $messageFields): SendMessage { if (!$this->supportChecker->canUse()) { $result = new SendMessage(); $result->addError(new Error('Service is unavailable')); return $result; } $paramsResult = $this->getSendMessageParams($messageFields); if (!$paramsResult->isSuccess()) { $providerId = $this->optionManager->getProviderId(); $cacheManager = new Providers\CacheManager($providerId); $cacheManager->deleteValue(Providers\CacheManager::CHANNEL_CACHE_ENTITY_ID); $sender = MessageService\Sender\SmsManager::getSenderById($providerId); \Bitrix\Main\Application::getInstance()->addBackgroundJob([$sender, 'refreshFromList']); $result = new SendMessage(); $result->addErrors($paramsResult->getErrors()); return $result; } $requestParams = $paramsResult->getData(); $method = $this->getSendMessageMethod($messageFields); if ($this->isTemplateMessage($messageFields)) { $this->sendHSMtoChat($messageFields); } $result = new SendMessage(); $requestResult = $this->externalSender->callExternalMethod($method, $requestParams); if (!$requestResult->isSuccess()) { $result->addErrors($requestResult->getErrors()); return $result; } $apiData = $requestResult->getData(); $result->setExternalId($apiData['requestId']); $result->setAccepted(); return $result; } public function getMessageStatus(array $messageFields): MessageStatus { return new MessageStatus(); } }