1C-Bitrix 25.700.0
Загрузка...
Поиск...
Не найдено
ChangeBlockChatBot.php
См. документацию.
1<?php
2declare(strict_types=1);
3
5
6use Bitrix\AI\Chatbot\Dto\MessageDto;
7use Bitrix\AI\Chatbot\Message\DefaultMessage;
8use Bitrix\AI\Chatbot\Message\Message;
9use Bitrix\AI\Chatbot\Message\SystemMessage;
14
16{
17 protected const MODULE_ID = 'landing';
18 protected const BOT_CODE = 'site_with_ai_change_block';
19
20 public function onChatStart(int $chatId, array $parameters = []): void
21 {
22 $this->sendAnswer($chatId, new DefaultMessage(Loc::getMessage('LANDING_CHATBOT_BLOCKS_WELCOME')));
23 $this->stopWriting($chatId, false);
24 }
25
33 public function onMessageAdd(MessageDto $message, ?array $command = null): void
34 {
35 $chatId = $message->chatId;
36
37 if (is_array($command))
38 {
39 $commandName = is_string($command[0]) ? $command[0] : null;
40 $commandParams = is_array($command[1]) ? $command[1] : [];
41
42 if ($commandName === ChatBotCommands::restartGeneration->value)
43 {
44 $this->handleRestartGenerationCommand($message, $commandParams);
45 }
46
47 if ($commandName === ChatBotCommands::startOver->value)
48 {
49 $messageDto = new ChatBotMessageDto($chatId);
50 $this->sendSelectBlockSuccessMessage($messageDto);
51 }
52
53 return;
54 }
55
56 $this->startWriting($chatId);
57 }
58
59 private function handleRestartGenerationCommand(MessageDto $message, array $params = []): void
60 {
61 $chatId = $message->chatId;
62 if ($chatId <= 0)
63 {
64 return;
65 }
66
67 $generationId = $params['generationId'] ?? 0;
68 if ($generationId <= 0)
69 {
70 return;
71 }
72
73 $generation = new Generation();
74 if ($generation->initById($generationId))
75 {
76 $generation->clearErrors()->execute();
77
78 $this->sendAnswer(
79 $chatId,
80 new DefaultMessage(Loc::getMessage('LANDING_CHATBOT_BLOCKS_GENERATION_RESTART')),
81 );
82 }
83
84 $this->stopWriting($chatId, false);
85 }
86
88 {
89 $chatId = $message->chatId;
90 if ($chatId <= 0)
91 {
92 return;
93 }
94
95 $messages = $this->getMessages($chatId, 1);
96 $prevMessage = array_shift($messages);
97 $startMessage = Loc::getMessage('LANDING_CHATBOT_BLOCKS_WELCOME');
98 if (
99 !$prevMessage
100 || $prevMessage->content !== $startMessage
101 )
102 {
103 $this->sendAnswer($chatId, new DefaultMessage($startMessage));
104 }
105 }
106
108 {
109 $chatId = $message->chatId;
110 if ($chatId <= 0)
111 {
112 return;
113 }
114
115 $this->sendAnswer(
116 $chatId,
117 new DefaultMessage(Loc::getMessage('LANDING_CHATBOT_BLOCKS_NEED_SELECT_BLOCK_MESSAGE'))
118 );
119 $this->stopWriting($chatId, false);
120 }
121
123 {
124 $chatId = $message->chatId;
125 if ($chatId <= 0)
126 {
127 return;
128 }
129
130 $this->sendAnswer(
131 $chatId,
132 new DefaultMessage(Loc::getMessage('LANDING_CHATBOT_BLOCKS_SELECT_BLOCK_SUCCESS'))
133 );
134 $this->stopWriting($chatId);
135 }
136
138 {
139 $chatId = $message->chatId;
140 if ($chatId <= 0)
141 {
142 return;
143 }
144
145 $this->sendAnswer($chatId,
146 new DefaultMessage(Loc::getMessage('LANDING_CHATBOT_BLOCKS_SELECT_BLOCK_WRONG')));
147 $this->stopWriting($chatId, false);
148 }
149
151 {
152 $chatId = $message->chatId;
153 if ($chatId <= 0)
154 {
155 return;
156 }
157
158 $this->sendAnswer($chatId, $this->getFinishGenerationMessage());
159 $this->stopWriting($chatId);
160 }
161
166 {
167 $errorText = $message->params['errorText'] ?? '';
168 $answer = new SystemMessage($errorText);
169
170 $answer->addButton(
171 Loc::getMessage('LANDING_CHATBOT_BLOCKS_RETRY_GENERATION_BUTTON'),
172 Loc::getMessage('LANDING_CHATBOT_BLOCKS_RETRY_GENERATION_BUTTON'),
173 ChatBotCommands::restartGeneration->value,
174 [
175 'generationId' => $message->generationId ?? null,
176 ],
177 );
178
179 return $answer;
180 }
181
186 {
187 $answer = new SystemMessage(Loc::getMessage('LANDING_CHATBOT_BLOCKS_ERROR_RESTRICTED_REQUEST'));
188 $answer->addButton(
189 Loc::getMessage('LANDING_CHATBOT_BLOCKS_START_OVER_BUTTON'),
190 Loc::getMessage('LANDING_CHATBOT_BLOCKS_START_OVER_BUTTON'),
192 [
193 'generationId' => $message->generationId ?? null,
194 ],
195 );
196
197 return $answer;
198 }
199
204 {
205 $answer = new SystemMessage(Loc::getMessage('LANDING_CHATBOT_BLOCKS_ERROR_VENDOR'));
206 $answer->addButton(
207 Loc::getMessage('LANDING_CHATBOT_BLOCKS_RETRY_GENERATION_BUTTON'),
208 Loc::getMessage('LANDING_CHATBOT_BLOCKS_RETRY_GENERATION_BUTTON'),
209 ChatBotCommands::restartGeneration->value,
210 [
211 'generationId' => $message->generationId ?? null,
212 ],
213 );
214
215 return $answer;
216 }
217
222 {
223 $answer = new SystemMessage(Loc::getMessage('LANDING_CHATBOT_BLOCKS_ERROR_B24'));
224 $answer->addButton(
225 Loc::getMessage('LANDING_CHATBOT_BLOCKS_RETRY_GENERATION_BUTTON'),
226 Loc::getMessage('LANDING_CHATBOT_BLOCKS_RETRY_GENERATION_BUTTON'),
227 ChatBotCommands::restartGeneration->value,
228 [
229 'generationId' => $message->generationId ?? null,
230 ],
231 );
232
233 return $answer;
234 }
235
239 protected function getStartGenerationMessage(): Message
240 {
241 return new DefaultMessage(Loc::getMessage('LANDING_CHATBOT_BLOCKS_GENERATION_START'));
242 }
243
248 {
249 return new DefaultMessage(Loc::getMessage('LANDING_CHATBOT_BLOCKS_GENERATION_FINISH'));
250 }
251}
onMessageAdd(MessageDto $message, ?array $command=null)
Определения ChangeBlockChatBot.php:33
onChatStart(int $chatId, array $parameters=[])
Определения ChangeBlockChatBot.php:20
sendWelcomeMessage(ChatBotMessageDto $message)
Определения ChangeBlockChatBot.php:87
sendGenerationEndMessage(ChatBotMessageDto $message)
Определения ChangeBlockChatBot.php:150
getB24ErrorMessage(ChatBotMessageDto $message)
Определения ChangeBlockChatBot.php:221
sendNeedSelectBlockMessage(ChatBotMessageDto $message)
Определения ChangeBlockChatBot.php:107
getQuotaExceededMessage(ChatBotMessageDto $message)
Определения ChangeBlockChatBot.php:165
sendSelectBlockSuccessMessage(ChatBotMessageDto $message)
Определения ChangeBlockChatBot.php:122
sendSelectBlockWrongMessage(ChatBotMessageDto $message)
Определения ChangeBlockChatBot.php:137
getVendorErrorMessage(ChatBotMessageDto $message)
Определения ChangeBlockChatBot.php:203
getRestrictedRequestMessage(ChatBotMessageDto $message)
Определения ChangeBlockChatBot.php:185
</td ></tr ></table ></td ></tr >< tr >< td class="bx-popup-label bx-width30"><?=GetMessage("PAGE_NEW_TAGS")?> array( $site)
Определения file_new.php:804
$message
Определения payment.php:8
$messages
Определения template.php:8
if($inWords) echo htmlspecialcharsbx(Number2Word_Rus(roundEx($totalVatSum $params['CURRENCY']
Определения template.php:799