- Модуль: messageservice
- Путь к файлу: ~/bitrix/modules/messageservice/lib/sender/sms/smsassistentby.php
- Класс: BitrixMessageServiceSenderSmsSmsAssistentBy
- Вызов: SmsAssistentBy::callJsonApi
private function callJsonApi($command, array $params = []): SenderResultHttpRequestResult
{
$httpClient = new HttpClient(array(
"socketTimeout" => $this->socketTimeout,
"streamTimeout" => $this->streamTimeout,
"waitResponse" => true,
));
$httpClient->setHeader('User-Agent', 'Bitrix24');
$httpClient->setCharset('UTF-8');
$httpClient->setHeader('Content-Type', 'application/json');
if (!isset($params['login']) && $this->isRegistered())
{
$params['login'] = $this->getOption('user');
}
if (!isset($params['password']) && $this->isRegistered())
{
$params['password'] = $this->getOption('password');
}
$params['command'] = $command;
$params = Json::encode($params);
$result = new SenderResultHttpRequestResult();
$result->setHttpRequest(new MessageServiceDTORequest([
'method' => HttpClient::HTTP_POST,
'uri' => self::JSON_API_URL,
'headers' => method_exists($httpClient, 'getRequestHeaders') ? $httpClient->getRequestHeaders()->toArray() : [],
'body' => $params,
]));
$answer = [];
if ($httpClient->query(HttpClient::HTTP_POST, self::JSON_API_URL, $params) && $httpClient->getStatus() == '200')
{
try
{
$answer = Json::decode($httpClient->getResult());
}
catch (BitrixMainArgumentException $e)
{
$answer = ['error' => -1000];
}
}
if (isset($answer['error']))
{
$result->addError(new Error($this->getErrorMessage($answer['error'], $answer)));
}
if (isset($answer['status']) && $answer['status'] === -1)
{
$msg = !empty($answer['message']) ? $answer['message'] : $this->getErrorMessage($answer['error'], 1000);
$result->addError(new Error($msg));
}
$result->setHttpResponse(new MessageServiceDTOResponse([
'statusCode' => $httpClient->getStatus(),
'headers' => $httpClient->getHeaders()->toArray(),
'body' => $httpClient->getResult(),
'error' => SenderUtil::getHttpClientErrorString($httpClient)
]));
$result->setData($answer);
return $result;
}