- Модуль: messageservice
- Путь к файлу: ~/bitrix/modules/messageservice/lib/sender/sms/dummyhttp.php
- Класс: BitrixMessageServiceSenderSmsDummyHttp
- Вызов: DummyHttp::sendMessage
public function sendMessage(array $messageFields): SenderResultSendMessage
{
$messageFields['MESSAGE_BODY'] = $this->prepareMessageBodyForSend($messageFields['MESSAGE_BODY']);
$result = new SenderResultSendMessage();
$host = $this->getOption('remoteHost');
if (!$host)
{
return $result->addError(new Error('Provider is not configured'));
}
$requestBody = Json::encode($messageFields);
$result->setServiceRequest(new DTORequest([
'method' => HttpClient::HTTP_POST,
'uri' => $host,
'body' => $requestBody,
]));
$httpClient = new HttpClient();
$queryResult = $httpClient->query(HttpClient::HTTP_POST, $host, $requestBody);
if (!$queryResult)
{
$error = $httpClient->getError();
$errorCode = array_key_first($error);
$result->setServiceResponse(new DTOResponse([
'error' => SenderUtil::getHttpClientErrorString($httpClient)
]));
return $result->addError(new Error($error[$errorCode], $errorCode));
}
$result->setServiceResponse(new DTOResponse([
'statusCode' => $httpClient->getStatus(),
'headers' => $httpClient->getHeaders()->toArray(),
'body' => $httpClient->getResult(),
]));
$responseCode = $httpClient->getStatus();
if ($responseCode !== 200)
{
return $result->addError(new Error("HTTP response code {$responseCode}", "HTTP_{$responseCode}"));
}
$responseBody = $httpClient->getResult();
if ($responseBody == '')
{
return $result->addError(new Error("Empty response", "EMPTY_RESPONSE"));
}
try
{
$decoded = Json::decode($responseBody);
$result->setExternalId($decoded['message_id']);
$result->setAccepted();
}
catch (Throwable $e)
{
$result->addError(new Error("JSON decode error", "JSON_ERROR"));
}
return $result;
}