Чат-бот Telegram и QlikView Qlik Sense. Интеграция через PHP
В этой статье я расскажу как создавать закрытый Telegram-канал, в который будут приходить важные оповещения. Плюс расскажу, как можно получать данные из QlikView и Qlik Sense с помощью чат-бота, которому Вы например пишите что хотите получить. Например, «Продажи за вчерашний день по Москве». И система Вам автоматически присылает отчет — картинку или Excel-файл.
Структура статьи будет выглядеть примерно так:
- Создание системы уведомлений в закрытом телеграм-канале (telegram канал, робот, отправка сообщений);
- Создание простого чат-бота (раскрою структуру приема и отправки сообщений);
- Создание команды для получения данных из приложения QlikView (с помощью API);
- Создание команды для получения данных из приложения Qlik Sense (с помощью API).
Создание системы уведомлений в закрытом Telegram-канале с применением QlikView или Qlik Sense
Процедура отправки сообщений в Telegram канал довольно простая. Нужно выполнить несколько действий, после которых станет доступным «интерфейс» отправки текстовых сообщений в телеграм-канал.
Краткий обзор шагов:
- Создать Telegram-канал;
- Создать бота;
- Получить все необходимые параметры объектов;
- Собрать URL-строку;
- Отправить в браузере сообщение (тестирование);
- Отправить сообщение из скрипта QlikView.
А теперь пройдемся более подробнее по шагам.
Шаг 1 — создаем закрытый телеграм-канал
Заходим в мобильное приложение Telegram и создаем закрытый телеграм-канал (все как на картинках).
Нажимаем «New Channel»:
Заполняем наименование канала и его описание:
Выбираем «Private Channel», чтобы в канал можно было зайти только по ссылке:
Закрытый телеграм создан:
Для Telegram канала выбираем фотографию:
Должен получиться вот такой вот закрытый Telegram-канал, в который мы будем посылать сообщения через чат-бота.
Шаг 2 — регистрируем чат-бота
Далее нам необходимо создать чат-бота. Для этих целей внутри самого Telegram есть системный чат-бот BotFather:
https://telegram.me/BotFather — BotFather (@BotFather) — «Отец» всех Чат-ботов в телеграм. Через него можно зарегистрировать и настроить своего чат бота. Пишем команду /help:
Чат-бот пришлет вариации команд, в том числе /newbot для создания бота. Выбираем эту команду:
BotFather предлагает ввести имя нашего бота (то, которое будет отображаться, можно на кириллице):
Imf09
Далее нам необходимо ввести USERNAME Бота, которое должно оканчиваться на bot:
Если имя занято, то BotFather предложит сделать попытку снова (пока не попадется свободный username):
Кликаем на наш бот и нажимаем START:
/start — это название команды. В дальнейшем в бот можно ввести список команд и каждой команде на стороне backend (на сервере) задать последовательность тех или иных действий.
При регистрации бота команда /start пустая:
Помните, чат бот BotFather выдал нам token? Это ключевая строка, без которой мы не сможем взаимодействовать с ботом. Скопируйте ее себе куда-нибудь. Если вдруг потеряете, то всегда сможете вернуться к BotFather и попросить прислать его токен снова.
Шаг 3 — Добавляем бота в качестве администратора в Telegram-канале (через мобильное приложение)
Чтобы бот смог присылать сообщения в телеграм-канал, его необходимо добавить в администраторы канала. Заходим в настройки канала и кликаем на Administrators:
Add Administrator — выбираем пункт «Добавить администратора»
Далее через @ пишем username бота:
Все — бот добавлен в качестве администратора в закрытый Telegram канал:
Шаг 4 — Получаем ID закрытого телеграм-канала для отправки сообщений через чат-бот и структура ссылки
У публичного телеграм канала chat_id начинается с @. А у приватного все немного сложнее. Заходим в наш телеграм канал, смотрим на адресную строку в браузере:
Для приватного телеграм канала необходимо взять цифры без буквы «c» и до знака «_». И добавить префикс -100.
https://api.telegram.org/bot######################/sendMessage?chat_id=-...Текст сообщения без каких либо кавычек (пробелы допускаются, некоторые знаки запрещены, о них позже)
Т.е. структура ссылки к API Telegram выглядит следующим образом:
Шаг 5 — Отправляем сообщение в telegram-канал через адресную строку в браузере
Берем сконструированный URL и вставляем в адресную строку браузера и нажимаем Enter. ВУАЛЯ:
Должны получить статус OK: TRUE
Переходим в телеграм канал и видим наше сообщение!
Шаг 6 — Отправляем сообщение в telegram-канал из QlikView 12
Теперь отправим простое сообщение из QlikView Script. Копируем наш URL, переходим в приложение QlikView 12 и выбираем Web Files:
Вбиваем наш URL:
Получаем строку. Эта строка будет каждый раз разная, но для начала мы формируем структуру запроса:
После того, как структура запроса сформирована, меняем название поля на *. Далее это поле можно назвать по человечески, но эту задачу здесь я решать пока не буду. В этой статье я раскрываю только принципы организации работы с чат ботом и телеграм каналом.
Загружаем скрипт:
В чат пришли два сообщения — первое, которое пришло после создания структуры скрипта, а второе после перезагрузки скрипта.
Специальные символы для текстовой строки (перенос строки и т.д.)
Если Вам необходимо в сообщении перенести строку, то необходимо использовать спецсимволы. Ниже приведен их список:
- %0A — символ переноса строки;
- … — …
Вне контура Qlik: отправка сообщения через PHP в телеграм-канал
Токен и chatID неправильный (исправил символы).