1C-Bitrix 25.700.0
Загрузка...
Поиск...
Не найдено
dummyhttp.php
См. документацию.
1<?php
2namespace Bitrix\MessageService\Sender\Sms;
3
4use Bitrix\Main\Error;
5use Bitrix\Main\Result;
6use Bitrix\Main\Web\HttpClient;
7use Bitrix\Main\Web\Json;
8use Bitrix\MessageService\DTO;
9use Bitrix\MessageService\MessageStatus;
10use Bitrix\MessageService\Sender;
11
16{
17 public const ID = 'dummy_http';
18
19 public function getId()
20 {
21 return static::ID;
22 }
23
24 public function getName()
25 {
26 return 'Dummy HTTP SMS';
27 }
28
29 public function getShortName()
30 {
31 return $this->getName();
32 }
33
34 public function getFromList()
35 {
36 return [
37 [
38 'id' => 'test',
39 'name' => 'test',
40 ]
41 ];
42 }
43
45 {
46 $messageFields['MESSAGE_BODY'] = $this->prepareMessageBodyForSend($messageFields['MESSAGE_BODY']);
48 $host = $this->getOption('remoteHost');
49 if (!$host)
50 {
51 return $result->addError(new Error('Provider is not configured'));
52 }
53 $requestBody = Json::encode($messageFields);
54
55 $result->setServiceRequest(new DTO\Request([
56 'method' => HttpClient::HTTP_POST,
57 'uri' => $host,
58 'body' => $requestBody,
59 ]));
60 $httpClient = new HttpClient();
61 $queryResult = $httpClient->query(HttpClient::HTTP_POST, $host, $requestBody);
62 if (!$queryResult)
63 {
64 $error = $httpClient->getError();
65 $errorCode = array_key_first($error);
66 $result->setServiceResponse(new DTO\Response([
67 'error' => Sender\Util::getHttpClientErrorString($httpClient)
68 ]));
69 return $result->addError(new Error($error[$errorCode], $errorCode));
70 }
71
72 $result->setServiceResponse(new DTO\Response([
73 'statusCode' => $httpClient->getStatus(),
74 'headers' => $httpClient->getHeaders()->toArray(),
75 'body' => $httpClient->getResult(),
76 ]));
77 $responseCode = $httpClient->getStatus();
78 if ($responseCode !== 200)
79 {
80 return $result->addError(new Error("HTTP response code {$responseCode}", "HTTP_{$responseCode}"));
81 }
82
83 $responseBody = $httpClient->getResult();
84 if ($responseBody == '')
85 {
86 return $result->addError(new Error("Empty response", "EMPTY_RESPONSE"));
87 }
88
89 try
90 {
91 $decoded = Json::decode($responseBody);
92 $result->setExternalId($decoded['message_id']);
93 $result->setAccepted();
94 }
95 catch (\Throwable $e)
96 {
97 $result->addError(new Error("JSON decode error", "JSON_ERROR"));
98 }
99 return $result;
100 }
101
102 public function canUse()
103 {
104 return true;
105 }
106
107 public function isRegistered()
108 {
109 return true;
110 }
111
112 public function register(array $fields)
113 {
114 $this->setOption('remoteHost', $fields['remoteHost']);
115
116 return new Result();
117 }
118
119 public function getOwnerInfo()
120 {
121 // TODO: Implement getOwnerInfo() method.
122 }
123
124 public function getRemoteHost()
125 {
126 return $this->getOption('remoteHost');
127 }
128
129 public function getExternalManageUrl()
130 {
131 return '';
132 }
133
135 {
137 $result->setId($messageFields['ID']);
138 $result->setExternalId($messageFields['ID']);
140
141 return $result;
142 }
143
144 public static function resolveStatus($serviceStatus)
145 {
146 switch ($serviceStatus)
147 {
148 case 'read':
149 case 'sent':
150 return MessageStatus::SENT;
151 case 'enqueued':
153 case 'delayed':
155 case 'delivered':
157 case 'undelivered':
159 case 'failed':
160 case 'cancelled':
162 }
163
164 return parent::resolveStatus($serviceStatus);
165 }
166}
$messageFields
Определения callback_ednaru.php:22
Определения error.php:15
Определения request.php:10
Определения response.php:5
setOption($optionName, $optionValue)
Определения baseconfigurable.php:224
getOption($optionName, $defaultValue=null)
Определения baseconfigurable.php:237
prepareMessageBodyForSend(string $text)
Определения base.php:177
sendMessage(array $messageFields)
Определения dummyhttp.php:44
static resolveStatus($serviceStatus)
Определения dummyhttp.php:144
getMessageStatus(array $messageFields)
Определения dummyhttp.php:134
static getHttpClientErrorString(HttpClient $httpClient)
Определения util.php:24
</td ></tr ></table ></td ></tr >< tr >< td class="bx-popup-label bx-width30"><?=GetMessage("PAGE_NEW_TAGS")?> array( $site)
Определения file_new.php:804
$result
Определения get_property_values.php:14
$host
Определения mysql_to_pgsql.php:32
$error
Определения subscription_card_product.php:20
$fields
Определения yandex_run.php:501