1C-Bitrix 25.700.0
Загрузка...
Поиск...
Не найдено
Sender.php
См. документацию.
1<?php
2
3namespace Bitrix\MessageService\Providers\Edna\WhatsApp\Old;
4
5use Bitrix\Main\Error;
6use Bitrix\Main\Result;
7use Bitrix\Main\Localization\Loc;
8use Bitrix\MessageService\Providers;
9use Bitrix\MessageService\Providers\Constants\InternalOption;
10use Bitrix\MessageService\Providers\Edna\WhatsApp\ExternalSender;
11use Bitrix\MessageService\Providers\Edna\WhatsApp\StatusResolver;
12use Bitrix\MessageService\Sender\Result\MessageStatus;
13use Bitrix\MessageService\Sender\Result\SendMessage;
14
16{
17 public function __construct(
21 EmojiConverter $emoji
22 )
23 {
24 parent::__construct($optionManager, $supportChecker, $utils, $emoji);
25
26 $this->emoji = $emoji;
27 }
28
30 {
31 if (!$this->supportChecker->canUse())
32 {
33 $result = new SendMessage();
34 $result->addError(new Error('Service is unavailable'));
35
36 return $result;
37 }
38
41
42 if ($method === 'imOutHSM')
43 {
45 }
46
47 $result = new SendMessage();
48
51 $this->optionManager->getOption(InternalOption::API_KEY),
53 )
54 ;
55
56 $requestResult = $externalSender->callExternalMethod($method, $requestParams);
57 if (!$requestResult->isSuccess())
58 {
59 $result->addErrors($requestResult->getErrors());
60
61 return $result;
62 }
63
64 $apiData = $requestResult->getData();
65 $result->setExternalId($apiData['id']);
66 $result->setAccepted();
67
68 return $result;
69 }
70
72 {
73 $result = new MessageStatus();
74 $result->setId($messageFields['ID']);
75 $result->setExternalId($messageFields['ID']);
76
77 if (!$this->supportChecker->canUse())
78 {
79 $result->addError(new Error(Loc::getMessage('MESSAGESERVICE_SENDER_SMS_EDNARU_USE_ERROR')));
80 return $result;
81 }
82
85 $this->optionManager->getOption(InternalOption::API_KEY),
87 )
88 ;
89
90 $apiResult = $externalSender->callExternalMethod("imOutMessage/{$messageFields['ID']}");
91 if (!$apiResult->isSuccess())
92 {
93 $result->addErrors($apiResult->getErrors());
94 }
95 else
96 {
97 $apiData = $apiResult->getData();
98
99 $result->setStatusText($apiData['dlvStatus']);
100 $result->setStatusCode((new StatusResolver())->resolveStatus($apiData['dlvStatus']));
101 }
102
103 return $result;
104 }
105
112 public function prepareMessageBodyForSave(string $text): string
113 {
114 return $this->emoji->convertEmoji($text, Providers\Constants\InternalOption::EMOJI_ENCODE);
115 }
116
124 {
125 $messageFields['MESSAGE_BODY'] = $this->emoji->convertEmoji($messageFields['MESSAGE_BODY'], Providers\Constants\InternalOption::EMOJI_DECODE);
126 $params = [
127 'id' => uniqid('', true),
128 'subject' => $messageFields['MESSAGE_FROM'],
129 'address' => str_replace('+', '', $messageFields['MESSAGE_TO']),
130 'contentType' => 'text',
131 'text' => $messageFields['MESSAGE_BODY'],
132 ];
133
135 {
136 $params['imType'] = 'whatsapp';
137 $params['text'] = $messageFields['MESSAGE_HEADERS']['template']['text'];
138
139 $templateFields = ['header', 'footer', 'keyboard'];
140
141 foreach ($templateFields as $templateField)
142 {
143 if (
144 isset($messageFields['MESSAGE_HEADERS']['template'][$templateField])
145 && count($messageFields['MESSAGE_HEADERS']['template'][$templateField]) > 0
146 )
147 {
148 $params[$templateField] = $messageFields['MESSAGE_HEADERS']['template'][$templateField];
149 }
150 }
151
152 $params = $this->emoji->convertEmojiInTemplate($params, InternalOption::EMOJI_DECODE);
153 }
154
155 return (new Result)->setData($params);
156 }
157
165 protected function getSendMessageMethod(array $messageFields): string
166 {
167 $method = 'imOutMessage';
169 {
170 $method = 'imOutHSM';
171 }
172
173 return $method;
174 }
175
176
177}
$messageFields
Определения callback_ednaru.php:22
Определения error.php:15
Providers OptionManager $optionManager
Определения Sender.php:15
Providers ExternalSender $externalSender
Определения Sender.php:18
Providers SupportChecker $supportChecker
Определения Sender.php:16
getSendMessageParams(array $messageFields)
Определения Sender.php:123
__construct(Providers\OptionManager $optionManager, Providers\SupportChecker $supportChecker, Providers\Edna\EdnaRu $utils, EmojiConverter $emoji)
Определения Sender.php:17
getSendMessageMethod(array $messageFields)
Определения Sender.php:165
sendMessage(array $messageFields)
Определения Sender.php:29
getMessageStatus(array $messageFields)
Определения Sender.php:71
</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
$requestParams
Определения urlrewrite.php:46
$text
Определения template_pdf.php:79
</p ></td >< td valign=top style='border-top:none;border-left:none;border-bottom:solid windowtext 1.0pt;border-right:solid windowtext 1.0pt;padding:0cm 2.0pt 0cm 2.0pt;height:9.0pt'>< p class=Normal align=center style='margin:0cm;margin-bottom:.0001pt;text-align:center;line-height:normal'>< a name=ТекстовоеПоле54 ></a ><?=($taxRate > count( $arTaxList) > 0) ? $taxRate."%"
Определения waybill.php:936
if($inWords) echo htmlspecialcharsbx(Number2Word_Rus(roundEx($totalVatSum $params['CURRENCY']
Определения template.php:799
$method
Определения index.php:27