3namespace Bitrix\MessageService\Sender\Sms;
6use Bitrix\Main\ModuleManager;
8use Bitrix\Main\Web\HttpClient;
9use Bitrix\Main\Web\Json;
10use Bitrix\Main\Config\Option;
12use Bitrix\MessageService\Sender;
13use Bitrix\MessageService\Sender\Result\MessageStatus;
14use Bitrix\MessageService\Sender\Result\SendMessage;
16use Bitrix\MessageService;
20 public const ID =
'smscua';
22 private const JSON_API_URL =
'https://smsc.ua/sys/';
28 || Option::get(
'messageservice',
'smscua_enabled',
'N') ===
'Y'
51 return is_array($from) ? $from : [];
68 $result = $this->sendApiRequest(
99 return 'https://smsc.ua/login/';
120 $apiResult = $this->sendApiRequest(
'send',
$message);
121 $result->setServiceRequest($apiResult->getHttpRequest());
122 $result->setServiceResponse($apiResult->getHttpResponse());
124 if (!$apiResult->isSuccess())
126 $result->addErrors($apiResult->getErrors());
130 $smsData = $apiResult->getData();
131 $smsId = $smsData[
'id'];
139 $result->setExternalId($smsId);
160 $apiResult = $this->sendApiRequest(
'status', [
161 'id' =>
$result->getExternalId(),
163 'charset' =>
'utf-8',
166 if (!$apiResult->isSuccess())
168 $result->addErrors($apiResult->getErrors());
172 $smsData = $apiResult->getData();
179 $result->setStatusText($smsData[
'status']);
180 $result->setStatusCode(self::resolveStatus($smsData[
'status']));
189 switch ((
string)$serviceStatus)
224 return parent::resolveStatus($serviceStatus);
231 $this->loadFromList();
237 private function loadFromList()
239 $result = $this->sendApiRequest(
'senders', [
'get' => 1]);
244 $resultData =
$result->getData();
245 foreach ($resultData as
$sender)
268 $method =
$path ===
'balance' ? HttpClient::HTTP_GET : HttpClient::HTTP_POST;
275 $httpClient =
new HttpClient([
276 "socketTimeout" => $this->socketTimeout,
277 "streamTimeout" => $this->streamTimeout,
278 "waitResponse" =>
true,
280 $httpClient->setCharset(
'UTF-8');
281 $httpClient->setHeader(
'User-Agent',
'Bitrix24');
282 $httpClient->setHeader(
'Content-Type',
'application/json');
284 $result =
new Sender\Result\HttpRequestResult();
285 $answer = [
'error' =>
'Service error'];
287 $url = self::JSON_API_URL.$path.
'.php';
297 $result->setHttpRequest(
new MessageService\DTO\Request([
300 'headers' => method_exists($httpClient,
'getRequestHeaders') ? $httpClient->getRequestHeaders()->toArray() : [],
307 $answer = Json::decode($httpClient->getResult());
308 }
catch (\Bitrix\Main\ArgumentException $e)
312 $result->setHttpResponse(
new MessageService\DTO\Response([
313 'statusCode' => $httpClient->getStatus(),
314 'headers' => $httpClient->getHeaders()->toArray(),
315 'body' => $httpClient->getResult(),
319 if (isset($answer[
'error']))
321 $result->addError(
new Error($answer[
'error'], $answer[
'error_code']));
static isModuleInstalled($moduleName)
setOption($optionName, $optionValue)
getOption($optionName, $defaultValue=null)
prepareMessageBodyForSend(string $text)
sendMessage(array $messageFields)
static resolveStatus($serviceStatus)
getMessageStatus(array $messageFields)
static getHttpClientErrorString(HttpClient $httpClient)
</td ></tr ></table ></td ></tr >< tr >< td class="bx-popup-label bx-width30"><?=GetMessage("PAGE_NEW_TAGS")?> array( $site)
if($inWords) echo htmlspecialcharsbx(Number2Word_Rus(roundEx($totalVatSum $params['CURRENCY']