Glpi telegram bot настройка
Задача: организовать Portal в небольшой коммерческой компании способный помочь в управлении IT-инфраструктурой, в техподдержке пользователей, в планировании бюджета, в управлении отделами и во многом другом.
Основные причины, по которым можно прийти к выводу, что такая система необходима:
- Удобное ведение поступивших заявок — заявки поступившие в систему не забываются и не надо вести дополнительных блокнотов;
- Хронология каждой заявки — в процессе решения собирается вся необходимая информация в одном месте;
- История заявок — в случае проблем с заказчиком всегда можно посмотреть все события по заявке и освежить в памяти события которые со временем забываются.
Требования к системе предъявлялись:
- Свободная система работающая на свободных операционных системах;
- Система должна активно развиваться и иметь возможность простого обновления;
- Система должна работать на популярном языке программирования;
- Возможность удобной подачи заявки и последующего ведения;
- Ведение в одной системе разных организаций;
- Гибкое администрирование уровня доступа пользователей;
- Создание базы знаний для пользователей;
- Использование доменных пользователей;
- Личный планировщик заданий.
Что очень порадовало в системе GLPI это:
- Систему GLPI можно установить на простой хостинг как обычный сайт так как он написан на PHP;
- Настроек очень много и это позволяет реализовать практические любые пожелания;
- Простота и продуманность обновления;
- Информативность по выполняемым действиям очень радует, так как можно посмотреть подробную историю как действий пользователей так и автоматических заданий;
- Расширение возможностей с помощью большого количества дополнений;
- Почти во всех настройках есть история изменений где можно посмотреть кто и что делал;
- Делать резервные копии базы данных перед серьезными настройками в системе GLPI;
- Возможности GLPI значительно расширяют дополнения, которые просты в использовании и имеют богатый функционал.
Основной состав компонентов:
2. Описание свободного менеджера IT-инфраструктуры.
2.1. Что такое GLPI.
2.2. Особенности.
GLPI включает возможности:
- Инвентаризацию компьютеров, периферийного оборудования, сетевых принтеров и связанных компонентов через интерфейс с OCS Inventory или FusionInventory.
- Управление заявками и инцидентами.
- Управление лицензиями, договорами (по стандарту ITIL).
- Связывание пользователей и групп по географическому положению.
- Управление деловой и финансовой информацией (договоры).
- Управление статусом объектов.
- Поддержка базы знаний и Часто задаваемых вопросов (FAQ).
- Генераторы отчетов.
- Поддерживаются база данных MariaDB.
- Поддержка UTF8.
- Система оповещения о событиях.
GLPI позволяет увеличивать функциональность с помощью подключения плагинов.
3. Предварительная подготовка сервера.
Предварительную подготовку сервера: обновление системы CentOS 7, удаление SELinus, открытие порта 80 и порта 443 проведем по по статье «CentOS 7: Настройка web-сервера Nginx и выход в Интернет со своим доменным именем.»
3.1. Установка nginx.
3.2. Настройка nginx.
Настраивать свободный менеджер ИТ-инфраструктуры GLPI будем с учетом наличия других виртуальных хостов (в перспективе) на данном сервере под управлением nginx.
Создадим виртуальный хост и подготовим директории для размещения системы GLPI и log-файлов:
Создадим файл конфигурации для нашего свободного менеджера IT-инфраструктуры GLPI, чтобы можно было обращаться к нему по доменному имени:
Копируем в файл конфигурации данный текст и по смыслу меняем его на свои параметры:
В данной конфигурации настроены все необходимые редиректы, но ничего работать не будет. Нужно доустановить остальные компоненты облачного хранилища.
3.3. Установка php-fpm.
Перезапускаем php-fpm.
3.5. Установка MariaDB.
3.6. Ротация логов виртуальных хостов.
4. Первый вход в web-интерфейс.
Соглашаемся с лицензионным соглашением:
Так как мы ставим на чистовую и с нуля, то нажимаем клавишу Install:
Пройдет небольшая самодиагностика установленных компонентов. У нас всё установлено кроме парольного доступа на страничку с авторизацией. Это можно сделать позднее самостоятельно в любое удобное время. Нажимаем клавишу Continue:
Система предложит автоматически отформатировать нашу базу данных под нужды GLPI. Выбираем ее по названию. Соглашаемся и нажимаем клавишу Continue:
После завершения всех выше описанных действий система автоматически создаст 4 учетных записи с паролем и логином по-умолчанию. После входа в систему данные учетные записи нужно будет переименовать и сменить на них пароли.
Вот эти учетные записи:
- Логин: glpi , пароль: glpi . Учетная запись для администратора системы.
- Логин: tech , пароль: tech . Учетная запись для техника системы.
- Логин: normal , пароль: normal . Учетная запись для потребителя системы.
- Логин: post-only , пароль: postonly . Учетная запись для координатора системы.
Введите там учётные данные по-умолчанию для администратора системы:
5. Первичная настройка GLPI.
5.1. Удаление файла автонастройки install.php.
На главной странице появится уведомление о том, что надо удалить файл из корневой папки /web/glpi/www/install/install.php :
5.2. Переименовывание базовых пользователей.
Не забудьте и сменить пароли как у учётной записи GLPI, так и у других встроенных учётных записей.
Переходим в Администрирование -> Пользователь:
Меняем пароль для следующих учетных записей:
5.3. Настройка cron для GLPI.
Проверим, работает ли у нас cron в фоновом режиме?
Открываем файл заданий cron:
Добавляем строки по смыслу общего синтаксиса в файле:
Где указаны следующие параметры:
В данном примере скрипт /web/glpi/www/front/cron.php будет выполняться раз в минуту.
Через некоторое время проверим периодичность выполнения задания:
5.4. Расположение пунктов важных настроек.
Для удобства использования портала необходимо самостоятельно настроить следующее:
6. Подключение плагинов.
Функциональные возможности программы значительно расширяются за счет плагинов.
Установка плагинов в GLPI выполняется по следующему алгоритму:
- Скачиваем плагин, версия которого совместима с установленной версией GLPI.
- Распаковываем скачанный архив в каталог /plugins , который находится в каталоге с GLPI.
- Заходим на наш портал GLPI, переходим в Настройки -> Плагины. Находим нужный плагин -> кликаем напротив него по Установить и затем Включить.
Рассмотрим некоторые из них.
7. Доменная аутентификация Active Directory.
Если в нашей сети есть сервер с установленной ролью контроллера домена, мы можем выполнять аутентификацию на основе LDAP. Настройка выполняется в два этапа — настройка связи с LDAP и импорт пользователей из каталога.
7.1. Настройка связи с LDAP.
Для начала, создаем учетную запись в каталоге Active Directory для настройки связывания с GLPI. У нее должны быть минимальные права.
Теперь создаем каталог LDAP. Для этого переходим в Настройки -> Аутентификация:
Кликаем по LDAP каталог и нажимаем Добавить:
Заполняем поля для настройки LDAP:
- Наименование — произвольное имя каталога, например, dmosk.local .
- Сервер — сервер с ролью LDAP-сервера. В данном примере указан весь домен, по которому могут отзываться все серверы.
- Фильтр соединений — фильтр объектов, которые мы извлекаем. Для Active Directory работает ( &(objectClass=user )( objectCategory=person) ).
- База поиска (baseDN) — контейнер или организационный юнит, с которого начинается поиск объектов. В нашем случае, OU=Users,DC=dmosk,DC=local .
- Поле имени пользователя — поле LDAP, по которому будет ассоциироваться имя пользователя ( samaccountname ).
- Сервер по умолчанию и Активен переводим в Да.
- rootDN (пользователь для подключения) — учетная запись в AD DS, у которой есть права на чтение каталога ( CN=glpi,CN=Users,DC=dmosk,DC=local ). Ее мы создавали на первом этапе.
- Пароль (пользователь для подключения) — вводим пароль для учетной записи в AD.
Нажимаем Добавить.
Переходим в подраздел Тест и проверяем подключение к каталогу. Если оно выполнится с ошибкой, подождите, минут, 15 — возможно, не прошла репликация между всеми контроллерами.
Переходим в подраздел Пользователь — заполняем поля для ассоциаций с LDAP:
Нажимаем Сохранить.
- В группах можно добавить фильтр ( &(objectClass=group)(objectCategory=group) ).
- В дополнительной информации меняем часовой пояс.
7.2. Импорт пользователей.
Переходим в Администрирование -> Пользователь:
Кликаем по Связи с LDAP:
После импорта, пользователь может входить на портал под своей доменной учетной записью.
8. Отчеты.
Также, возможности отчетов можно расширить с помощью плагинов, например, Reports.
GLPI project является приложением на основе PHP, поэтому мы сначала настроим веб-сервер на базе Apache + PHP7 + MariaDB (можно также использовать nginx, но в инструкции мы этого делать не будем). После приступим к развертыванию самого GLPI. Все действия выполняются на базе операционной системы CentOS 7, однако, во многом, подойдут для других дистрибутивов Linux (Ubuntu, Debian, . ) и Windows.
Пред настройка системы
Время
Установим пакет для синхронизации времени:
yum install ntpdate
Задаем часовой пояс:
\cp /usr/share/zoneinfo/Europe/Moscow /etc/localtime
Создадим задачу в cron для актуализации времени:
Безопасность
Добавляем правило в firewalld:
firewall-cmd --permanent --add-port=80/tcp
firewall-cmd --permanent --add-port=443/tcp
sed -i "s/SELINUX=enforcing/SELINUX=disabled/" /etc/selinux/config
Установка пакетов
Для установки некоторых пакетов нам понадобиться репозиторий Epel:
yum install epel-release
Установка Apache
Приложение GLPI лучше всего работает на основе веб-сервера Apache (но не исключает возможности установки на NGINX). Для его установки вводим команду:
После запускаем его:
Открываем браузер и вводим IP-адрес сервера — мы должны увидеть тестовую страницу Apache:
Установка PHP 7
В репозитории CentOS находится PHP версии 5.4. Для свежих версий GLPI требуется более новая версия php. Для этого установим репозиторий REMI:
Теперь ставим php7:
yum --enablerepo=remi-php72 install php
* на момент написания статьи последняя стабильная версия была 7.2 (ссылка на PHP: Downloads).
Откроем на редактирование файл:
И правим следующее:
upload_max_filesize = 256M
.
post_max_size = 256M
.
date.timezone = "Europe/Moscow"
* где upload_max_filesize — максимальный размер одного загружаемого файла; post_max_size — объем всех отправляемых на сервер данных за раз; date.timezone — временная зона по умолчанию, которую будет устанавливать интерпретатор php.
Apache + PHP
Открываем конфигурационный файл apache:
<IfModule dir_module>
DirectoryIndex index.php index.html
</IfModule>
* добавляем index.php.
Создаем виртуальный домен:
<VirtualHost *:80>
Define root_domain glpi.dmosk.local
Define root_path /var/www/glpi
* мы создали виртуальный домен glpi.dmosk.local, при обращении на который apache будет искать файлы в каталоге /var/www/glpi.
mkdir -p /var/www/glpi
Создаем файл со следующим содержимым:
Открываем браузер и вводим имя виртуального домена (в нашем случае, glpi.dmosk.local) — мы должны увидеть, примерно, следующее:
Установка MariaDB
По умолчанию, в CentOS устанавливается mariadb версии 5. Это ранняя версия и она не подходит для последних версий GLPI.
Ниже мы увидим инструкцию по добавлению репозитория в CentOS и установке СУБД:
Согласно инструкции, добавим репозиторий:
Устанавливаем СУБД командой:
yum install mariadb-server
Запускаем сервер баз данных:
systemctl enable mariadb
systemctl start mariadb
Задаем пароль для суперпользователя СУБД:
mysqladmin -u root password
Устанавливаем модули php для работы с MariaDB:
yum --enablerepo=remi-php72 install php-mysql php-mysqli
Открываем нашу страницу с phpinfo — мы должны найти информацию поддержке MySQL:
Установка GLPI
Создание базы данных
Подключаемся к СУБД:
Создаем базу данных:
> CREATE DATABASE glpi DEFAULT CHARACTER SET utf8 DEFAULT COLLATE utf8_general_ci;
* где glpi — имя базы.
Создаем пользователя с доступом к этой базе:
* где glpi@localhost — пользователь с логином glpi и доступом с локального сервера; glpi123 — пароль для пользователя.
Отключаемся от MariaDB:
Загрузка
Установим пакет для загрузки файлов:
yum install wget
Установка
Устанавливаем php-расширения, необходимые для GLPI:
yum --enablerepo=remi-php72 install php-mbstring php-gd php-simplexml php-intl
Устанавливаем рекомендованные php-расширения:
yum --enablerepo=remi-php72 install php-ldap php-imap php-pecl-zendopcache php-pecl-apcu php-xmlrpc php-pear-CAS php-zip php-sodium
Распаковываем архив в каталог виртуального домена (настраивали в Apache):
tar -xvzf glpi-*.tgz -C /var/www/glpi --strip-components 1
Задаем владельца apache для данного каталога:
chown -R apache:apache /var/www/glpi
Запускаем браузер и снова открываем портал по имени виртуального домена. В открывшемся окне выбираем русский язык (или любой из возможных вариантов) и нажимаем OK:
Принимаем лицензионное соглашение и нажимаем Продолжить:
Из двух вариантов (установить или обновить) выбираем Установить:
Система проверить, что наши настройки соответствуют рекомендованным. Если все хорошо, нажимаем Продолжить.
На следующем шаге вводим данные для подключения к базе данных:
Далее выбираем базу, созданную ранее:
Несколько раз нажимаем Продолжить и на последнем этапе Запустить GLPI.
Готово. Для первого входа используем логин и пароль по умолчанию — glpi/glpi.
Первичная настройка
1. С сервера удаляем файл установки:
2. В cron добавляем задание GLPI cron.php — это необходимо для автоматического запуска некоторых процедур внутри самого GLPI, в противном случае, мы получим предупреждение cron не запущен:
* * * * * /bin/php /var/www/glpi/front/cron.php &>/dev/null
* в данном примере скрипт /var/www/glpi/front/cron.php будет выполняться раз в минуту.
3. Переходим в Администрирование - Пользователь:
Меняем пароль для следующих учетных записей:
Расположение пунктов важных настроек
Для удобства использования портала необходимо самостоятельно настроить следующее:
- Заявки. Поддержка - Заявки - Управление шаблонами (две горизонтальные линии с разрывом) - выбираем шаблон для настройки.
- Уведомления. Настройки - Уведомление - включить комментарии и, при необходимости, уведомления по email и браузерные оповещения. После включения оповещений можно будет перейти к настройкам шаблонов оповещений.
- Интерфейс. Настройки - Общий - Значения по умолчанию. А также настройка вида для конкретного пользователя — кликаем по имени профиля в правом верхнем углу - Внешний вид.
- Cron. Настройки - Автоматическое действие. Среди списка действий кликаем на нужное.
- SLA. Настройки - Уровни обслуживания. Если уровней нет, создаем, нажав на плюсик.
- Автоматическое назначение заявок на специалиста. Администрирование - Правила - Бизнес-правила для заявок. На самом деле, позволяет автоматизировать не только назначение на специалиста.
Установка плагинов
Функциональные возможности программы значительно расширяются за счет плагинов. Рассмотрим установку некоторых из них.
Принцип установки плагинов
Установка плагинов в GLPI выполняется по следующему алгоритму:
- Скачиваем плагин, версия которого совместима с установленной версией GLPI.
- Распаковываем скачанный архив в каталог plugins, который находится в каталоге с glpi.
- Заходим на портал, переходим в Настройки - Плагины. Находим нужный плагин - кликаем напротив него по Установить и затем Включить.
FusionInventory (инвентаризация ИТ-оборудования)
yum install bzip2
Распаковываем его в папку с плагинами GLPI:
tar -xvjf fusioninventory-*.tar.bz2 -C /var/www/glpi/plugins/
Заходим на портал GLPI - Настройки - Плагины. В списке плагинов должен появиться FusionInventory — необходимо его установить, затем включить:
Reports (отчеты)
tar -xvzf glpi-plugin-reports-*.tar.gz -C /var/www/glpi/plugins/
На портале переходим в Настройки - Плагины - напротив Reports кликаем Установить и Включить.
Barcode (генератор баркодов)
tar -xvjf glpi-barcode-*.tar.bz2 -C /var/www/glpi/plugins/
Заходим в управление плагинами на портале и устанавливаем Barcode.
Archires (визуализация топологии сетевой инфраструктуры)
Ход установки аналогичный — скачиваем:
tar -xvzf glpi-archires-*.tar.gz -C /var/www/glpi/plugins/
Устанавливаем через портал.
TelegramBot
tar -xvjf glpi-telegrambot-*.tar.bz2 -C /var/www/glpi/plugins/
Устанавливаем через портал.
OCS Inventory
tar -xvzf glpi-ocsinventoryng-*.tar.gz -C /var/www/glpi/plugins/
Устанавливаем через портал.
Другие плагины
Доменная аутентификация (Active Directory)
Если в нашей сети есть сервер с установленной ролью контроллера домена, мы можем выполнять аутентификацию на основе ldap. Настройка выполняется в два этапа — настройка связи с LDAP и импорт пользователей из каталога.
Настройка связи с LDAP
Для начала, создаем учетную запись в каталоге Active Directory для настройки связывания с GLPI. У нее должны быть минимальные права.
Теперь создаем каталог LDAP. Для этого переходим в Настройки - Аутентификация:
Кликаем по LDAP каталог и нажимаем Добавить:
Заполняем поля для настройки LDAP:
- Наименование — произвольное имя каталога, например, dmosk.local.
- Сервер — сервер с ролью ldap-сервера. В данном примере указан весь домен, по которому могут отзываться все серверы.
- Фильтр соединений — фильтр объектов, которые мы извлекаем. Для Active Directory работает (&(objectClass=user)(objectCategory=person)).
- База поиска (baseDN) — контейнер или организационный юнит, с которого начинается поиск объектов. В нашем случае, OU=Users,DC=dmosk,DC=local.
- Поле имени пользователя — поле LDAP, по которому будет ассоциироваться имя пользователя (samaccountname).
- Сервер по умолчанию и Активен переводим в Да.
- rootDN (пользователь для подключения) — учетная запись в AD DS, у которой есть права на чтение каталога (CN=glpi,CN=Users,DC=dmosk,DC=local). Ее мы создавали на первом этапе.
- Пароль (пользователь для подключения) — вводим пароль для учетной записи в AD.
Нажимаем Добавить.
Переходим в подраздел Тест и проверяем подключение к каталогу. Если оно выполнится с ошибкой, подождите, минут, 15 — возможно, не прошла репликация между всеми контроллерами.
Переходим в подраздел Пользователь — заполняем поля для ассоциаций с LDAP:
Нажимаем Сохранить.
- В группах можно добавить фильтр (&(objectClass=group)(objectCategory=group)).
- В дополнительной информации меняем часовой пояс.
Импорт пользователей
Переходим в Администрирование - Пользователь:
Кликаем по Связи с LDAP:
Затем Импорт новых пользователей - Поиск. Среди найденных результатов отмечаем всех или необходимых пользователей - Действие - Импорт.
После импорта, пользователь может входить на портал под своей доменной учетной записью.
Добавляем виртуальный домен:
<VirtualHost *:80>
Define root_domain test-glpi.dmosk.local
Define root_path /var/www/glpi
<VirtualHost *:443>
Define root_domain test-glpi.dmosk.local
Define root_path /var/www/glpi
SSLEngine on
SSLCertificateFile ssl/cert.pem
SSLCertificateKeyFile ssl/cert.key
</VirtualHost>
Добавляем порт 443 в брандмауэр (если этого не было сделано при подготовке сервера):
В этой статье мы рассмотрим пример использования Telegram бота на сервере с Linux CentOS, покажем, как настроить простые уведомления в чат-бот для мониторинга вашего сервера, а также несколько управляющих команд.
В эпоху мобильных гаджетов, стало актуально использование различных мессенджеров не только для общения с реальными людьми, но и использование различных ботов. Например, в Telegram существует широкий функционал для бота, который можно использовать в различных целях — выдать информацию о заказе клиенту, информация по посылке у почтового оператора и, например, мониторинг собственного сервера.
Создание чат-бота в Telegram
Для создания чат-бота в Telegram используется бот @BotFather. Чтобы создать своего бота, нужно найти @BotFather у себя в Telegram и перейти в чат с ним:
Нажмите START. Чтобы создать нового бота, выберете в меню /newbot, введите имя бота в формате “имя_bot». После создания бота, вы получите API токен бота, который нужен будет в дальнейшей настройке.
На скриншоте выделен ваш ID.
Итак, мы создали бота в Telegram и получили авторизационные данные.
Отправка в чат Telegram уведомлений с сервера
С помощью ранее созданного бота и полученных ID можно отсылать с сервера уведомления в Telegram чат, и таким образом получать какие-то интересные нам данные или алерты.
Для чего можно использовать такие Telegram уведомления? Например, при создании резервной копии вы можете отправлять уведомления о ее создании или же отправлять ссылку на скачивание копии в чат с ботом. Вы можете отправлять себе в Telegram уведомления с информацией о сбоях в системе. Можно добавить в крон выполнение каких-либо проверок с последующей отправкой в Telegram.
Еще пример использования подобных уведомлений:
Добавьте этот код в /etc/profile и будете получать уведомления в Telegram при каждом входе пользователей на сервер:
Хочу напомнить, что во всех командах, нужно указывать именно своей token(API) и ID чата.
Управление Linux сервером в чат-боте Telegram
Есть набор скриптов, которые позволяет управлять сервером Linux из Telegram чата, отправляя различные команды в чат с ботом. Для этого нужно установить Python, ряд инструментов и загрузить на сервер скрипты.
Создайте симлинк для Python:
И установите ПО для самого бота:
Теперь скачайте и распакуйте к себе на сервер в каталог root/admin три файла из архива telegram_bot.zip:
Рассмотрим файл config.py. В нем нам нужно указать token(API) и ID вашего чата с ботом, а также путь до директорий с бэкапами и директории, размер которой вы будете в дальнейшем проверять:
Файл bot.sh не требует настройки, в нем лишь указываем путь до bot.py:
И самый основной файл, который собственно и позволит нам управлять сервером, это bot.py. В нем описаны функции, которые будут доступны в чате с ботом и собственно туда, мы можем добавлять свой собственный функционал. Например, в первом блоке описываются доступные команды бота в чате:
Тут описываются все функции, которые будут доступны, после ввода команды /help.
Ниже описывается сама функция, например,
И эту функцию, нужно описать как команду:
То есть как видим, это выполнение стандартной функции проверки сетевых настроек ifconfig.
При знакомстве с ботом я попытался добавить собственную команду, например для проверки Apache:
Но только через настройку данного файла это не сработало. Как я понял, здесь можно выполнить только команду описанную одним словом или символами. Я решил проблему создав файл apache_status.sh с содержимым:
И создал на него симлинк:
Теперь при вызове команды apachestatus, у меня выводит статус веб-сервера apache:
В файле bot.py я заполнил все три блока, согласно других функций. Чтобы bot заработал, нужно запустить файл bot.sh. Для удобства, создадим отдельный сервис для Telegram бота. Создаем нужный файл и выставляем права:
После чего заходим в файл сервиса:
И добавляем содержимое:
Теперь, если в чате с вашим ботом ввести /help, вы получите список доступных команд.
Например, в данный момент у меня на сервере остановлен веб-сервер Apache:
Запустим его на сервере и проверим статус через Telegram:
Еще несколько примеров выполнения команд:
Таким образом, вы можете выполнять мониторинг своего Linux сервера или даже частичное администрирование через Telegram, что поможет сильно сократить время на выполнение типовых действий.
Так же хотел бы заметить, что авторизация сервера с ботом происходит именно по ID и token(API) (любой другой человек, не зная ваших данных, подключиться не сможет).
Хоть и с большим запозданием, публикую шпаргалку по telegram bot api, может, будет полезна.
Прикладываю официальную документацию, и готовый набор методов для работы с telegram. Обработку тестировал на 8.3.15.1747.
В тексте я буду давать ссылки на вторую документацию т.к. для ее просмотра не нужны премудрости для обхода блокировок.
В клиенте telegram ищем бота BotFather
Далее отправляем ему команды
/start
/newbot
Представление имени моего бота
unikalnoe_imya_bot
После этого бот выдаст нам данные для подключения, а именно токен вида 123456:ABC-DEF1234ghIkl-zyx57W2v1u123ew11
Скринами
Соединение
В документации написано:
Код создания соединения :
Прокси
Есть огромное количество сайтов предоставляющий список таких бесплатных прокси, я использую getMe
Я специально буду повторять блоки кода, дабы Вы копировали сразу рабочий вариант, конечно это все нужно обернуть в функции и процедуры
Метод getMe вернет в теле ответа JSON структуру
"ok":true - Означает, что авторизация прошла успешно и Ваш токен валидный.
Short polling - это классическая схема, когда отправляя запрос мы сразу получаем результат его выполнения.
т.е. вы заводите РС с обработанными update_id и каждый раз анализируете - обработан полученный id или нет. Можно завести константу с последним обработанным update_id и сравнивать ее на < или > с полученным
Для работы в такой схеме необходимо договориться с сервером - какой таймаут считать допустимым, для этого у метода
Для переключения режима обмена на вебхуки существует метод InlineKeyboardMarkup
Загрузка полученных файлов
Для этого существует GET-метод
Ответ сервиса getFile
При этом запросе сервер ответит, что все Ок
Показ привью отправленной ссылки можно отключить с помощью параметра disable_web_page_preview
Для этого нужно к запросу добавить строку &disable_web_page_preview=true
Кнопки (клавиатуры)
У метода sendMessage есть еще один очень интересный параметр - reply_markup, который отвечает за быстрые ответы.
Кнопка - это объект InlineKeyboardButton, у которого только одно обязательное поле - text
Есть еще ряд полей, основное из которых - callback_data. Это данные, которые будут отправлены после нажатия кнопки пользователем. Сюда можно записывать идентификаторы из 1С (документа или справочника), числа и т.д. для последующей обработки.
Второй полезный параметр - url, в котором указывается ссылка, которая будет открыта при нажатии на кнопку
Пример JSON-описания клавиатуры
KeyboardButton с основным полем text, данный объект можно не использовать и сразу формировать массив строк.
Еще один важный параметр клавиатуры, но не обязательным, является resize_keyboard, который отвечает за "авто высоту" кнопок.
По умолчанию данный параметр установлен в false и клавиатура растягивается на высоту основной клавиатуры, что выглядит громоздко (см. скрин в примере).
Еще один опциональный параметр - one_time_keyboard, который при установке в true скрывает клавиатуру после нажатия кнопки.
ReplyKeyboardHide - Своего рода команда управления видимостью для клавиатуры
Отправка контактов
Метод похож на sendMessage за исключением нескольких обязательных полей:
phone_number - строковое представление телефонного номера
first_name - Имя контакта
Отправка документов (файлов)
За отправку файлов отвечает POST-метод
Со строковыми значениями вопросов не возникает - делаем СтрЗаменить и все, но есть еще и содержимое файла, которое нужно в итоговый запрос подсунуть.
Для решения этой проблемы у 1С есть метод ОбъединитьФайлы, который объединяет переданный в него массив файлов в один.
Разделим шаблон на части - певая это текст до %СодержимоеФайла%, а вторая это текст после %СодержимоеФайла%. Запишем эти 2 текста в файлы и используем ОбъединитьФайлы подсунув между текстовиками отправляемый файл.
Telegram хорошо зарекомендовал себя как средство доставки уведомлений и средство обратной связи на разных системах управления умным домом. OpenHAB не стоит в стороне и имеет средства работы с Telegram Bot.
Ранее уже рассматривалась тема создания бота для Телеграм и подключение его к Home Assistant. Задействовать такого бота не удастся, т.к. невозможно одновременно использовать одного бота двум программным продуктам. Выхода два:
- Отключить настройки бота в Home Assistant, но тогда не получится оперативно получать информацию из HA.
- Создать еще одного бота для нужд OpenHAB.
Идем по второму пути.
Создание нового бота в Telegram
Если у вас уже есть созданный Telegram бот, то переходим к следующему разделу.
В программе Telegram находим праотца всех ботов @BotFather и отсылаем ему команду:
Конфигурация OpenHAB
С помощью поиска находим созданного бота, отсылаем ему команду:
Переходим в web браузере по ссылке:
На открывшейся странице ищем Chat ID с ботом.
В web браузере открываем страницу OpenHAB:
Добавляем Telegram Binding в разделе Settings -> Bindings -> + .
Подключаемся к OpenHAB по SSH, переходим в каталог с конфигурационными файлами (для сборки OpenHABian: /etc/openhab , так же в OpenHABian конфигурационные файлы доступны в локальной сети \\openhabian_host_name\openHAB-conf\ ). В папке things создаем файл telegram.things , заполняем его:
Не обязательные дополнительные параметры:
При использовании прокси сервера запись о Telegram боте в файле telegram.things будет выглядеть так:
После сохранения файла telegram.things в разделе Settings -> Things появится информация о подключенном боте.
Переходим в папку items , создаем файл telegram.items, в котором опишем доступные свойства бота:
Сохраняем файл и проверяем что все описанные Items прилинковали:
Автоматизация
Читайте также: