Wiki source code of Уведомление ответственного лица о факте прохода через точку доступа
Version 4.2 by superadmin on 2026/06/15 21:57
Hide last authors
| author | version | line-number | content |
|---|---|---|---|
| |
1.1 | 1 | Часто бывает необходимо информировать о факте прохода/проезда кого-либо, например: |
| 2 | |||
| 3 | * руководителя — о приходе подчинённого на работу и об отработанном им времени; | ||
| 4 | * PR-менеджера — о приходе соискателя; | ||
| 5 | * организатора выставки — о важном посетителе. | ||
| 6 | |||
| 7 | {{info}} | ||
| 8 | При этом выдача пропуска может осуществляться удалённо, в виде QR-кода или пин-кода, например. Также вы можете настроить доступ по распознаванию лиц ~[[[doc:neyross.Настройка Платформы НЕЙРОСС.Настройка функций контроля доступа.Настройка биометрической верификации | Биометрия по лицам и отпечаткам пальцев, термометрия.WebHome]]]. | ||
| 9 | {{/info}} | ||
| 10 | |||
| |
3.1 | 11 | Для решения таких задач мы разработали скрипт «Персональные Telegram уведомления о доступе(%%)», который осуществляет рассылку телеграмм-уведомлений. Текст уведомлений настраивается и может содержать следующую информацию: |
| |
1.1 | 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 | |||
| |
2.1 | 41 | {{code language="java"}} |
| |
1.1 | 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 | |||
| |
2.1 | 63 | {{code language="java"}} |
| |
1.1 | 64 | Ваш ID: →1055492440→ |
| 65 | User name: логин | ||
| 66 | Имя: имя | ||
| 67 | Фамилия: фамилия | ||
| 68 | {{/code}} | ||
| 69 | |||
| |
3.1 | 70 | Где цифры между стрелками → — идентификатор вашего канала. На примере это 1055492440. Этот идентификатор и должен быть указан в форме пропуска. |
| |
1.1 | 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 | |=((( | ||
| 97 | Поле | ||
| 98 | )))|=((( | ||
| 99 | Диапазон значений | ||
| 100 | )))|=((( | ||
| 101 | Комментарий | ||
| 102 | ))) | ||
| 103 | |((( | ||
| 104 | Информировать ответственное лицо | ||
| 105 | )))|((( | ||
| 106 | Да/Нет, логическое поле | ||
| 107 | )))|((( | ||
| 108 | Снимите флаг, если не требуется отправлять уведомление ответственному лицу. По умолчанию флаг установлен, если в форме владельца пропуска указан идентификатор телеграмм-канала ответственного лица, будет отправлено сообщение, текст которого определён в поле **Шаблон сообщения для ответственного лица**. | ||
| 109 | ))) | ||
| 110 | |((( | ||
| 111 | Шаблон сообщения для ответственного лица | ||
| 112 | )))|((( | ||
| 113 | Произвольный текст и переменные | ||
| 114 | )))|((( | ||
| 115 | ((( | ||
| 116 | Определяет текст информирования ответственного лица. Может содержать переменные: | ||
| 117 | |||
| 118 | * $(person.surname) — фамилия владельца пропуска; | ||
| 119 | * ((( | ||
| 120 | $(person.name) — имя владельца пропуска; | ||
| 121 | |||
| 122 | {{info}} | ||
| 123 | Вы можете использовать уникальные ключи других свойств владельца или пропуска. Они указаны в разделе Настройки СКУД АРМ НЕЙРОСС Доступ ~[[[doc:neyross.Настройка Платформы НЕЙРОСС.Настройка функций контроля доступа.Добавление пользовательских свойств.WebHome]]]. | ||
| 124 | {{/info}} | ||
| 125 | ))) | ||
| 126 | * $(element,name) — имя точки доступа, через которую осуществлён проход. | ||
| 127 | * ${workTime} — время нахождения на предприятии (с учётом перерывов). | ||
| 128 | ))) | ||
| 129 | ))) | ||
| 130 | |((( | ||
| 131 | Информировать владельца пропуска | ||
| 132 | )))|((( | ||
| 133 | Да/Нет, логическое поле | ||
| 134 | )))|((( | ||
| 135 | Снимите флаг, если не требуется отправлять уведомление владельцу пропуска. По умолчанию флаг установлен, если в форме владельца пропуска указан идентификатор телеграмм-канала владельца, будет отправлено сообщение, текст которого определён в поле **Шаблон сообщения для владельца пропуска**. | ||
| 136 | ))) | ||
| 137 | |((( | ||
| 138 | Шаблон сообщения для владельца пропуска | ||
| 139 | )))|((( | ||
| 140 | Произвольный текст и переменные | ||
| 141 | )))|((( | ||
| 142 | ((( | ||
| 143 | Определяет текст информирования владельца пропуска. Может содержать тот же набор переменных, как в описании шаблона сообщения для ответственного лица, а также приветствие, заданное в переменной: | ||
| 144 | |||
| 145 | * $(greeting). | ||
| 146 | |||
| 147 | Переменная задаётся в коде скрипта ~[[[#Изменение текста приветствия>>doc:||anchor="Уведомлениеответственноголицаофактепроходачерезточкудоступа-Изменениетекстаприветствия"]]] | ||
| 148 | ))) | ||
| 149 | ))) | ||
| 150 | |||
| 151 | == {{id name="Уведомлениеответственноголицаофактепроходачерезточкудоступа-Добавлениеметоквхода/выхода"/}}Добавление меток входа/выхода == | ||
| 152 | |||
| 153 | При необходимости расчёта времени нахождения на предприятии в течение текущих суток, требуется указать, какие точки доступа являются входом на предприятие, а какие — выходом из него. Для этого используется механизм пользовательских меток. | ||
| 154 | |||
| 155 | Перейдите в раздел **Элементы **~[[[doc:ui.Параметры узла.Элементы.WebHome]]]. На вкладке **Элементы** выберите точку доступа контроллера, в поле **Пользовательские метки** задайте: | ||
| 156 | |||
| 157 | * Метку //ТочкаДоступаВход //для точек, являющихся входом на предприятие, сохраните изменения. | ||
| 158 | * Метку //ТочкаДоступаВыход //для точек доступа, являющихся выходом с предприятия, сохраните изменения. | ||
| 159 | |||
| 160 | [[image:attach:telegramAccessPointsLabels.png||width="650"]] | ||
| 161 | |||
| 162 | == {{id name="Уведомлениеответственноголицаофактепроходачерезточкудоступа-Изменениетекстаприветствия"/}}Изменение текста приветствия == | ||
| 163 | |||
| 164 | Переменная $(greeting) определяет приветствие владельца пропуска и зависит от метки точки доступа, через которую выполнен проход. | ||
| 165 | |||
| |
2.1 | 166 | {{code language="java"}} |
| |
1.1 | 167 | private def getPersonGreeting(signal: NeyrossEventAutomationSignal, person: Person): String = { |
| 168 | signal.event.extensions.get(EventExtensions.FunctionalElement).map(_.asInstanceOf[FunctionalElement]) match { | ||
| 169 | case Some(fe) => | ||
| 170 | if (isEntryAccessPoint(fe)) { | ||
| 171 | s"Добро пожаловать, ${person.name.getOrElse("")}!" | ||
| 172 | } else if (isExitAccessPoint(fe)) { | ||
| 173 | s"Всего доброго, ${person.name.getOrElse("")}!" | ||
| 174 | } else { | ||
| 175 | s"Выполнен проход через точку доступа '${fe.name}'." | ||
| 176 | } | ||
| 177 | case _ => | ||
| 178 | s"Выполнен проход через точку доступа." | ||
| 179 | } | ||
| 180 | } | ||
| 181 | {{/code}} | ||
| 182 | |||
| 183 | * При проходе через точку доступа, помеченной меткой// isEntryAccessPoint// (русифицированной как //ТочкаДоступаВход//), выводится сообщение: «//Добро пожаловать, [Имя владельца пропуска]//». | ||
| 184 | * При проходе через точку доступа, помеченной меткой //isExitAccessPoint// (русифицированной как //ТочкаДоступаВыход//), выводится сообщение «//Всего доброго, [Имя владельца пропуска]//». | ||
| 185 | * При проходе через точку доступа, не имеющей перечисленных меток, выводится сообщение «//Выполнен проход через точку доступа [Имя точки доступа]//». | ||
| 186 | |||
| 187 | {{info}} | ||
| 188 | **ПОДСКАЗКА** | ||
| 189 | |||
| 190 | Вы можете изменить текст приветствия прямо в коде скрипта, для этого выберите режим редактирования **Исходный код**, откройте расширенный редактор скриптов, с помощью поиска найдите нужный текст кода, откорректируйте тест и сохраните изменения. | ||
| 191 | |||
| 192 | [[image:attach:telegramScrypt_redactor.png]] | ||
| 193 | {{/info}} | ||
| 194 | |||
| 195 | == {{id name="Уведомлениеответственноголицаофактепроходачерезточкудоступа-Отказотметокипеременной$(greeting)"/}}Отказ от меток и переменной $(greeting) == | ||
| 196 | |||
| 197 | Если не требуется информировать об отработанном в текущие сутки времени вы можете вовсе отказаться от меток и переменной $(greeting), создать несколько отдельных фильтров на разные точки доступа и для каждого фильтра создать отдельное задание автоматизации, указав в поле **Шаблон сообщения** собственный текст. | ||
| 198 | |||
| 199 | == {{id name="Уведомлениеответственноголицаофактепроходачерезточкудоступа-Примерработыскриптаавтоматизации"/}}Пример работы скрипта автоматизации == | ||
| 200 | |||
| 201 | Уведомление ответственного лица: | ||
| 202 | |||
| 203 | [[image:attach:telegramScrypt_example2.png||thumbnail="true" width="300"]] | ||
| 204 | |||
| 205 | Уведомление владельца пропуска: | ||
| 206 | |||
| 207 | [[image:attach:telegramScrypt_example1.png||thumbnail="true" width="300"]] | ||
| 208 | |||
| 209 | [[image:attach:telegramScrypt_example4.png||thumbnail="true" width="300"]] | ||
| 210 | |||
| 211 | [[image:attach:telegramScrypt_example3.png||width="300"]] | ||
| 212 | |||
| 213 | {{info}} | ||
| 214 | Вы вольны задавать любые формулировки приветствия и тексты сообщений, а также доработать код скрипта для выполнения требуемых вам действий. Вы также можете обратиться к специалистам компании ИТРИУМ для разработки требуемого скрипта. | ||
| 215 | {{/info}} | ||
| 216 | {{/excerpt}} | ||
| 217 | |||
| 218 | \\ |