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\DTO;
13use Bitrix\MessageService\Sender;
14use Bitrix\MessageService\Sender\Result\MessageStatus;
15use Bitrix\MessageService\Sender\Result\SendMessage;
17use Bitrix\MessageService;
21 public const ID =
'ismscenter';
23 private const JSON_API_URL =
'http://isms.center/api/sms/';
29 || Option::get(
'messageservice',
'ismscenter_enabled',
'N') ===
'Y'
52 return is_array($from) ? $from : [];
68 $from = (string)
$fields[
'from_list'];
72 if (
$login && $psw && $from)
81 return [
'id' => $v,
'name' => $v];
112 return 'https://isms.center/ru';
133 $apiResult = $this->sendApiRequest(
'send',
$message);
135 if (!$apiResult->isSuccess())
137 $result->addErrors($apiResult->getErrors());
141 $smsData = $apiResult->getData();
142 $smsId = $smsData[
'message_id'];
150 $result->setExternalId($smsId);
171 $apiResult = $this->sendApiRequest(
'report', [
172 'message_id' =>
$result->getExternalId(),
175 if (!$apiResult->isSuccess())
177 $result->addErrors($apiResult->getErrors());
181 $smsData = $apiResult->getData();
188 $result->setStatusText($smsData[
'status']);
189 $result->setStatusCode(self::resolveStatus($smsData[
'status']));
197 switch ((
string)$serviceStatus)
216 return parent::resolveStatus($serviceStatus);
230 "socketTimeout" => $this->socketTimeout,
231 "streamTimeout" => $this->streamTimeout,
232 'waitResponse' =>
true,
234 $httpClient->setCharset(
'UTF-8');
235 $httpClient->setHeader(
'User-Agent',
'Bitrix24');
236 $httpClient->setHeader(
'Content-Type',
'application/json');
237 $httpClient->setAuthorization(
$login, $psw);
242 'error_message' =>
'Service error'
245 $method = HttpClient::HTTP_POST;
249 if (
$path ===
'report')
251 $method = HttpClient::HTTP_GET;
260 'headers' => method_exists($httpClient,
'getRequestHeaders') ? $httpClient->getRequestHeaders()->toArray() : [],
268 $answer = Json::decode($httpClient->getResult());
274 if (isset($answer[
'error_code']))
276 $result->addError(
new Error($answer[
'error_message'], $answer[
'error_code']));
279 $result->setHttpResponse(
new DTO\Response([
280 'statusCode' => $httpClient->getStatus(),
281 'headers' => $httpClient->getHeaders()->toArray(),
282 'body' => $httpClient->getResult(),
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']