19 public const ID =
'mfmsru';
25 || Option::get(
'messageservice',
'mfmsru_enabled',
'N') ===
'Y'
47 return is_array($from) ? $from : [];
63 $from = (string)
$fields[
'from_list'];
64 $sendUrl = (string)
$fields[
'hpg_send_url'];
72 $this->
setOption(
'hpg_send_url', $sendUrl);
75 $from = array_map(
function($v) {
77 return [
'id' => $v,
'name' => $v];
78 }, explode(
';', $from));
105 return 'https://mfms.ru';
134 $status = parent::resolveStatus($serviceStatus);
136 switch ($serviceStatus)
167 'subject' => $messageFields[
'MESSAGE_FROM'],
172 $remoteCallResult = $this->touchHpg($this->
getOption(
'hpg_send_url'),
$params);
173 $result->setServiceRequest($remoteCallResult->getHttpRequest());
174 $result->setServiceResponse($remoteCallResult->getHttpResponse());
175 if (!$remoteCallResult->isSuccess())
177 $result->addErrors($remoteCallResult->getErrors());
181 $answer = $remoteCallResult->getData();
182 [
$code, $index, $msgId] = $answer;
186 $result->setExternalId($msgId);
202 'password' => $this->
getOption(
'password'),
203 'providerId' => [$messageFields[
'EXTERNAL_ID']],
206 $remoteCallResult= $this->touchHpg($this->
getOption(
'hpg_status_url'),
$params);
208 if (!$remoteCallResult->isSuccess())
210 $result->addErrors($remoteCallResult->getErrors());
214 $answer = $remoteCallResult->getData();
227 private function touchHpg(
$url,
array $params): Sender\Result\HttpRequestResult
229 $result =
new Sender\Result\HttpRequestResult();
231 $httpClient =
new HttpClient(
array(
232 "socketTimeout" => $this->socketTimeout,
233 "streamTimeout" => $this->streamTimeout,
234 "waitResponse" =>
true,
236 $httpClient->setHeader(
'User-Agent',
'Bitrix24');
237 $httpClient->setCharset(
'UTF-8');
243 if ($httpClient->query(HttpClient::HTTP_GET,
$url))
245 $answer = $httpClient->getResult();
248 if ($httpClient->getStatus() !=
'200')
254 $status = explode(
';', $answer)[0];
261 $result->setHttpRequest(
new MessageService\DTO\Request([
262 'method' => HttpClient::HTTP_GET,
264 'headers' => method_exists($httpClient,
'getRequestHeaders') ? $httpClient->getRequestHeaders()->toArray() : [],
266 $result->setHttpResponse(
new MessageService\DTO\Response([
267 'statusCode' => $httpClient->getStatus(),
268 'headers' => $httpClient->getHeaders()->toArray(),
272 $result->setData(explode(
';', $answer));
static isModuleInstalled($moduleName)