• Модуль: messageservice
  • Путь к файлу: ~/bitrix/modules/messageservice/lib/sender/sms/smsru.php
  • Класс: BitrixMessageServiceSenderSmsSmsRu
  • Вызов: SmsRu::sendMessage
public function sendMessage(array $messageFields)
{
	if (!$this->canUse())
	{
		$result = new SendMessage();
		$result->addError(new Error(Loc::getMessage('MESSAGESERVICE_SENDER_SMS_SMSRU_CAN_USE_ERROR')));
		return $result;
	}

	$params = array(
		'to' => $messageFields['MESSAGE_TO'],
		'text' => $this->prepareMessageBodyForSend($messageFields['MESSAGE_BODY']),
		'embed_id' => $this->getOption('embed_id')
	);

	if ($this->isDemo())
	{
		$params['to'] = $this->getOption('user_phone');
	}

	if ($messageFields['MESSAGE_FROM'])
	{
		$params['from'] = $messageFields['MESSAGE_FROM'];
	}

	$result = new SendMessage();
	$apiResult = $this->callExternalMethod('sms/send', $params);
	$result->setServiceRequest($apiResult->getHttpRequest());
	$result->setServiceResponse($apiResult->getHttpResponse());

	$resultData = $apiResult->getData();

	if (!$apiResult->isSuccess())
	{
		if ((int)$resultData['status_code'] == 206)
		{
			$result->setStatus(MessageServiceMessageStatus::DEFERRED);
			$result->addError(new Error($this->getErrorMessage($resultData['status_code'])));
		}
		else
		{
			$result->addErrors($apiResult->getErrors());
		}
	}
	else
	{
		$smsData = current($resultData['sms']);

		if (isset($smsData['sms_id']))
		{
			$result->setExternalId($smsData['sms_id']);
		}

		if ((int)$smsData['status_code'] !== 100)
		{
			$result->addError(new Error($this->getErrorMessage($smsData['status_code'])));
		}
		elseif ((int)$smsData['status_code'] == 206)
		{
			$result->setStatus(MessageServiceMessageStatus::DEFERRED);
			$result->addError(new Error($this->getErrorMessage($smsData['status_code'])));
		}
		else
		{
			$result->setAccepted();
		}
	}

	return $result;
}