Version 1.1 by pugachevskaya_elena on 2025/12/12 14:13

Show last authors
1 Часто бывает необходимо информировать о факте прохода/проезда кого-либо, например:
2
3 * руководителя — о приходе подчинённого на работу и об отработанном им времени;
4 * PR-менеджера — о приходе соискателя;
5 * организатора выставки — о важном посетителе.
6
7 {{info}}
8 При этом выдача пропуска может осуществляться удалённо, в виде QR-кода или пин-кода, например. Также вы можете настроить доступ по распознаванию лиц ~[[[doc:neyross.Настройка Платформы НЕЙРОСС.Настройка функций контроля доступа.Настройка биометрической верификации | Биометрия по лицам и отпечаткам пальцев, термометрия.WebHome]]].
9 {{/info}}
10
11 Для решения таких задач мы разработали скрипт «(% style="color: rgb(70,70,70);" %)Персональные Telegram уведомления о доступе(%%)», который осуществляет рассылку телеграмм-уведомлений. Текст уведомлений настраивается и может содержать следующую информацию:
12
13 1. информация о владельце пропуска — любые данные владельца и пропуска, отработанное время:
14 1. информация о точке доступа, время прохода;
15 1. фотоматериалы — скриншот с камеры видеонаблюдения, «привязанной» к точке доступа.
16
17 {{info}}
18 **ПОДСКАЗКА**
19
20 Скрипт также может осуществлять информирование самого посетителя ~[[[doc:neyross.НЕЙРОСС Автоматика.Отправка инструкций и напоминаний посетителю или сотруднику по факту прохода через точку доступа посредством телеграмм-уведомлений.WebHome]]]. Под запрос может быть выполнена доработка скрипта с целью информирования по другим каналам связи. Также возможно дополнение уведомления любыми данными и более сложная логика работы скрипта.
21 {{/info}}
22
23 \\
24
25 \\
26
27 {{excerpt atlassian-macro-output-type="INLINE"}}
28 Для обеспечения работы скрипта вам потребуется:
29
30 1. В форме пропуска указать идентификатор (ID) телеграмм-канала ответственного лица и подключится к каналу НЕЙРОСС БОТ ~[[[#Настройка формы владельца пропуска>>doc:||anchor="Уведомлениеответственноголицаофактепроходачерезточкудоступа-Настройкаформывладельцапропуска"]]].
31 1. Настроить фильтр со списком точек доступа, по факту прохода через которые требуется уведомлять ответственное лицо ~[[[#Настройка фильтра>>doc:||anchor="Уведомлениеответственноголицаофактепроходачерезточкудоступа-Настройкафильтра"]]].
32 1. Импортировать задание автоматизации, настроить текст уведомления ~[[[#Настройка задания автоматизации>>doc:||anchor="Уведомлениеответственноголицаофактепроходачерезточкудоступа-Настройказаданияавтоматизации"]]].
33 1. При необходимости расчёта времени нахождения на предприятии в течение текущих суток, требуется указать, какие точки доступа являются входом на предприятие, а какие — выходом из него ~[[[#Добавление меток входа/выхода>>doc:||anchor="Уведомлениеответственноголицаофактепроходачерезточкудоступа-Добавлениеметоквхода/выхода"]]].
34
35 == {{id name="Уведомлениеответственноголицаофактепроходачерезточкудоступа-Настройкаформывладельцапропуска"/}}Настройка формы владельца пропуска ==
36
37 Для информирования ответственного лица или самого владельца пропуска необходимо указать идентификаторы телеграмм-каналов данных лиц. Для удобства мы подготовили готовую форму ввода с требуемыми полями.
38
39 Скопируйте тест в поле ниже и создайте файл с произвольным именем и расширением **JSON**, например: //форма_ввода_владельца_пропуска_с_telegram_полями.json//. Для этого удобно использовать простые текстовые редакторы типа Блокнот или Notepad++. Вы также можете обратиться к специалистам компании ИТРИУМ, мы вышлем подготовленные файлы.
40
41 {{code}}
42 {"type":"object","title":"Title form","keysFields":["person.name","person.surname","person.organization","person.division","person.post","person.properties.neyross:automation:personTelegramChatId","person.properties.neyross:automation:responsibleTelegramChatId","person.photo","person.properties.extra"],"properties":{"person.name":{"type":"string","title":"Имя","format":"single-line","property":{"type":"searchableText","title":"Имя","schema":{"type":"string","format":"single-line"},"dataType":"TEXT","property":"person.name","columnType":"searchableText","searchAlias":"name","propertyType":"STANDART"}},"person.surname":{"type":"string","title":"Фамилия","format":"single-line","property":{"type":"searchableText","title":"Фамилия","schema":{"type":"string","format":"single-line"},"dataType":"TEXT","property":"person.surname","columnType":"searchableText","searchAlias":"surname","propertyType":"STANDART"}},"person.properties.neyross:automation:personTelegramChatId":{"type":"string","title":"ID telegram-чата владельца","format":"single-line","property":{"id":4,"title":"ID telegram-чата владельца","schema":{"type":"string","format":"single-line"},"dataType":"TEXT","property":"person.properties.neyross:automation:personTelegramChatId","propertyType":"USER"}},"person.properties.neyross:automation:responsibleTelegramChatId":{"type":"string","title":"ID telegram-чата ответственного лица","format":"single-line","property":{"id":3,"title":"ID telegram-чата ответственного лица","schema":{"type":"string","format":"single-line"},"dataType":"TEXT","property":"person.properties.neyross:automation:responsibleTelegramChatId","propertyType":"USER"}},"person.photo":{"title":"Фотография","type":"string","format":"photo","property":{"propertyType":"STANDART","property":"person.photo","title":"Фотография","columnType":"photo","type":"photo","dataType":"PHOTO","schema":{"type":"string","format":"photo"}}},"person.post":{"title":"Должность","type":"string","format":"glossary","glossaryType":"post","property":{"propertyType":"STANDART","property":"person.post","title":"Должность","columnType":"searchableInGlossary","searchAlias":"post","type":"searchableInGlossary","dataType":"GLOSSARY","schema":{"type":"string","format":"glossary","glossaryType":"post"}}},"person.organization":{"title":"Организация","type":"string","format":"glossary","glossaryType":"organization","property":{"propertyType":"STANDART","property":"person.organization","title":"Организация","columnType":"searchableInGlossary","searchAlias":"organization","type":"searchableInGlossary","dataType":"GLOSSARY","schema":{"type":"string","format":"glossary","glossaryType":"organization"}}},"person.division":{"title":"Подразделение","type":"string","format":"glossary","glossaryType":"division","property":{"propertyType":"STANDART","property":"person.division","title":"Подразделение","columnType":"searchableInGlossary","searchAlias":"division","type":"searchableInGlossary","dataType":"GLOSSARY","schema":{"type":"string","format":"glossary","glossaryType":"division"}}},"person.properties.extra":{"title":"Доп. информация","type":"string","format":"multi-line","property":{"propertyType":"STANDART","property":"person.properties.extra","title":"Доп. информация","dataType":"TEXT","schema":{"type":"string","format":"multi-line"}}}},"description":"Description form"}
43 {{/code}}
44
45 \\
46
47 В **АРМ НЕЙРОСС Доступ** выберите группу пропусков, выберите **Настройки группы > Форма ввода: владелец пропуска > Пользовательская форма**, укажите путь к подготовленному файлу ~[[[doc:neyross.Настройка Платформы НЕЙРОСС.Настройка функций контроля доступа.Настройка форм ввода данных.WebHome]]]. Форма будет загружена и доступна к предпросмотру.
48
49 При необходимости, задайте значение по умолчанию — ID Telegram-чата отв. лица. Это значение будет задаваться для всех новых пропусков в этой группе пропусков, но может быть изменено.
50
51 [[image:attach:telegramID_form.png||width="680"]]
52
53 {{info}}
54 Если идентификатор канала не указан, рассылка по факту прохода данного лица не производится. Указывайте идентификатор канала отв. лица только в случае, если требуется уведомлять ответственное лицо. Указывайте идентификатор канала владельца пропуска только в случае, если требуется информировать его об отработанном им времени, либо выдавать инструкции/напоминания.
55 {{/info}}
56
57 Чтобы узнать идентификатор своего чата (канала) телеграмм и в дальнейшем получать уведомления, наведите камеру смартфона на QR-код ниже или перейдите по ссылке [[https:~~/~~/t.me/neyross_bot>>url:https://t.me/neyross_bot||shape="rect"]] и подключитесь к каналу НЕЙРОСС БОТ. Рекомендуем распечатать и разместить этот QR-код в помещении бюро пропусков. Также по запросу мы можем поместить его в форму ввода данных владельца пропуска.
58
59 **[[image:attach:QRcodeTelegram.png]]**
60
61 После перехода по ссылке подключитесь к каналу НЕЙРОСС Бот. Вы получите сообщение вида:
62
63 {{code}}
64 Ваш ID: →1055492440→
65 User name: логин
66 Имя: имя
67 Фамилия: фамилия
68 {{/code}}
69
70 (% style="color: rgb(23,43,77);" %)Где цифры между стрелками → — идентификатор вашего канала. На примере это 1055492440. Этот идентификатор и должен быть указан в форме пропуска.
71
72 == {{id name="Уведомлениеответственноголицаофактепроходачерезточкудоступа-Настройкафильтра"/}}Настройка фильтра ==
73
74 Перейдите в раздел **Фильтры** и создайте простой фильтр ~[[[doc:ui.Параметры узла.События и фильтры.WebHome]]]. В блоке По источникам в поле **Включает элементы** выберите из раскрывающегося списка точки доступа, событие прохода по которым будут обрабатываться скриптом рассылки уведомлений. Количество точек доступа не ограничено. Вы можете указать точки доступа нескольких контроллеров.
75
76 [[image:attach:telegramAccessPointsFilter.png||width="900"]]
77
78 Либо вы также можете воспользоваться профессиональным режимом и задать перечень точек доступа.
79
80 [[image:attach:telegramAccessPointsFilter_prof.png||height="158"]]
81
82 Сохраните изменения.
83
84 == {{id name="Уведомлениеответственноголицаофактепроходачерезточкудоступа-Настройказаданияавтоматизации"/}}Настройка задания автоматизации ==
85
86 Для удобства мы подготовили готовый код задания автоматизации. Обратитесь к специалистам компании ИТРИУМ, мы вышлем подготовленный файл в формате **JSON**. Вам потребуется импортировать полученный файл и указать фильтр, подготовленный на шаге ~[[[#Настройка фильтра>>doc:||anchor="Уведомлениеответственноголицаофактепроходачерезточкудоступа-Настройкафильтра"]]].
87
88 В разделе **Автоматизация** нажмите на кнопку [[image:attach:ui.Параметры узла.Автоматизация.WebHome@btn_plus_new.png||thumbnail="true" height="22"]] **Добавить новое задание**, нажмите на кнопку **Импорт** и укажите путь к файлу ~[[[doc:ui.Параметры узла.Автоматизация.WebHome]]].
89
90 [[image:attach:telegramScrypt.png||width="900"]]
91
92 В блоке** Параметры сигнала** в поле** Фильтр по событиям** выберите из раскрывающегося списка фильтр, подготовленный на шаге ~[[[#Настройка фильтра>>doc:||anchor="Уведомлениеответственноголицаофактепроходачерезточкудоступа-Настройкафильтра"]]].
93
94 В блоке **Параметры действия** настройте поля согласно таблице ниже.
95
96 (% class="wrapped" %)
97 |=(((
98 Поле
99 )))|=(((
100 Диапазон значений
101 )))|=(((
102 Комментарий
103 )))
104 |(((
105 Информировать ответственное лицо
106 )))|(((
107 Да/Нет, логическое поле
108 )))|(((
109 Снимите флаг, если не требуется отправлять уведомление ответственному лицу. По умолчанию флаг установлен, если в форме владельца пропуска указан идентификатор телеграмм-канала ответственного лица, будет отправлено сообщение, текст которого определён в поле **Шаблон сообщения для ответственного лица**.
110 )))
111 |(((
112 Шаблон сообщения для ответственного лица
113 )))|(((
114 Произвольный текст и переменные
115 )))|(((
116 (% class="content-wrapper" %)
117 (((
118 Определяет текст информирования ответственного лица. Может содержать переменные:
119
120 * $(person.surname) — фамилия владельца пропуска;
121 * (((
122 $(person.name) — имя владельца пропуска;
123
124 {{info}}
125 Вы можете использовать уникальные ключи других свойств владельца или пропуска. Они указаны в разделе Настройки СКУД АРМ НЕЙРОСС Доступ ~[[[doc:neyross.Настройка Платформы НЕЙРОСС.Настройка функций контроля доступа.Добавление пользовательских свойств.WebHome]]].
126 {{/info}}
127 )))
128 * $(element,name) — имя точки доступа, через которую осуществлён проход.
129 * ${workTime} — время нахождения на предприятии (с учётом перерывов).
130 )))
131 )))
132 |(((
133 Информировать владельца пропуска
134 )))|(((
135 Да/Нет, логическое поле
136 )))|(((
137 Снимите флаг, если не требуется отправлять уведомление владельцу пропуска. По умолчанию флаг установлен, если в форме владельца пропуска указан идентификатор телеграмм-канала владельца, будет отправлено сообщение, текст которого определён в поле **Шаблон сообщения для владельца пропуска**.
138 )))
139 |(((
140 Шаблон сообщения для владельца пропуска
141 )))|(((
142 Произвольный текст и переменные
143 )))|(((
144 (% class="content-wrapper" %)
145 (((
146 Определяет текст информирования владельца пропуска. Может содержать тот же набор переменных, как в описании шаблона сообщения для ответственного лица, а также приветствие, заданное в переменной:
147
148 * $(greeting).
149
150 Переменная задаётся в коде скрипта ~[[[#Изменение текста приветствия>>doc:||anchor="Уведомлениеответственноголицаофактепроходачерезточкудоступа-Изменениетекстаприветствия"]]]
151 )))
152 )))
153
154 == {{id name="Уведомлениеответственноголицаофактепроходачерезточкудоступа-Добавлениеметоквхода/выхода"/}}Добавление меток входа/выхода ==
155
156 При необходимости расчёта времени нахождения на предприятии в течение текущих суток, требуется указать, какие точки доступа являются входом на предприятие, а какие — выходом из него. Для этого используется механизм пользовательских меток.
157
158 Перейдите в раздел **Элементы **~[[[doc:ui.Параметры узла.Элементы.WebHome]]]. На вкладке **Элементы** выберите точку доступа контроллера, в поле **Пользовательские метки** задайте:
159
160 * Метку //ТочкаДоступаВход //для точек, являющихся входом на предприятие, сохраните изменения.
161 * Метку //ТочкаДоступаВыход //для точек доступа, являющихся выходом с предприятия, сохраните изменения.
162
163 [[image:attach:telegramAccessPointsLabels.png||width="650"]]
164
165 == {{id name="Уведомлениеответственноголицаофактепроходачерезточкудоступа-Изменениетекстаприветствия"/}}Изменение текста приветствия ==
166
167 Переменная $(greeting) определяет приветствие владельца пропуска и зависит от метки точки доступа, через которую выполнен проход.
168
169 {{code}}
170 private def getPersonGreeting(signal: NeyrossEventAutomationSignal, person: Person): String = {
171 signal.event.extensions.get(EventExtensions.FunctionalElement).map(_.asInstanceOf[FunctionalElement]) match {
172 case Some(fe) =>
173 if (isEntryAccessPoint(fe)) {
174 s"Добро пожаловать, ${person.name.getOrElse("")}!"
175 } else if (isExitAccessPoint(fe)) {
176 s"Всего доброго, ${person.name.getOrElse("")}!"
177 } else {
178 s"Выполнен проход через точку доступа '${fe.name}'."
179 }
180 case _ =>
181 s"Выполнен проход через точку доступа."
182 }
183 }
184 {{/code}}
185
186 * При проходе через точку доступа, помеченной меткой// isEntryAccessPoint// (русифицированной как //ТочкаДоступаВход//), выводится сообщение: «//Добро пожаловать, [Имя владельца пропуска]//».
187 * При проходе через точку доступа, помеченной меткой //isExitAccessPoint// (русифицированной как //ТочкаДоступаВыход//), выводится сообщение «//Всего доброго, [Имя владельца пропуска]//».
188 * При проходе через точку доступа, не имеющей перечисленных меток, выводится сообщение «//Выполнен проход через точку доступа [Имя точки доступа]//».
189
190 {{info}}
191 **ПОДСКАЗКА**
192
193 Вы можете изменить текст приветствия прямо в коде скрипта, для этого выберите режим редактирования **Исходный код**, откройте расширенный редактор скриптов, с помощью поиска найдите нужный текст кода,  откорректируйте тест и сохраните изменения.
194
195 [[image:attach:telegramScrypt_redactor.png]]
196 {{/info}}
197
198 == {{id name="Уведомлениеответственноголицаофактепроходачерезточкудоступа-Отказотметокипеременной$(greeting)"/}}Отказ от меток и переменной $(greeting) ==
199
200 Если не требуется информировать об отработанном в текущие сутки времени вы можете вовсе отказаться от меток и переменной $(greeting), создать несколько отдельных фильтров на разные точки доступа и для каждого фильтра создать отдельное задание автоматизации, указав в поле **Шаблон сообщения** собственный текст.
201
202 == {{id name="Уведомлениеответственноголицаофактепроходачерезточкудоступа-Примерработыскриптаавтоматизации"/}}Пример работы скрипта автоматизации ==
203
204 Уведомление ответственного лица:
205
206 [[image:attach:telegramScrypt_example2.png||thumbnail="true" width="300"]]
207
208 Уведомление владельца пропуска:
209
210 [[image:attach:telegramScrypt_example1.png||thumbnail="true" width="300"]]
211
212 [[image:attach:telegramScrypt_example4.png||thumbnail="true" width="300"]]
213
214 [[image:attach:telegramScrypt_example3.png||width="300"]]
215
216 {{info}}
217 Вы вольны задавать любые формулировки приветствия и тексты сообщений, а также доработать код скрипта для выполнения требуемых вам действий. Вы также можете обратиться к специалистам компании ИТРИУМ для разработки требуемого скрипта.
218 {{/info}}
219 {{/excerpt}}
220
221 \\

Платформа НЕЙРОСС