Bitrix-D7
23.9
Загрузка...
Поиск...
Не найдено
Sender.php
1
<?php
2
3
namespace
Bitrix\MessageService\Providers\Edna\SMS\Old
;
4
5
use
Bitrix\Main\Error
;
6
use
Bitrix\Main\Localization\Loc
;
7
use
Bitrix\Main\Result
;
8
use
Bitrix\Main\Text\Emoji
;
9
use
Bitrix\MessageService\Providers\Constants\InternalOption
;
10
use
Bitrix\MessageService\Providers\Edna\SMS\ExternalSender
;
11
use
Bitrix\MessageService\Providers\Edna\SMS\StatusResolver
;
12
use
Bitrix\MessageService\Sender\Result\MessageStatus
;
13
use
Bitrix\MessageService\Sender\Result\SendMessage
;
14
15
class
Sender
extends
\Bitrix\MessageService\Providers\Edna\SMS\Sender
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
48
$externalSender
=
new
ExternalSender
(
49
$this->optionManager->getOption(InternalOption::API_KEY,
''
),
50
Constants::API_ENDPOINT
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
79
$externalSender
=
new
ExternalSender
(
80
$this->optionManager->getOption(InternalOption::API_KEY,
''
),
81
Constants::API_ENDPOINT
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
}
Bitrix\Main\Error
Definition
error.php:14
Bitrix\Main\Localization\Loc
Definition
loc.php:11
Bitrix\Main\Localization\Loc\getMessage
static getMessage($code, $replace=null, $language=null)
Definition
loc.php:29
Bitrix\Main\ORM\Data\Result
Definition
result.php:16
Bitrix\Main\Result
Definition
result.php:14
Bitrix\Main\Text\Emoji
Definition
emoji.php:10
Bitrix\Main\Text\Emoji\decode
static decode($text)
Definition
emoji.php:24
Bitrix\MessageService\MessageStatus
Definition
messagestatus.php:9
Bitrix\MessageService\Providers\Constants\InternalOption
Definition
InternalOption.php:6
Bitrix\MessageService\Providers\Edna\SMS\ExternalSender
Definition
ExternalSender.php:16
Bitrix\MessageService\Providers\Edna\SMS\Old\Constants\API_ENDPOINT
const API_ENDPOINT
Definition
Constants.php:7
Bitrix\MessageService\Providers\Edna\SMS\Old\Sender
Definition
Sender.php:16
Bitrix\MessageService\Providers\Edna\SMS\Old\Sender\sendMessage
sendMessage(array $messageFields)
Definition
Sender.php:17
Bitrix\MessageService\Providers\Edna\SMS\Old\Sender\validatePhoneNumber
validatePhoneNumber(string $number)
Definition
Sender.php:73
Bitrix\MessageService\Providers\Edna\SMS\Old\Sender\getMessageStatus
getMessageStatus(array $messageFields)
Definition
Sender.php:96
Bitrix\MessageService\Providers\Edna\SMS\Sender
Definition
Sender.php:12
Bitrix\MessageService\Providers\Edna\SMS\StatusResolver
Definition
StatusResolver.php:8
Bitrix\MessageService\Providers\Edna\Sender\$externalSender
Providers ExternalSender $externalSender
Definition
Sender.php:18
Bitrix\MessageService\Sender\Result\MessageStatus
Definition
messagestatus.php:7
Bitrix\MessageService\Sender\Result\SendMessage
Definition
sendmessage.php:9
Bitrix\MessageService\Providers\Edna\SMS\Old
Definition
Constants.php:3
modules
messageservice
lib
Providers
Edna
SMS
Old
Sender.php
Создано системой
1.10.0