Bitrix-D7 23.9
 
Загрузка...
Поиск...
Не найдено
Sender.php
1<?php
2
4
14
16{
17 public function sendMessage(array $messageFields): SendMessage
18 {
19 if (!$this->supportChecker->canUse())
20 {
21 $result = new SendMessage();
22 $result->addError(new Error('Cant use'));
23 return $result;
24 }
25
26
27 $validationResult = $this->validatePhoneNumber($messageFields['MESSAGE_TO']);
28
29 if (!$validationResult->isSuccess())
30 {
31 $result = new SendMessage();
32 $result->addErrors($validationResult->getErrors());
33
34 return $result;
35
36 }
37 $phoneNumber = $validationResult->getData()['validNumber'];
38
39 $params = [
40 'id' => uniqid('', true),
41 'subject' => $messageFields['MESSAGE_FROM'],
42 'address' => $phoneNumber,
43 'priority' => 'high',
44 'contentType' => 'text',
45 'content' => Emoji::decode($messageFields['MESSAGE_BODY']),
46 ];
47
49 $this->optionManager->getOption(InternalOption::API_KEY, ''),
51 );
52 $apiResult = $externalSender->callExternalMethod('smsOutMessage', $params);
53
54 $result = new SendMessage();
55 $result->setServiceRequest($apiResult->getHttpRequest());
56 $result->setServiceResponse($apiResult->getHttpResponse());
57
58 if (!$apiResult->isSuccess())
59 {
60 $result->addErrors($apiResult->getErrors());
61
62 return $result;
63 }
64
65 $apiData = $apiResult->getData();
66
67 $result->setExternalId($apiData['id']);
68 $result->setAccepted();
69
70 return $result;
71 }
72
73 protected function validatePhoneNumber(string $number): Result
74 {
75 $result = new Result();
76
77 $number = str_replace('+', '', $number);
78
80 $this->optionManager->getOption(InternalOption::API_KEY, ''),
82 );
83 $apiResult = $externalSender->callExternalMethod("validatePhoneNumber/{$number}");
84 if ($apiResult->isSuccess())
85 {
86 $result->setData(['validNumber' => $number]);
87 }
88 else
89 {
90 $result->addErrors($apiResult->getErrors());
91 }
92
93 return $result;
94 }
95
96 public function getMessageStatus(array $messageFields): MessageStatus
97 {
98 $result = new MessageStatus();
99 $result->setId($messageFields['ID']);
100 $result->setExternalId($messageFields['ID']);
101
102 if (!$this->supportChecker->canUse())
103 {
104 $result->addError(new Error(Loc::getMessage('MESSAGESERVICE_SENDER_SMS_SMSEDNARU_USE_ERROR')));
105 return $result;
106 }
107
108 $externalSender = new ExternalSender($this->optionManager->getOption(InternalOption::API_KEY, ''), Constants::API_ENDPOINT);
109 $apiResult = $externalSender->callExternalMethod("smsOutMessage/{$messageFields['ID']}");
110 if (!$apiResult->isSuccess())
111 {
112 $result->addErrors($apiResult->getErrors());
113 }
114 else
115 {
116 $apiData = $apiResult->getData();
117
118 $result->setStatusText($apiData['dlvStatus']);
119 $result->setStatusCode((new StatusResolver())->resolveStatus($apiData['dlvStatus']));
120 }
121
122 return $result;
123 }
124
125}
static getMessage($code, $replace=null, $language=null)
Definition loc.php:29
static decode($text)
Definition emoji.php:24
Providers ExternalSender $externalSender
Definition Sender.php:18