├── LICENSE
├── README.md
├── media
├── HelperReg.png
├── chatBotAction.jpg
└── chatBotHello.png
├── releases
├── 1.5
│ └── GreenAPI_ChatBot.epf
└── 1.6
│ └── GreenAPI_ChatBot.epf
└── src
├── ConfigDumpInfo.xml
├── Configuration.xml
├── DataProcessors
├── GreenAPI_ChatBot.xml
├── GreenAPI_ChatBot
│ ├── Ext
│ │ └── ObjectModule.bsl
│ ├── Forms
│ │ ├── ПомощникПодключения.xml
│ │ ├── ПомощникПодключения
│ │ │ └── Ext
│ │ │ │ ├── Form.xml
│ │ │ │ └── Form
│ │ │ │ └── Module.bsl
│ │ ├── ЧатБот.xml
│ │ └── ЧатБот
│ │ │ └── Ext
│ │ │ ├── Form.xml
│ │ │ └── Form
│ │ │ └── Module.bsl
│ └── Templates
│ │ ├── QRМакет.xml
│ │ ├── QRМакет
│ │ └── Ext
│ │ │ └── Template.xml
│ │ ├── ВыборАккаунта.xml
│ │ ├── ВыборАккаунта
│ │ └── Ext
│ │ │ └── Template.bin
│ │ ├── ДанныеАккаунта.xml
│ │ ├── ДанныеАккаунта
│ │ └── Ext
│ │ │ └── Template.bin
│ │ ├── ИконкаWhatsApp.xml
│ │ ├── ИконкаWhatsApp
│ │ └── Ext
│ │ │ └── Template.bin
│ │ ├── ИконкаФиниш.xml
│ │ ├── ИконкаФиниш
│ │ └── Ext
│ │ │ └── Template.bin
│ │ ├── СканQR.xml
│ │ └── СканQR
│ │ └── Ext
│ │ └── Template.bin
└── Обработка1.xml
├── Ext
└── HomePageWorkArea.xml
└── Languages
└── Русский.xml
/LICENSE:
--------------------------------------------------------------------------------
1 | MIT License
2 |
3 | Copyright (c) 2020 Green API
4 |
5 | Permission is hereby granted, free of charge, to any person obtaining a copy
6 | of this software and associated documentation files (the "Software"), to deal
7 | in the Software without restriction, including without limitation the rights
8 | to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
9 | copies of the Software, and to permit persons to whom the Software is
10 | furnished to do so, subject to the following conditions:
11 |
12 | The above copyright notice and this permission notice shall be included in all
13 | copies or substantial portions of the Software.
14 |
15 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
16 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
17 | FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
18 | AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
19 | LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
20 | OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
21 | SOFTWARE.
22 |
--------------------------------------------------------------------------------
/README.md:
--------------------------------------------------------------------------------
1 | # Внешняя демо обработка с чат-ботом для WhatsApp
2 |
3 | ## Для чего нужна обработка
4 |
5 | Обработа - демо пример чат-бота для WhatsApp на базе 1С, который может быть взят за основу для написания своих чат-ботов. Интеграция сделана с использованием http сервиса, предоставляемого [Green API](https://green-api.com/).
6 |
7 | ## Что потребуется, чтобы запустить бота
8 |
9 | * Платформа 1С не ниже версии 8.3.10
10 | * Два номера с учетками WhatsApp. Номера нужны, чтобы отправлять сообщения как бы "самому себе". При этом первый номер будет тот, с которого мы будем писать команды чат-боту (далее ``клиентский номер``), а второй номер - с которого будет отвечать сам бот (далее ``номер бота``). Отправлять с одного номера не получится.
11 | * Аккаунт в сервисе [Green API](https://green-api.com/). Подойдет бесплатный тариф "Разработчик".
12 |
13 | ## Как запустить бота:
14 |
15 | 1. Устанавливаем на телефон два приложения - обычный [WhatsApp](https://play.google.com/store/apps/details?id=com.whatsapp) и [Whatsapp Business](https://play.google.com/store/apps/details?id=com.whatsapp.w4b).
16 |
17 | 2. Один номер телефона регистрируем в WhatsApp, а другой в Whatsapp Business.
18 |
19 | 3. Скачиваем [обработку чат-бота](https://github.com/green-api/whatsapp-chatbot-1c-example/releases/download/1.0/GreenAPI_ChatBot.epf),
20 |
21 | 4. Открываем обработку в режиме 1С Предприятие, переходим на вкладку ``Настройки`` и нажимаем на ``Помощник подключения``. Далее следуем инструкциям помощника. В помощнике будет предложено сканировать QR код. Сканируем его для ``номера бота``, с которого чат-бот будет писать на наш ``клиентский номер``.
22 |
23 | 
24 |
25 | 5. Переходим на вкладку ``Чат-бот`` и нажимаем кнопку ``Запустить бота``.
26 | 6. Открываем WhatsApp, на котором зарегистрирован ``клиентский номер`` и пишем любое сообщение на ``номер бота``. Бот отвечает приветственным сообщением:
27 |
28 | 
29 |
30 | 7. Бот запущен. Теперь мы можем с ним общаться. Например, если написать в ответ цифру 1, то получим список номенклатуры:
31 |
32 | 
33 |
34 | ## Особенности работы обработки
35 |
36 | Чат-бот работает в режиме ожидания получения сообщений - 20 сек.
37 | Далее переходит в режим бездействия - 10 сек.
38 | В реальных условиях режим бездействия можно сократить, чтобы работа чат-бота не прерывалась.
39 | Рекомендуется перенести код в фоновое задание на сервер.
40 |
41 | ## Важно
42 |
43 | > На время работы чат-бота ваш телефон должен быть заряжен и подключен к Интернет. Если телефон выключиться, то работа чат-бота прекратится.
44 |
45 | ## Какие сценарии поддерживает бот
46 |
47 | Сообщения и ответы бота можно настроить в коде обработки под себя. С помощью бота можно запрашивать у клиента информацию по шагам, уточняя свой вопрос с каждым новым ответом клиента.
48 |
49 | Также поддерживаются глобальные команды. Например, если написать боту текстом слово ``Выход``, то диалог сбросится и начнется с самого начала. Эту функцию можно использовать для реализации команд типа ``Отписаться``, ``Стоп`` и т.п.
50 |
51 | ## Как настроить свои сценарии
52 |
53 | 1. Открываем обработку в режиме конфигуратора.
54 | 2. В модуле объекта смотрим на функцию ``ПодготовитьШаблоныСообщений()``. Эта функция содержит все сообщения, которые пишет сам бот в ответ на сообщения пользователя.
55 | 3. Чтобы добавить новый ответ внутри этой функции вызываем метод ``НовыйОтветБота`` по аналогии как это сделано в демо-примере:
56 |
57 | ``` bsl
58 | Функция ПодготовитьШаблоныСообщений(КоллекцияШаблонов, КоллекцияГлобальныхШаблонов)
59 |
60 | ОтветПоНоменклатуре = НовыйОтветБота(НовоеСообщение, "1", "Выводим
61 | список товаров...", "Подключаемый_ВывестиНоменклатуру");
62 |
63 | КонецФункции
64 |
65 | ```
66 | Если нужно, то прописываем обработчик, который срабатывает после того, как клиент ответил боту верной командой. Обработчик должен быть в модуле объекта и иметь два входных параметра, например как в демо:
67 |
68 | ```bsl
69 | Процедура Подключаемый_ВывестиНоменклатуру(Чат, Шаблон)
70 |
71 | ОтправитьСообщениеВЧат(Чат.ИдЧата,
72 | "Арт: 123456, Чайник Электролюкс; цена: 1 200 руб; на складе: 12 шт,
73 | |Арт: 12223, Холодильник Хайер; цена: 45 000 руб; на складе: 4 шт
74 | |Арт: 54656, Телевизор Самсунг; цена: 110 000 руб; на складе: 2 шт");
75 |
76 | КонецПроцедуры
77 |
78 | ```
79 |
80 | Чтобы сделать вложенный ответ, используем тот же метод ``НовыйОтветБота()``, но только в качестве первого параметра передаем результат ``родительского`` метода, например как в демо:
81 |
82 | ```bsl
83 | // Родительский ответ
84 | ОтветПоНоменклатуре = НовыйОтветБота(НовоеСообщение, "1", "Выводим
85 | список товаров...", "Подключаемый_ВывестиНоменклатуру");
86 |
87 | // Вложенный ответ
88 | ОтветМенеджер = НовыйОтветБота(ОтветПоНоменклатуре,, "Хотите связаться с менеджером (Да/Нет)?");
89 |
90 | ```
91 |
92 | Чтобы прописать глобальную команду, используем метод ``НовыйГлобальныйОтветБота()`` и первым параметром в него передаем переменную ``КоллекцияГлобальныхШаблонов``. Пример:
93 |
94 | ```bsl
95 | Функция ПодготовитьШаблоныСообщений(КоллекцияШаблонов, КоллекцияГлобальныхШаблонов)
96 |
97 | НовыйГлобальныйОтветБота(КоллекцияГлобальныхШаблонов, "Выход", "Работа с чат ботом завершается...", "Подключаемый_ВыключитьЧатБот");
98 |
99 | КонецФункции
100 | ```
101 |
--------------------------------------------------------------------------------
/media/HelperReg.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/green-api/whatsapp-chatbot-1c/b2de0f5a99febbfad7d3d1ded210b140e6d166f7/media/HelperReg.png
--------------------------------------------------------------------------------
/media/chatBotAction.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/green-api/whatsapp-chatbot-1c/b2de0f5a99febbfad7d3d1ded210b140e6d166f7/media/chatBotAction.jpg
--------------------------------------------------------------------------------
/media/chatBotHello.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/green-api/whatsapp-chatbot-1c/b2de0f5a99febbfad7d3d1ded210b140e6d166f7/media/chatBotHello.png
--------------------------------------------------------------------------------
/releases/1.5/GreenAPI_ChatBot.epf:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/green-api/whatsapp-chatbot-1c/b2de0f5a99febbfad7d3d1ded210b140e6d166f7/releases/1.5/GreenAPI_ChatBot.epf
--------------------------------------------------------------------------------
/releases/1.6/GreenAPI_ChatBot.epf:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/green-api/whatsapp-chatbot-1c/b2de0f5a99febbfad7d3d1ded210b140e6d166f7/releases/1.6/GreenAPI_ChatBot.epf
--------------------------------------------------------------------------------
/src/ConfigDumpInfo.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
10 |
11 |
12 |
13 |
14 |
15 |
16 |
17 |
18 |
19 |
20 |
21 |
22 |
23 |
24 |
25 |
26 |
27 |
28 |
29 |
30 |
31 |
32 |
33 |
34 |
35 |
36 |
37 |
38 |
39 |
40 |
41 |
42 |
43 |
--------------------------------------------------------------------------------
/src/Configuration.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 | 9cd510cd-abfc-11d4-9434-004095e12fc7
7 | 53c341e0-4783-470a-8069-53c443833285
8 |
9 |
10 | 9fcd25a0-4822-11d4-9414-008048da11f9
11 | 432c9740-504f-4cd3-99cc-6565c7e7d785
12 |
13 |
14 | e3687481-0a87-462c-a166-9f34594f9bba
15 | 912c0f18-2c37-4068-a50f-d914d3b47e29
16 |
17 |
18 | 9de14907-ec23-4a07-96f0-85521cb6b53b
19 | 5653c70a-cd59-4be6-913a-0271780beeec
20 |
21 |
22 | 51f2d5d8-ea4d-4064-8892-82951750031e
23 | 3ada2a08-c999-4477-94fd-28c7c912d3cd
24 |
25 |
26 | e68182ea-4237-4383-967f-90c1e3370bc7
27 | 231cae8f-0b19-402a-bd03-d20b241f1d82
28 |
29 |
30 | fb282519-d103-4dd3-bc12-cb271d631dfc
31 | d56aeef8-6718-46c5-af87-efd5730bd9d1
32 |
33 |
34 |
35 | Конфигурация
36 |
37 |
38 |
39 | Version8_3_18
40 | ManagedApplication
41 |
42 | PlatformApplication
43 |
44 | Russian
45 |
46 |
47 |
48 |
49 | false
50 | false
51 | false
52 |
53 |
54 |
55 |
56 |
57 |
58 |
59 |
60 |
61 |
62 |
63 |
64 |
65 |
66 |
67 |
68 |
69 |
70 |
71 | Biometrics
72 | true
73 |
74 |
75 | Location
76 | false
77 |
78 |
79 | BackgroundLocation
80 | false
81 |
82 |
83 | BluetoothPrinters
84 | false
85 |
86 |
87 | WiFiPrinters
88 | false
89 |
90 |
91 | Contacts
92 | false
93 |
94 |
95 | Calendars
96 | false
97 |
98 |
99 | PushNotifications
100 | false
101 |
102 |
103 | LocalNotifications
104 | false
105 |
106 |
107 | InAppPurchases
108 | false
109 |
110 |
111 | PersonalComputerFileExchange
112 | false
113 |
114 |
115 | Ads
116 | false
117 |
118 |
119 | NumberDialing
120 | false
121 |
122 |
123 | CallProcessing
124 | false
125 |
126 |
127 | CallLog
128 | false
129 |
130 |
131 | AutoSendSMS
132 | false
133 |
134 |
135 | ReceiveSMS
136 | false
137 |
138 |
139 | SMSLog
140 | false
141 |
142 |
143 | Camera
144 | false
145 |
146 |
147 | Microphone
148 | false
149 |
150 |
151 | MusicLibrary
152 | false
153 |
154 |
155 | PictureAndVideoLibraries
156 | false
157 |
158 |
159 | AudioPlaybackAndVibration
160 | false
161 |
162 |
163 | BackgroundAudioPlaybackAndVibration
164 | false
165 |
166 |
167 | InstallPackages
168 | false
169 |
170 |
171 | OSBackup
172 | true
173 |
174 |
175 | ApplicationUsageStatistics
176 | false
177 |
178 |
179 | BarcodeScanning
180 | false
181 |
182 |
183 | AllFilesAccess
184 | false
185 |
186 |
187 |
188 |
189 | Normal
190 |
191 |
192 | Language.Русский
193 |
194 |
195 |
196 |
197 |
198 | Managed
199 | NotAutoFree
200 | DontUse
201 | DontUse
202 | Taxi
203 | Version8_3_10
204 |
205 |
206 |
207 | Русский
208 | GreenAPI_ChatBot
209 | Обработка1
210 |
211 |
212 |
--------------------------------------------------------------------------------
/src/DataProcessors/GreenAPI_ChatBot.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 | 9f1cf8d5-2000-4162-8bb2-686a751f89fa
7 | 633dd1a8-a3b2-4130-b67e-667133a06f3f
8 |
9 |
10 | d1e436cf-4921-4623-82af-448a7833ba8b
11 | a3ee83ab-7625-465f-b2ac-a7472404d08d
12 |
13 |
14 |
15 | GreenAPI_ChatBot
16 |
17 |
18 | ru
19 | Green API Chat bot
20 |
21 |
22 |
23 | true
24 | DataProcessor.GreenAPI_ChatBot.Form.ЧатБот
25 |
26 | false
27 |
28 |
29 |
30 |
31 |
32 |
33 | IdInstance
34 |
35 |
36 | ru
37 | ID Instance
38 |
39 |
40 |
41 |
42 | xs:string
43 |
44 | 0
45 | Variable
46 |
47 |
48 | false
49 |
50 |
51 |
52 | false
53 |
54 | false
55 | false
56 |
57 |
58 | ShowError
59 | Items
60 |
61 |
62 | Auto
63 | Auto
64 |
65 |
66 | Auto
67 |
68 |
69 |
70 |
71 | ApiToken
72 |
73 |
74 | ru
75 | API Token
76 |
77 |
78 |
79 |
80 | xs:string
81 |
82 | 0
83 | Variable
84 |
85 |
86 | false
87 |
88 |
89 |
90 | false
91 |
92 | false
93 | false
94 |
95 |
96 | ShowError
97 | Items
98 |
99 |
100 | Auto
101 | Auto
102 |
103 |
104 | Auto
105 |
106 |
107 |
108 |
109 | webhookUrl
110 |
111 |
112 | ru
113 | Webhook url
114 |
115 |
116 |
117 |
118 | xs:string
119 |
120 | 0
121 | Variable
122 |
123 |
124 | false
125 |
126 |
127 |
128 | false
129 |
130 | false
131 | false
132 |
133 |
134 | DontCheck
135 | Items
136 |
137 |
138 | Auto
139 | Auto
140 |
141 |
142 | Auto
143 |
144 |
145 |
146 |
147 | ИнтервалОтправкиСообщений
148 |
149 |
150 | ru
151 | Интервал отправки сообщений
152 |
153 |
154 |
155 |
156 | xs:decimal
157 |
158 | 10
159 | 0
160 | Any
161 |
162 |
163 | false
164 |
165 |
166 |
167 | false
168 |
169 | false
170 | false
171 |
172 |
173 | DontCheck
174 | Items
175 |
176 |
177 | Auto
178 | Auto
179 |
180 |
181 | Auto
182 |
183 |
184 |
185 |
186 | ОтмечатьВходящиеСообщенияПрочитанными
187 |
188 |
189 | ru
190 | Отмечать входящие сообщения прочитанными
191 |
192 |
193 |
194 |
195 | xs:boolean
196 |
197 | false
198 |
199 |
200 |
201 | false
202 |
203 | false
204 | false
205 |
206 |
207 | DontCheck
208 | Items
209 |
210 |
211 | Auto
212 | Auto
213 |
214 |
215 | Auto
216 |
217 |
218 |
219 |
220 | ПолучатьВходящиеСообщенияИФайлы
221 |
222 |
223 | ru
224 | Получать входящие сообщения и файлы
225 |
226 |
227 |
228 |
229 | xs:boolean
230 |
231 | false
232 |
233 |
234 |
235 | false
236 |
237 | false
238 | false
239 |
240 |
241 | DontCheck
242 | Items
243 |
244 |
245 | Auto
246 | Auto
247 |
248 |
249 | Auto
250 |
251 |
252 |
253 |
254 | ПолучатьВходящиеУведомления
255 |
256 |
257 | ru
258 | Получать входящие уведомления
259 |
260 |
261 |
262 |
263 | xs:boolean
264 |
265 | false
266 |
267 |
268 |
269 | false
270 |
271 | false
272 | false
273 |
274 |
275 | DontCheck
276 | Items
277 |
278 |
279 | Auto
280 | Auto
281 |
282 |
283 | Auto
284 |
285 |
286 |
287 |
288 | ПолучатьСтатусыОтправленныхСообщений
289 |
290 |
291 | ru
292 | Получать статусы отправленных сообщений
293 |
294 |
295 |
296 |
297 | xs:boolean
298 |
299 | false
300 |
301 |
302 |
303 | false
304 |
305 | false
306 | false
307 |
308 |
309 | DontCheck
310 | Items
311 |
312 |
313 | Auto
314 | Auto
315 |
316 |
317 | Auto
318 |
319 |
320 |
321 |
322 | ПолучатьУведомленииОСостоянииТелефона
323 |
324 |
325 | ru
326 | Получать уведомлении о состоянии телефона
327 |
328 |
329 |
330 |
331 | xs:boolean
332 |
333 | false
334 |
335 |
336 |
337 | false
338 |
339 | false
340 | false
341 |
342 |
343 | DontCheck
344 | Items
345 |
346 |
347 | Auto
348 | Auto
349 |
350 |
351 | Auto
352 |
353 |
354 |
355 |
356 | ПолучатьУведомленияОСостоянииАккаунта
357 |
358 |
359 | ru
360 | Получать уведомления о состоянии аккаунта
361 |
362 |
363 |
364 |
365 | xs:boolean
366 |
367 | false
368 |
369 |
370 |
371 | false
372 |
373 | false
374 | false
375 |
376 |
377 | DontCheck
378 | Items
379 |
380 |
381 | Auto
382 | Auto
383 |
384 |
385 | Auto
386 |
387 |
388 |
389 |
390 | apiUrl
391 |
392 |
393 | ru
394 | API URL
395 |
396 |
397 |
398 |
399 | xs:string
400 |
401 | 0
402 | Variable
403 |
404 |
405 | false
406 |
407 |
408 |
409 | false
410 |
411 | false
412 | false
413 |
414 |
415 | ShowError
416 | Items
417 |
418 |
419 | Auto
420 | Auto
421 |
422 |
423 | Auto
424 |
425 |
426 |
427 |
428 | mediaUrl
429 |
430 |
431 | ru
432 | Media URL
433 |
434 |
435 |
436 |
437 | xs:string
438 |
439 | 0
440 | Variable
441 |
442 |
443 | false
444 |
445 |
446 |
447 | false
448 |
449 | false
450 | false
451 |
452 |
453 | ShowError
454 | Items
455 |
456 |
457 | Auto
458 | Auto
459 |
460 |
461 | Auto
462 |
463 |
464 |
465 |
466 |
467 | edaf35dc-d681-442d-91b2-273e378edd46
468 | 4d68946c-cf45-4027-8af8-393530391a61
469 |
470 |
471 | ae9abd2d-41f8-4f72-a5a3-0d18adbc5e67
472 | ee4b1ae7-f61a-4a26-9f78-65fff4dea77c
473 |
474 |
475 |
476 | ЧатыКлиентов
477 |
478 |
479 | ru
480 | Чаты клиентов
481 |
482 |
483 |
484 |
485 | DontCheck
486 |
487 |
488 |
489 |
490 | ИдЧата
491 |
492 |
493 | ru
494 | Ид чата
495 |
496 |
497 |
498 |
499 | xs:string
500 |
501 | 0
502 | Variable
503 |
504 |
505 | false
506 |
507 |
508 |
509 | false
510 |
511 | false
512 | false
513 |
514 |
515 | false
516 |
517 | DontCheck
518 | Items
519 |
520 |
521 | Auto
522 | Auto
523 |
524 |
525 | Auto
526 |
527 |
528 |
529 |
530 | ТекущийИндексШаблона
531 |
532 |
533 | ru
534 | Текущий индекс шаблона
535 |
536 |
537 |
538 |
539 | xs:string
540 |
541 | 0
542 | Variable
543 |
544 |
545 | false
546 |
547 |
548 |
549 | false
550 |
551 | false
552 | false
553 |
554 |
555 | false
556 |
557 | DontCheck
558 | Items
559 |
560 |
561 | Auto
562 | Auto
563 |
564 |
565 | Auto
566 |
567 |
568 |
569 |
570 |
571 |
572 | QRМакет
573 | ИконкаWhatsApp
574 | ВыборАккаунта
575 | СканQR
576 | ДанныеАккаунта
577 | ИконкаФиниш
578 |
579 |
580 |
--------------------------------------------------------------------------------
/src/DataProcessors/GreenAPI_ChatBot/Forms/ПомощникПодключения.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
22 |
--------------------------------------------------------------------------------
/src/DataProcessors/GreenAPI_ChatBot/Forms/ПомощникПодключения/Ext/Form.xml:
--------------------------------------------------------------------------------
1 |
2 |
--------------------------------------------------------------------------------
/src/DataProcessors/GreenAPI_ChatBot/Forms/ПомощникПодключения/Ext/Form/Module.bsl:
--------------------------------------------------------------------------------
1 |
2 | #Область ОбработчикиСобытийФормы
3 |
4 | &НаСервере
5 | Процедура ПриСозданииНаСервере(Отказ, СтандартнаяОбработка)
6 | КартинкаWhatsApp = ПолучитьКартинкуОбработки("ИконкаWhatsApp");
7 | КартинкаВыборАккаунта = ПолучитьКартинкуОбработки("ВыборАккаунта");
8 | КартинкаСканКода = ПолучитьКартинкуОбработки("СканQR");
9 | КартинкаДанныеАккаунта = ПолучитьКартинкуОбработки("ДанныеАккаунта");
10 | ИконкаФиниш = ПолучитьКартинкуОбработки("ИконкаФиниш");
11 |
12 | ЭтотОбъект.Заголовок = ОбработкаОбъект().ВерсияОбработки();
13 |
14 | Если Параметры.Свойство("IdInstance") Тогда
15 | Объект.IdInstance = Параметры.IdInstance;
16 | КонецЕсли;
17 |
18 | Если Параметры.Свойство("ApiToken") Тогда
19 | Объект.ApiToken = Параметры.ApiToken;
20 | КонецЕсли;
21 |
22 | Если Параметры.Свойство("apiUrl") Тогда
23 | Объект.apiUrl = Параметры.apiUrl;
24 | КонецЕсли;
25 |
26 | Если Параметры.Свойство("mediaUrl") Тогда
27 | Объект.mediaUrl = Параметры.mediaUrl;
28 | КонецЕсли;
29 |
30 | КонецПроцедуры
31 |
32 | &НаКлиенте
33 | Процедура ПриОткрытии(Отказ)
34 |
35 | // Устанавливаем текущую таблицу переходов.
36 | ТаблицаПереходовПоСценарию1();
37 |
38 | // Позиционируемся на первом шаге помощника.
39 | УстановитьПорядковыйНомерПерехода(1);
40 |
41 | КонецПроцедуры
42 |
43 | &НаКлиенте
44 | Процедура ПередЗакрытием(Отказ, ЗавершениеРаботы, ТекстПредупреждения, СтандартнаяОбработка)
45 |
46 | ТекстПредупреждения = НСтр("ru = 'Закрыть помощник?'");
47 | ПоказатьПодтверждениеЗакрытияПроизвольнойФормы(
48 | ЭтотОбъект, Отказ, ЗавершениеРаботы, ТекстПредупреждения, "ЗакрытьФормуБезусловно");
49 |
50 | КонецПроцедуры
51 |
52 | #КонецОбласти
53 |
54 | #Область ОбработчикиКомандФормы
55 |
56 | &НаКлиенте
57 | Процедура КомандаДалее(Команда)
58 |
59 | ИзменитьПорядковыйНомерПерехода(+1);
60 |
61 | КонецПроцедуры
62 |
63 | &НаКлиенте
64 | Процедура КомандаНазад(Команда)
65 |
66 | ИзменитьПорядковыйНомерПерехода(-1);
67 |
68 | КонецПроцедуры
69 |
70 | &НаКлиенте
71 | Процедура КомандаГотово(Команда)
72 |
73 | ЗакрытьФормуБезусловно = Истина;
74 |
75 | ОповеститьОВыборе(Новый Структура("ИмяФормы,IdInstance,ApiToken,apiUrl,mediaUrl", "ПомощникПодключения", Объект.IdInstance, Объект.ApiToken, Объект.apiUrl, Объект.mediaUrl));
76 |
77 | КонецПроцедуры
78 |
79 | &НаКлиенте
80 | Процедура КомандаОтмена(Команда)
81 |
82 | Закрыть();
83 |
84 | КонецПроцедуры
85 |
86 | #КонецОбласти
87 |
88 | #Область СлужебныеПроцедурыИФункции
89 |
90 | ////////////////////////////////////////////////////////////////////////////////
91 | // Поставляемая часть
92 |
93 | &НаКлиенте
94 | Процедура ИзменитьПорядковыйНомерПерехода(Итератор)
95 |
96 | ОчиститьСообщения();
97 |
98 | УстановитьПорядковыйНомерПерехода(ПорядковыйНомерПерехода + Итератор);
99 |
100 | КонецПроцедуры
101 |
102 | &НаКлиенте
103 | Процедура УстановитьПорядковыйНомерПерехода(Знач Значение)
104 |
105 | ЭтоПереходДалее = (Значение > ПорядковыйНомерПерехода);
106 |
107 | ПорядковыйНомерПерехода = Значение;
108 |
109 | Если ПорядковыйНомерПерехода < 0 Тогда
110 |
111 | ПорядковыйНомерПерехода = 0;
112 |
113 | КонецЕсли;
114 |
115 | ПорядковыйНомерПереходаПриИзменении(ЭтоПереходДалее);
116 |
117 | КонецПроцедуры
118 |
119 | &НаКлиенте
120 | Процедура ПорядковыйНомерПереходаПриИзменении(Знач ЭтоПереходДалее)
121 |
122 | // Выполняем обработчики событий перехода.
123 | ВыполнитьОбработчикиСобытийПерехода(ЭтоПереходДалее);
124 |
125 | // Устанавливаем отображение страниц.
126 | СтрокиПереходаТекущие = ТаблицаПереходов.НайтиСтроки(Новый Структура("ПорядковыйНомерПерехода", ПорядковыйНомерПерехода));
127 |
128 | Если СтрокиПереходаТекущие.Количество() = 0 Тогда
129 | ВызватьИсключение НСтр("ru = 'Не определена страница для отображения.'");
130 | КонецЕсли;
131 |
132 | СтрокаПереходаТекущая = СтрокиПереходаТекущие[0];
133 |
134 | Элементы.ПанельОсновная.ТекущаяСтраница = Элементы[СтрокаПереходаТекущая.ИмяОсновнойСтраницы];
135 | Элементы.ПанельНавигации.ТекущаяСтраница = Элементы[СтрокаПереходаТекущая.ИмяСтраницыНавигации];
136 |
137 | Если Не ПустаяСтрока(СтрокаПереходаТекущая.ИмяСтраницыДекорации) Тогда
138 |
139 | Элементы.ПанельДекорации.ТекущаяСтраница = Элементы[СтрокаПереходаТекущая.ИмяСтраницыДекорации];
140 |
141 | КонецЕсли;
142 |
143 | // Устанавливаем текущую кнопку по умолчанию.
144 | КнопкаДалее = ПолучитьКнопкуФормыПоИмениКоманды(Элементы.ПанельНавигации.ТекущаяСтраница, "КомандаДалее");
145 |
146 | Если КнопкаДалее <> Неопределено Тогда
147 |
148 | КнопкаДалее.КнопкаПоУмолчанию = Истина;
149 |
150 | Иначе
151 |
152 | КнопкаГотово = ПолучитьКнопкуФормыПоИмениКоманды(Элементы.ПанельНавигации.ТекущаяСтраница, "КомандаГотово");
153 |
154 | Если КнопкаГотово <> Неопределено Тогда
155 |
156 | КнопкаГотово.КнопкаПоУмолчанию = Истина;
157 |
158 | КонецЕсли;
159 |
160 | КонецЕсли;
161 |
162 | Если ЭтоПереходДалее И СтрокаПереходаТекущая.ДлительнаяОперация Тогда
163 |
164 | ПодключитьОбработчикОжидания("ВыполнитьОбработчикДлительнойОперации", 0.1, Истина);
165 |
166 | КонецЕсли;
167 |
168 | КонецПроцедуры
169 |
170 | &НаКлиенте
171 | Процедура ВыполнитьОбработчикиСобытийПерехода(Знач ЭтоПереходДалее)
172 |
173 | // Обработчики событий переходов.
174 | Если ЭтоПереходДалее Тогда
175 |
176 | СтрокиПерехода = ТаблицаПереходов.НайтиСтроки(Новый Структура("ПорядковыйНомерПерехода", ПорядковыйНомерПерехода - 1));
177 |
178 | Если СтрокиПерехода.Количество() > 0 Тогда
179 |
180 | СтрокаПерехода = СтрокиПерехода[0];
181 |
182 | // Обработчик ПриПереходеДалее.
183 | Если Не ПустаяСтрока(СтрокаПерехода.ИмяОбработчикаПриПереходеДалее)
184 | И Не СтрокаПерехода.ДлительнаяОперация Тогда
185 |
186 | ИмяПроцедуры = "Подключаемый_[ИмяОбработчика](Отказ)";
187 | ИмяПроцедуры = СтрЗаменить(ИмяПроцедуры, "[ИмяОбработчика]", СтрокаПерехода.ИмяОбработчикаПриПереходеДалее);
188 |
189 | Отказ = Ложь;
190 |
191 | Результат = Вычислить(ИмяПроцедуры);
192 |
193 | Если Отказ Тогда
194 |
195 | ПорядковыйНомерПерехода = ПорядковыйНомерПерехода - 1;
196 | Возврат;
197 |
198 | КонецЕсли;
199 |
200 | КонецЕсли;
201 |
202 | КонецЕсли;
203 |
204 | Иначе
205 |
206 | СтрокиПерехода = ТаблицаПереходов.НайтиСтроки(Новый Структура("ПорядковыйНомерПерехода", ПорядковыйНомерПерехода + 1));
207 |
208 | Если СтрокиПерехода.Количество() > 0 Тогда
209 |
210 | СтрокаПерехода = СтрокиПерехода[0];
211 |
212 | // Обработчик ПриПереходеНазад.
213 | Если Не ПустаяСтрока(СтрокаПерехода.ИмяОбработчикаПриПереходеНазад)
214 | И Не СтрокаПерехода.ДлительнаяОперация Тогда
215 |
216 | ИмяПроцедуры = "Подключаемый_[ИмяОбработчика](Отказ)";
217 | ИмяПроцедуры = СтрЗаменить(ИмяПроцедуры, "[ИмяОбработчика]", СтрокаПерехода.ИмяОбработчикаПриПереходеНазад);
218 |
219 | Отказ = Ложь;
220 |
221 | Результат = Вычислить(ИмяПроцедуры);
222 |
223 | Если Отказ Тогда
224 |
225 | ПорядковыйНомерПерехода = ПорядковыйНомерПерехода + 1;
226 | Возврат;
227 |
228 | КонецЕсли;
229 |
230 | КонецЕсли;
231 |
232 | КонецЕсли;
233 |
234 | КонецЕсли;
235 |
236 | СтрокиПереходаТекущие = ТаблицаПереходов.НайтиСтроки(Новый Структура("ПорядковыйНомерПерехода", ПорядковыйНомерПерехода));
237 |
238 | Если СтрокиПереходаТекущие.Количество() = 0 Тогда
239 | ВызватьИсключение НСтр("ru = 'Не определена страница для отображения.'");
240 | КонецЕсли;
241 |
242 | СтрокаПереходаТекущая = СтрокиПереходаТекущие[0];
243 |
244 | Если СтрокаПереходаТекущая.ДлительнаяОперация И Не ЭтоПереходДалее Тогда
245 |
246 | УстановитьПорядковыйНомерПерехода(ПорядковыйНомерПерехода - 1);
247 | Возврат;
248 | КонецЕсли;
249 |
250 | // обработчик ПриОткрытии
251 | Если Не ПустаяСтрока(СтрокаПереходаТекущая.ИмяОбработчикаПриОткрытии) Тогда
252 |
253 | ИмяПроцедуры = "Подключаемый_[ИмяОбработчика](Отказ, ПропуститьСтраницу, ЭтоПереходДалее)";
254 | ИмяПроцедуры = СтрЗаменить(ИмяПроцедуры, "[ИмяОбработчика]", СтрокаПереходаТекущая.ИмяОбработчикаПриОткрытии);
255 |
256 | Отказ = Ложь;
257 | ПропуститьСтраницу = Ложь;
258 |
259 | Результат = Вычислить(ИмяПроцедуры);
260 |
261 | Если Отказ Тогда
262 |
263 | ПорядковыйНомерПерехода = ПорядковыйНомерПерехода - 1;
264 | Возврат;
265 |
266 | ИначеЕсли ПропуститьСтраницу Тогда
267 |
268 | Если ЭтоПереходДалее Тогда
269 |
270 | УстановитьПорядковыйНомерПерехода(ПорядковыйНомерПерехода + 1);
271 | Возврат;
272 |
273 | Иначе
274 |
275 | УстановитьПорядковыйНомерПерехода(ПорядковыйНомерПерехода - 1);
276 | Возврат;
277 |
278 | КонецЕсли;
279 |
280 | КонецЕсли;
281 |
282 | КонецЕсли;
283 |
284 | КонецПроцедуры
285 |
286 | &НаКлиенте
287 | Процедура ВыполнитьОбработчикДлительнойОперации()
288 |
289 | СтрокиПереходаТекущие = ТаблицаПереходов.НайтиСтроки(Новый Структура("ПорядковыйНомерПерехода", ПорядковыйНомерПерехода));
290 |
291 | Если СтрокиПереходаТекущие.Количество() = 0 Тогда
292 | ВызватьИсключение НСтр("ru = 'Не определена страница для отображения.'");
293 | КонецЕсли;
294 |
295 | СтрокаПереходаТекущая = СтрокиПереходаТекущие[0];
296 |
297 | // Обработчик ОбработкаДлительнойОперации.
298 | Если Не ПустаяСтрока(СтрокаПереходаТекущая.ИмяОбработчикаДлительнойОперации) Тогда
299 |
300 | ИмяПроцедуры = "Подключаемый_[ИмяОбработчика](Отказ, ПерейтиДалее)";
301 | ИмяПроцедуры = СтрЗаменить(ИмяПроцедуры, "[ИмяОбработчика]", СтрокаПереходаТекущая.ИмяОбработчикаДлительнойОперации);
302 |
303 | Отказ = Ложь;
304 | ПерейтиДалее = Истина;
305 |
306 | Результат = Вычислить(ИмяПроцедуры);
307 |
308 | Если Отказ Тогда
309 |
310 | ПорядковыйНомерПерехода = ПорядковыйНомерПерехода - 1;
311 | Возврат;
312 |
313 | ИначеЕсли ПерейтиДалее Тогда
314 |
315 | УстановитьПорядковыйНомерПерехода(ПорядковыйНомерПерехода + 1);
316 | Возврат;
317 |
318 | КонецЕсли;
319 |
320 | Иначе
321 |
322 | УстановитьПорядковыйНомерПерехода(ПорядковыйНомерПерехода + 1);
323 | Возврат;
324 |
325 | КонецЕсли;
326 |
327 | КонецПроцедуры
328 |
329 | &НаКлиенте
330 | Функция ПолучитьКнопкуФормыПоИмениКоманды(ЭлементФормы, ИмяКоманды)
331 |
332 | Для Каждого Элемент Из ЭлементФормы.ПодчиненныеЭлементы Цикл
333 |
334 | Если ТипЗнч(Элемент) = Тип("ГруппаФормы") Тогда
335 |
336 | ЭлементФормыПоИмениКоманды = ПолучитьКнопкуФормыПоИмениКоманды(Элемент, ИмяКоманды);
337 |
338 | Если ЭлементФормыПоИмениКоманды <> Неопределено Тогда
339 |
340 | Возврат ЭлементФормыПоИмениКоманды;
341 |
342 | КонецЕсли;
343 |
344 | ИначеЕсли ТипЗнч(Элемент) = Тип("КнопкаФормы")
345 | И СтрНайти(Элемент.ИмяКоманды, ИмяКоманды) > 0 Тогда
346 |
347 | Возврат Элемент;
348 |
349 | Иначе
350 |
351 | Продолжить;
352 |
353 | КонецЕсли;
354 |
355 | КонецЦикла;
356 |
357 | Возврат Неопределено;
358 |
359 | КонецФункции
360 |
361 | ////////////////////////////////////////////////////////////////////////////////
362 | // Переопределяемая часть - Обработчики событий переходов.
363 |
364 | // Обработчик перехода далее (на следующую страницу) при уходе со страницы помощника "СтраницаДва".
365 | //
366 | // Параметры:
367 | // Отказ - Булево - флаг отказа от выполнения перехода далее;
368 | // если в обработчике поднять этот флаг, то переход на следующую страницу выполнен не будет.
369 | //
370 | &НаКлиенте
371 | Функция Подключаемый_СтраницаДва_ПриПереходеДалее(Отказ)
372 |
373 | Если СУсловиямиОзнакомлен Тогда
374 | Сообщить(НСтр("ru = 'Выполняется обработчик ПриПереходеДалее страницы № 2'"));
375 | Иначе
376 | Сообщить(НСтр("ru = 'Необходимо сначала ознакомиться с условиями.'"));
377 | Отказ = Истина;
378 | КонецЕсли;
379 |
380 | Возврат Неопределено;
381 |
382 | КонецФункции
383 |
384 | &НаКлиенте
385 | Функция Подключаемый_СтраницаПять_ПриПереходеДалее(Отказ)
386 |
387 | Если ЗначениеЗаполнено(Объект.IdInstance) И ЗначениеЗаполнено(Объект.ApiToken) Тогда
388 |
389 | Иначе
390 | Сообщить(НСтр("ru = 'Необходимо заполнить ID Instance и API Token'"));
391 | Отказ = Истина;
392 | КонецЕсли;
393 |
394 | Возврат Неопределено;
395 |
396 | КонецФункции
397 |
398 | &НаКлиенте
399 | Функция Подключаемый_СтраницаВосемь_ПриПереходеДалее(Отказ)
400 |
401 | Если Не ИспользуйтеДляКлиентов Или Не ИспользуйтеДляСвоихКлиентоа Или Не ИспользуйтеДляЧатБотов
402 | Или Не СтарайтесьЧтобыОтвечали Или Не ПредоставьтеОтписку Тогда
403 |
404 | Отказ = Истина;
405 | ПоказатьПредупреждение(, "Требуется отметить все галочки, чтобы продолжить");
406 |
407 | КонецЕсли;
408 |
409 | Возврат Неопределено;
410 |
411 | КонецФункции
412 |
413 | // Обработчик перехода назад (на предыдущую страницу) при уходе со страницы помощника "СтраницаДва".
414 | //
415 | // Параметры:
416 | // Отказ - Булево - флаг отказа от выполнения перехода назад;
417 | // если в обработчике поднять этот флаг, то переход на предыдущую страницу выполнен не будет.
418 | //
419 | &НаКлиенте
420 | Функция Подключаемый_СтраницаДва_ПриПереходеНазад(Отказ)
421 |
422 | Сообщить(НСтр("ru = 'Выполняется обработчик ПриПереходеНазад страницы № 2'"));
423 |
424 | Возврат Неопределено;
425 |
426 | КонецФункции
427 |
428 | // Обработчик выполняется при открытии страницы помощника "СтраницаДва".
429 | //
430 | // Параметры:
431 | //
432 | // Отказ - Булево - флаг отказа от открытия страницы;
433 | // если в обработчике поднять этот флаг, то переход на страницу выполнен не будет,
434 | // останется открытой предыдущая страница помощника согласно направлению перехода (вперед или назад).
435 | //
436 | // ПропуститьСтраницу - Булево - если поднять этот флаг, то страница будет пропущена
437 | // и управление перейдет на следующую страницу помощника согласно направлению перехода (вперед или назад).
438 | //
439 | // ЭтоПереходДалее (только чтение) - Булево - флаг определяет направление перехода.
440 | // Истина - выполняется переход далее; Ложь - выполняется переход назад.
441 | //
442 | &НаКлиенте
443 | Функция Подключаемый_СтраницаДва_ПриОткрытии(Отказ, ПропуститьСтраницу, Знач ЭтоПереходДалее)
444 |
445 | Сообщить(НСтр("ru = 'Выполняется обработчик ПриОткрытии страницы № 2'"));
446 |
447 | Возврат Неопределено;
448 |
449 | КонецФункции
450 |
451 | // Обработчик перехода далее (на следующую страницу) при уходе со страницы помощника "СтраницаОжидания".
452 | //
453 | // Параметры:
454 | // Отказ - Булево - флаг отказа от выполнения перехода далее;
455 | // если в обработчике поднять этот флаг, то переход на следующую страницу выполнен не будет.
456 | //
457 | &НаКлиенте
458 | Функция Подключаемый_СтраницаОжидания_ОбработкаДлительнойОперации(Отказ, ПерейтиДалее)
459 |
460 | ВыполнитьПродолжительноеДействиеНаСервере(Отказ);
461 |
462 | Возврат Неопределено;
463 |
464 | КонецФункции
465 |
466 | &НаКлиенте
467 | Функция Подключаемый_СтраницаСемь_ПриОткрытии(Отказ, ПропуститьСтраницу, Знач ЭтоПереходДалее)
468 |
469 | Если ЭтоПереходДалее Тогда
470 | Элементы.КомандаДалее1.Видимость = СтатусСервиса;
471 | Иначе
472 | ПропуститьСтраницу = Истина;
473 | КонецЕсли;
474 |
475 | Возврат Неопределено;
476 |
477 | КонецФункции
478 |
479 | &НаКлиенте
480 | Функция Подключаемый_СтраницаСемь_ПриПереходеНазад(Отказ)
481 |
482 | Элементы.КомандаДалее1.Видимость = Истина;
483 |
484 | КонецФункции
485 |
486 |
487 | &НаСервере
488 | Процедура ВыполнитьПродолжительноеДействиеНаСервере(Отказ)
489 |
490 | СтатусСервиса = ОбработкаОбъект().ПолучитьСтатусСервиса(ТекстОшибкиПодключения);
491 | Если СтатусСервиса Тогда
492 | ОбработкаОбъект().УстановитьНастройкиСервисаПоДефолту();
493 | КонецЕсли;
494 |
495 | Элементы.ГруппаУспешноеПодключение.Видимость = СтатусСервиса;
496 | Элементы.ГруппаОшибкаПодключения.Видимость = Не СтатусСервиса;
497 |
498 | КонецПроцедуры
499 |
500 | ////////////////////////////////////////////////////////////////////////////////
501 | // Переопределяемая часть - Инициализация переходов помощника.
502 |
503 | // Процедура определяет таблицу переходов по сценарию №1.
504 | //
505 | &НаКлиенте
506 | Процедура ТаблицаПереходовПоСценарию1()
507 |
508 | ТаблицаПереходов.Очистить();
509 |
510 | Переход = ТаблицаПереходов.Добавить();
511 | Переход.ПорядковыйНомерПерехода = 1;
512 | Переход.ИмяОсновнойСтраницы = "СтраницаОдин";
513 | Переход.ИмяСтраницыНавигации = "СтраницаНавигацииНачало";
514 | Переход.ИмяСтраницыДекорации = "СтраницаДекорацииНачало";
515 |
516 | Переход = ТаблицаПереходов.Добавить();
517 | Переход.ПорядковыйНомерПерехода = 2;
518 | Переход.ИмяОсновнойСтраницы = "СтраницаДва";
519 | Переход.ИмяСтраницыНавигации = "СтраницаНавигацииПродолжение";
520 | Переход.ИмяСтраницыДекорации = "СтраницаДекорацииПродолжение";
521 |
522 | Переход = ТаблицаПереходов.Добавить();
523 | Переход.ПорядковыйНомерПерехода = 3;
524 | Переход.ИмяОсновнойСтраницы = "СтраницаТри";
525 | Переход.ИмяСтраницыНавигации = "СтраницаНавигацииПродолжение";
526 | Переход.ИмяСтраницыДекорации = "СтраницаДекорацииПродолжение";
527 |
528 | Переход = ТаблицаПереходов.Добавить();
529 | Переход.ПорядковыйНомерПерехода = 4;
530 | Переход.ИмяОсновнойСтраницы = "СтраницаЧетыре";
531 | Переход.ИмяСтраницыНавигации = "СтраницаНавигацииПродолжение";
532 | Переход.ИмяСтраницыДекорации = "СтраницаДекорацииПродолжение";
533 |
534 | Переход = ТаблицаПереходов.Добавить();
535 | Переход.ПорядковыйНомерПерехода = 5;
536 | Переход.ИмяОсновнойСтраницы = "СтраницаПять";
537 | Переход.ИмяСтраницыНавигации = "СтраницаНавигацииПродолжение";
538 | Переход.ИмяСтраницыДекорации = "СтраницаДекорацииПродолжение";
539 | Переход.ИмяОбработчикаПриПереходеДалее = "СтраницаПять_ПриПереходеДалее";
540 |
541 | Переход = ТаблицаПереходов.Добавить();
542 | Переход.ПорядковыйНомерПерехода = 6;
543 | Переход.ИмяОсновнойСтраницы = "СтраницаОжидания";
544 | Переход.ИмяСтраницыНавигации = "СтраницаНавигацииОжидание";
545 | Переход.ИмяСтраницыДекорации = "СтраницаДекорацииПродолжение";
546 | Переход.ДлительнаяОперация = Истина;
547 | Переход.ИмяОбработчикаДлительнойОперации = "СтраницаОжидания_ОбработкаДлительнойОперации";
548 |
549 | Переход = ТаблицаПереходов.Добавить();
550 | Переход.ПорядковыйНомерПерехода = 7;
551 | Переход.ИмяОсновнойСтраницы = "СтраницаСемь";
552 | Переход.ИмяСтраницыНавигации = "СтраницаНавигацииПродолжение";
553 | Переход.ИмяСтраницыДекорации = "СтраницаДекорацииПродолжение";
554 | Переход.ИмяОбработчикаПриОткрытии = "СтраницаСемь_ПриОткрытии";
555 | Переход.ИмяОбработчикаПриПереходеНазад = "СтраницаСемь_ПриПереходеНазад";
556 |
557 | Переход = ТаблицаПереходов.Добавить();
558 | Переход.ПорядковыйНомерПерехода = 8;
559 | Переход.ИмяОсновнойСтраницы = "СтраницаВосемь";
560 | Переход.ИмяСтраницыНавигации = "СтраницаНавигацииПродолжение";
561 | Переход.ИмяСтраницыДекорации = "СтраницаДекорацииПродолжение";
562 | Переход.ИмяОбработчикаПриПереходеДалее = "СтраницаВосемь_ПриПереходеДалее";
563 |
564 |
565 | Переход = ТаблицаПереходов.Добавить();
566 | Переход.ПорядковыйНомерПерехода = 9;
567 | Переход.ИмяОсновнойСтраницы = "СтраницаДевять";
568 | Переход.ИмяСтраницыНавигации = "СтраницаНавигацииОкончание";
569 | Переход.ИмяСтраницыДекорации = "СтраницаДекорацииОкончание";
570 |
571 | КонецПроцедуры
572 |
573 | #КонецОбласти
574 |
575 | // Задает вопрос о продолжении действия, которое приведет к закрытию формы.
576 | // Для использования в обработчиках события ПередЗакрытием модулей форм.
577 | // Для отображения вопроса в форме, которая возможно записать в информационную базу, используйте:
578 | // см. процедуру ОбщегоНазначенияКлиент.ПоказатьПодтверждениеЗакрытияФормы().
579 | //
580 | // Параметры:
581 | // Форма - ФормаКлиентскогоПриложения - форма, которая вызывает диалог предупреждения.
582 | // Отказ - Булево - возвращаемый параметр, признак отказа от выполняемого действия.
583 | // ЗавершениеРаботы - Булево - признак завершения работы программы.
584 | // ТекстПредупреждения - Строка - текст предупреждения, выводимый пользователю.
585 | // ИмяРеквизитаЗакрытьФормуБезПодтверждения - Строка - имя реквизита, содержащего в себе признак того, нужно
586 | // выводить предупреждение или нет.
587 | // ОписаниеОповещенияЗакрыть - ОписаниеОповещения - содержит имя процедуры, вызываемой при нажатии на кнопку "Да".
588 | //
589 | // Пример:
590 | // ТекстПредупреждения = НСтр("ru = 'Закрыть помощник?'");
591 | // ОбщегоНазначенияКлиент.ПоказатьПодтверждениеЗакрытияПроизвольнойФормы(
592 | // ЭтотОбъект, Отказ, ТекстПредупреждения, "ЗакрытьФормуБезПодтверждения");
593 | //
594 | &НаКлиенте
595 | Процедура ПоказатьПодтверждениеЗакрытияПроизвольнойФормы(
596 | Знач Форма,
597 | Отказ,
598 | Знач ЗавершениеРаботы,
599 | Знач ТекстПредупреждения,
600 | Знач ИмяРеквизитаЗакрытьФормуБезПодтверждения,
601 | Знач ОписаниеОповещенияЗакрыть = Неопределено) Экспорт
602 |
603 | Если Форма[ИмяРеквизитаЗакрытьФормуБезПодтверждения] Тогда
604 | Возврат;
605 | КонецЕсли;
606 |
607 | Отказ = Истина;
608 | Если ЗавершениеРаботы Тогда
609 | Возврат;
610 | КонецЕсли;
611 |
612 | ПараметрыФормы = Новый Структура();
613 | ПараметрыФормы.Вставить("ТекстПредупреждения", ТекстПредупреждения);
614 | ПараметрыФормы.Вставить("ИмяРеквизитаЗакрытьФормуБезПодтверждения", ИмяРеквизитаЗакрытьФормуБезПодтверждения);
615 | ПараметрыФормы.Вставить("ОписаниеОповещенияЗакрыть", ОписаниеОповещенияЗакрыть);
616 |
617 | ПодключитьОбработчикОжидания("ПодтвердитьЗакрытиеПроизвольнойФормыСейчасGR", 0.1, Истина);
618 |
619 | КонецПроцедуры
620 |
621 | // Задает вопрос о продолжении действия, ведущего к закрытию формы.
622 | //
623 | &НаКлиенте
624 | Процедура ПодтвердитьЗакрытиеПроизвольнойФормыСейчасGR() Экспорт
625 |
626 | ПодтвердитьЗакрытиеПроизвольнойФормыGR();
627 |
628 | КонецПроцедуры
629 |
630 | &НаКлиенте
631 | Процедура ПодтвердитьЗакрытиеПроизвольнойФормыGR() Экспорт
632 |
633 | РежимВопроса = РежимДиалогаВопрос.ДаНет;
634 |
635 | Оповещение = Новый ОписаниеОповещения("ПодтвердитьЗакрытиеПроизвольнойФормыЗавершениеПК", ЭтотОбъект, ПараметрыФормы);
636 |
637 | ПоказатьВопрос(Оповещение, ПараметрыФормы.ТекстПредупреждения, РежимВопроса);
638 |
639 | КонецПроцедуры
640 |
641 | &НаСервере
642 | Функция ПолучитьКартинкуОбработки(ИмяМакета)
643 | Об = РеквизитФормыВЗначение("Объект");
644 | Картинка = Новый Картинка(Об.ПолучитьМакет(ИмяМакета));
645 | Возврат ПоместитьВоВременноеХранилище(Картинка, УникальныйИдентификатор);
646 | КонецФункции
647 |
648 | &НаСервере
649 | Функция ОбработкаОбъект()
650 | Возврат РеквизитФормыВЗначение("Объект");
651 | КонецФункции
652 |
653 | &НаКлиенте
654 | Процедура ПодтвердитьЗакрытиеПроизвольнойФормыЗавершениеПК(Ответ, Параметры) Экспорт
655 |
656 | Форма = ЭтотОбъект;
657 | Если Ответ = КодВозвратаДиалога.Да
658 | Или Ответ = КодВозвратаДиалога.ОК Тогда
659 | Форма[Параметры.ИмяРеквизитаЗакрытьФормуБезПодтверждения] = Истина;
660 | Если Параметры.ОписаниеОповещенияЗакрыть <> Неопределено Тогда
661 | ВыполнитьОбработкуОповещения(Параметры.ОписаниеОповещенияЗакрыть);
662 | КонецЕсли;
663 | Форма.Закрыть();
664 | Иначе
665 | Форма[Параметры.ИмяРеквизитаЗакрытьФормуБезПодтверждения] = Ложь;
666 | КонецЕсли;
667 |
668 | КонецПроцедуры
669 |
670 | &НаКлиенте
671 | Процедура ЗарегистрироватьсяВGreenAPI(Команда)
672 | Оповещение = Новый ОписаниеОповещения("ЗавершитьЗапускПриложенияGR", ЭтотОбъект);
673 | НачатьЗапускПриложения(Оповещение, "https://console.green-api.com/");
674 | КонецПроцедуры
675 |
676 | &НаКлиенте
677 | Процедура ЗавершитьЗапускПриложенияGR(КодВозврата, ДополнительныеПараметры) Экспорт
678 |
679 | // Действия не требуются
680 |
681 | КонецПроцедуры
682 |
--------------------------------------------------------------------------------
/src/DataProcessors/GreenAPI_ChatBot/Forms/ЧатБот.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
22 |
--------------------------------------------------------------------------------
/src/DataProcessors/GreenAPI_ChatBot/Forms/ЧатБот/Ext/Form.xml:
--------------------------------------------------------------------------------
1 |
2 |
--------------------------------------------------------------------------------
/src/DataProcessors/GreenAPI_ChatBot/Forms/ЧатБот/Ext/Form/Module.bsl:
--------------------------------------------------------------------------------
1 |
2 | #Область ОбработчикиСобытий
3 |
4 | &НаСервере
5 | Процедура ПриСозданииНаСервере(Отказ, СтандартнаяОбработка)
6 | ПодготовитьНастройки();
7 | КонецПроцедуры
8 |
9 | &НаКлиенте
10 | Процедура ПриОткрытии(Отказ)
11 | Если ЗначениеЗаполнено(Объект.ApiToken) И ЗначениеЗаполнено(Объект.IdInstance) Тогда
12 | ОбновитьСтатусСервиса();
13 | КонецЕсли;
14 | КонецПроцедуры
15 |
16 | &НаКлиенте
17 | Процедура ОбработкаВыбора(ВыбранноеЗначение, ИсточникВыбора)
18 | Если ЗначениеЗаполнено(ВыбранноеЗначение) Тогда
19 | Если ВыбранноеЗначение.ИмяФормы = "ПомощникПодключения" Тогда
20 | Объект.IdInstance = ВыбранноеЗначение.IdInstance;
21 | Объект.ApiToken = ВыбранноеЗначение.ApiToken;
22 | Объект.apiUrl = ВыбранноеЗначение.apiUrl;
23 | Объект.mediaUrl = ВыбранноеЗначение.mediaUrl;
24 | КонецЕсли;
25 | КонецЕсли;
26 | КонецПроцедуры
27 |
28 | #КонецОбласти
29 |
30 | #Область ОбработчикиРеквизитовКомандФормы
31 |
32 | &НаКлиенте
33 | Процедура ОтмечатьВходящиеСообщенияПрочитаннымиПриИзменении(Элемент)
34 | ОтмечатьВходящиеСообщенияПрочитаннымиПриИзмененииСервер();
35 | КонецПроцедуры
36 |
37 | &НаКлиенте
38 | Процедура ПроверитьПодключение(Команда)
39 | ОбновитьСтатусСервиса();
40 | Элементы.СтатусПроверки.Видимость = Истина;
41 | КонецПроцедуры
42 |
43 | &НаКлиенте
44 | Процедура ОбновитьСтатус(Команда)
45 |
46 | ОбновитьСтатусСервиса();
47 |
48 | КонецПроцедуры
49 |
50 | &НаКлиенте
51 | Процедура КнопкаПомощник(Команда)
52 |
53 | ОткрытьФормуОбработки("ПомощникПодключения");
54 |
55 | КонецПроцедуры
56 |
57 | &НаКлиенте
58 | Процедура ЗапуститьБота(Команда)
59 |
60 | Элементы.ГруппаНеЗаполненыНастройки.Видимость = Ложь;
61 | Элементы.ГруппаНеСканированКод.Видимость = Ложь;
62 | Элементы.ГруппаНестандартныеНастройки.Видимость = Ложь;
63 |
64 | Если Не ЗначениеЗаполнено(Объект.ApiToken) И Не ЗначениеЗаполнено(Объект.IdInstance) Тогда
65 | Элементы.ГруппаНеЗаполненыНастройки.Видимость = Истина;
66 | Возврат;
67 | КонецЕсли;
68 |
69 | Попытка
70 | ОбновитьСтатусСервиса();
71 | Исключение
72 | Сообщить(ПодробноеПредставлениеОшибки(ИнформацияОбОшибке()));
73 | Возврат;
74 | КонецПопытки;
75 |
76 |
77 | Если Объект.webhookUrl <> ХостВебхуковПоУмолчанию()
78 | Или Не Объект.ПолучатьВходящиеСообщенияИФайлы
79 | Или Объект.ПолучатьСтатусыОтправленныхСообщений
80 | Или Объект.ПолучатьУведомленииОСостоянииТелефона
81 | Или Объект.ПолучатьУведомленияОСостоянииАккаунта Тогда
82 |
83 | Элементы.ГруппаНестандартныеНастройки.Видимость = Истина;
84 | Возврат;
85 | КонецЕсли;
86 |
87 | Если СтатусСервиса Тогда
88 | ВыполнитьЗапускБота();
89 | Иначе
90 | Элементы.ГруппаНеСканированКод.Видимость = Истина;
91 | Возврат;
92 | КонецЕсли;
93 |
94 | КонецПроцедуры
95 |
96 | #КонецОбласти
97 |
98 | #Область СлужебныеПроцедурыИФункции
99 |
100 | &НаКлиенте
101 | Процедура ВыполнитьЗапускБота()
102 | Элементы.ЗапуститьБота.Пометка = Не Элементы.ЗапуститьБота.Пометка;
103 | Если Элементы.ЗапуститьБота.Пометка Тогда
104 | Элементы.ЗапуститьБота.Заголовок = "Остановить бота";
105 | СтатусПолучениеСообщения = "Получение сообщений...";
106 | Элементы.ГруппаЗапущенЧатБот.Видимость = Истина;
107 | ПодключитьОбработчикОжидания("Подключаемый_ЗапуститьБота", 3, Истина);
108 | Иначе
109 | Элементы.ЗапуститьБота.Заголовок = "Запустить бота";
110 | СтатусПолучениеСообщения = "";
111 | Элементы.ГруппаЗапущенЧатБот.Видимость = Ложь;
112 | ОтключитьОбработчикОжидания("Подключаемый_ЗапуститьБота");
113 | КонецЕсли;
114 | КонецПроцедуры
115 |
116 | &НаСервере
117 | Процедура ПодготовитьНастройки()
118 |
119 | ЭтотОбъект.Заголовок = ОбработкаОбъект().ВерсияОбработки();
120 | Объект.ИнтервалОтправкиСообщений = 500;
121 |
122 | КонецПроцедуры
123 |
124 | &НаКлиенте
125 | Процедура Подключаемый_ЗапуститьБота() Экспорт
126 | Попытка
127 | ЗапуститьБотаСервер();
128 | ПодключитьОбработчикОжидания("Подключаемый_ЗапуститьБота", 3, Истина);
129 | Исключение
130 | Элементы.ЗапуститьБота.Заголовок = "Запустить бота";
131 | СтатусПолучениеСообщения = "";
132 | Элементы.ГруппаЗапущенЧатБот.Видимость = Ложь;
133 | Сообщить(ПодробноеПредставлениеОшибки(ИнформацияОбОшибке()));
134 | ОтключитьОбработчикОжидания("Подключаемый_ЗапуститьБота");
135 | КонецПопытки;
136 | КонецПроцедуры
137 |
138 | &НаСервере
139 | Процедура ЗапуститьБотаСервер()
140 |
141 | ОбновитьСтатусСервиса();
142 | ОбработкаОбъект = ОбработкаОбъект();
143 | ОбработкаОбъект.ЗапуститьБота();
144 | ЗначениеВРеквизитФормы(ОбработкаОбъект, "Объект");
145 |
146 | КонецПроцедуры
147 |
148 | &НаСервере
149 | Процедура ОбновитьСтатусСервиса()
150 |
151 | Если Не ЭтотОбъект.ПроверитьЗаполнение() Тогда
152 | Возврат;
153 | КонецЕсли;
154 |
155 | СтатусСервиса = ОбработкаОбъект().ПолучитьСтатусСервиса();
156 |
157 | Если СтатусСервиса Тогда
158 | НастройкиСервиса = ОбработкаОбъект().ПолучитьНастройкиАккаунта();
159 |
160 | Объект.ПолучатьВходящиеУведомления = ЗначениеЗаполнено(НастройкиСервиса.webhookUrl) И НастройкиСервиса.webhookUrl = ОбработкаОбъект().ХостВебхуковПоУмолчанию();
161 | Объект.webhookUrl = НастройкиСервиса.webhookUrl;
162 | Объект.ПолучатьВходящиеСообщенияИФайлы = НастройкиСервиса.incomingWebhook = "yes";
163 | Объект.ПолучатьСтатусыОтправленныхСообщений = НастройкиСервиса.outgoingWebhook = "yes";
164 | Объект.ПолучатьУведомленииОСостоянииТелефона = НастройкиСервиса.deviceWebhook = "yes";
165 | Объект.ПолучатьУведомленияОСостоянииАккаунта = НастройкиСервиса.stateWebhook = "yes";
166 | Объект.ОтмечатьВходящиеСообщенияПрочитанными = НастройкиСервиса.markIncomingMessagesReaded = "yes";
167 | Объект.ИнтервалОтправкиСообщений = Макс(НастройкиСервиса.delaySendMessagesMilliseconds, Объект.ИнтервалОтправкиСообщений);
168 |
169 | ЕстьНестадантныенастройки = Не (ЗначениеЗаполнено(НастройкиСервиса.webhookUrl) И НастройкиСервиса.webhookUrl = ОбработкаОбъект().ХостВебхуковПоУмолчанию());
170 | КонецЕсли;
171 |
172 | КонецПроцедуры
173 |
174 | &НаСервере
175 | Процедура ОтмечатьВходящиеСообщенияПрочитаннымиПриИзмененииСервер()
176 |
177 | НастройкиСохранены = ОбработкаОбъект().УстановитьНастройкуСервиса("markIncomingMessagesReaded",
178 | ? (Объект.ОтмечатьВходящиеСообщенияПрочитанными, "yes", "no"));
179 |
180 | КонецПроцедуры
181 |
182 | &НаКлиенте
183 | Процедура Декорация2Нажатие(Элемент)
184 | ПроверитьЗаполнение();
185 | КонецПроцедуры
186 |
187 | &НаКлиенте
188 | Процедура Декорация5Нажатие(Элемент)
189 | Элементы.Разделы.ТекущаяСтраница = Элементы.НастройкиВнешние;
190 | КонецПроцедуры
191 |
192 | Функция ХостВебхуковПоУмолчанию()
193 |
194 | Возврат ОбработкаОбъект().ХостВебхуковПоУмолчанию();
195 |
196 | КонецФункции
197 |
198 | #КонецОбласти
199 |
200 | #Область Утилиты
201 |
202 | &НаСервере
203 | Функция ПолучитьТекстИзМакета(ИмяМакета)
204 | Об = ОбработкаОбъект();
205 | ОбластьМакета = Об.ПолучитьМакет(ИмяМакета);
206 | Возврат ОбластьМакета.ТекущаяОбласть.Текст;
207 | КонецФункции
208 |
209 | &НаСервере
210 | Функция ОбработкаОбъект()
211 | Возврат РеквизитФормыВЗначение("Объект");
212 | КонецФункции
213 |
214 | &НаСервере
215 | Функция ЭтоВнешняяОбработкаОтчет() Экспорт
216 | ПолноеИмяМетаданных = ОбработкаОбъект().Метаданные().ПолноеИмя();
217 | Возврат Метаданные.НайтиПоПолномуИмени(ПолноеИмяМетаданных) = Неопределено
218 | КонецФункции
219 |
220 | &НаКлиенте
221 | Функция ОткрытьФормуОбработки(ИмяФормы)
222 |
223 | Если ЭтоВнешняяОбработкаОтчет() Тогда
224 | ИмяОткрФормы = "ВнешняяОбработка.GreenAPI_ChatBot.Форма." + ИмяФормы;
225 | Иначе
226 | ИмяОткрФормы = "Обработка.GreenAPI_ChatBot.Форма." + ИмяФормы;
227 | КонецЕсли;
228 |
229 | ОткрытьФорму(ИмяОткрФормы, Новый Структура("IdInstance,ApiToken,apiUrl,mediaUrl", Объект.IdInstance, Объект.ApiToken, Объект.apiUrl, Объект.mediaUrl), ЭтотОбъект,,,,,
230 | РежимОткрытияОкнаФормы.БлокироватьОкноВладельца);
231 |
232 | КонецФункции
233 |
234 | #КонецОбласти
235 |
--------------------------------------------------------------------------------
/src/DataProcessors/GreenAPI_ChatBot/Templates/QRМакет.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 | QRМакет
6 |
7 |
8 | ru
9 | QRМакет
10 |
11 |
12 |
13 | SpreadsheetDocument
14 |
15 |
16 |
--------------------------------------------------------------------------------
/src/DataProcessors/GreenAPI_ChatBot/Templates/QRМакет/Ext/Template.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 | ru
5 | ru
6 |
7 | ru
8 | Русский
9 | Русский
10 |
11 |
12 |
13 | 12
14 |
15 |
16 | 0
17 |
18 |
19 |
20 | 0
21 |
22 |
23 | ru
24 | <!DOCTYPE html>
25 | <html>
26 | <body>
27 |
28 | <img ng-show="$nnn.showQR" id="img-qr-code" alt="QR-Code" class="sb-qr-wizard-qr-code" aria-hidden="false" src="data:image/png;base64,%QR_DATA%" style="">
29 | </body>
30 | </html>
31 |
32 |
33 |
34 |
35 |
36 |
37 |
38 |
39 | 11
40 |
41 | 0
42 |
43 |
44 |
45 |
46 |
47 |
48 | 45
49 |
50 |
51 | 5
52 |
53 | 0
54 |
55 |
56 |
57 |
58 |
59 | true
60 | 1
61 | 46
62 | 46
63 |
64 | 72
65 |
66 |
--------------------------------------------------------------------------------
/src/DataProcessors/GreenAPI_ChatBot/Templates/ВыборАккаунта.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 | ВыборАккаунта
6 |
7 |
8 | ru
9 | Выбор аккаунта
10 |
11 |
12 |
13 | BinaryData
14 |
15 |
16 |
--------------------------------------------------------------------------------
/src/DataProcessors/GreenAPI_ChatBot/Templates/ВыборАккаунта/Ext/Template.bin:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/green-api/whatsapp-chatbot-1c/b2de0f5a99febbfad7d3d1ded210b140e6d166f7/src/DataProcessors/GreenAPI_ChatBot/Templates/ВыборАккаунта/Ext/Template.bin
--------------------------------------------------------------------------------
/src/DataProcessors/GreenAPI_ChatBot/Templates/ДанныеАккаунта.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 | ДанныеАккаунта
6 |
7 |
8 | ru
9 | Данные аккаунта
10 |
11 |
12 |
13 | BinaryData
14 |
15 |
16 |
--------------------------------------------------------------------------------
/src/DataProcessors/GreenAPI_ChatBot/Templates/ДанныеАккаунта/Ext/Template.bin:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/green-api/whatsapp-chatbot-1c/b2de0f5a99febbfad7d3d1ded210b140e6d166f7/src/DataProcessors/GreenAPI_ChatBot/Templates/ДанныеАккаунта/Ext/Template.bin
--------------------------------------------------------------------------------
/src/DataProcessors/GreenAPI_ChatBot/Templates/ИконкаWhatsApp.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 | ИконкаWhatsApp
6 |
7 |
8 | ru
9 | Иконка whats app
10 |
11 |
12 |
13 | BinaryData
14 |
15 |
16 |
--------------------------------------------------------------------------------
/src/DataProcessors/GreenAPI_ChatBot/Templates/ИконкаWhatsApp/Ext/Template.bin:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/green-api/whatsapp-chatbot-1c/b2de0f5a99febbfad7d3d1ded210b140e6d166f7/src/DataProcessors/GreenAPI_ChatBot/Templates/ИконкаWhatsApp/Ext/Template.bin
--------------------------------------------------------------------------------
/src/DataProcessors/GreenAPI_ChatBot/Templates/ИконкаФиниш.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 | ИконкаФиниш
6 |
7 |
8 | ru
9 | Иконка финиш
10 |
11 |
12 |
13 | BinaryData
14 |
15 |
16 |
--------------------------------------------------------------------------------
/src/DataProcessors/GreenAPI_ChatBot/Templates/ИконкаФиниш/Ext/Template.bin:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/green-api/whatsapp-chatbot-1c/b2de0f5a99febbfad7d3d1ded210b140e6d166f7/src/DataProcessors/GreenAPI_ChatBot/Templates/ИконкаФиниш/Ext/Template.bin
--------------------------------------------------------------------------------
/src/DataProcessors/GreenAPI_ChatBot/Templates/СканQR.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 | СканQR
6 |
7 |
8 | ru
9 | Скан QR
10 |
11 |
12 |
13 | BinaryData
14 |
15 |
16 |
--------------------------------------------------------------------------------
/src/DataProcessors/GreenAPI_ChatBot/Templates/СканQR/Ext/Template.bin:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/green-api/whatsapp-chatbot-1c/b2de0f5a99febbfad7d3d1ded210b140e6d166f7/src/DataProcessors/GreenAPI_ChatBot/Templates/СканQR/Ext/Template.bin
--------------------------------------------------------------------------------
/src/DataProcessors/Обработка1.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 | 803b7faa-dacd-4f88-bc69-6f349cdde9dd
7 | 60c46620-65e1-4de6-ba7a-6915dce5db59
8 |
9 |
10 | 614e98fc-037c-48f2-a182-dc8da750f5e9
11 | 72d9fb93-9d4c-41d0-9c55-f76d2566cf55
12 |
13 |
14 |
15 | Обработка1
16 |
17 |
18 | true
19 |
20 |
21 | false
22 |
23 |
24 |
25 |
26 |
27 |
--------------------------------------------------------------------------------
/src/Ext/HomePageWorkArea.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 | TwoColumnsEqualWidth
4 |
5 |
6 | -
7 |
8 | 10
9 |
10 | true
11 |
12 |
13 |
14 |
--------------------------------------------------------------------------------
/src/Languages/Русский.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 | Русский
6 |
7 |
8 | ru
9 | Русский
10 |
11 |
12 |
13 | ru
14 |
15 |
16 |
--------------------------------------------------------------------------------