Contents
- 1 Чат-бот Telegram и QlikView Qlik Sense. Интеграция через PHP
- 2 Создание системы уведомлений в закрытом Telegram-канале с применением QlikView или Qlik Sense
- 2.1 Шаг 1 — создаем закрытый телеграм-канал
- 2.2 Шаг 2 — регистрируем чат-бота
- 2.3 Шаг 3 — Добавляем бота в качестве администратора в Telegram-канале (через мобильное приложение)
- 2.4 Шаг 4 — Получаем ID закрытого телеграм-канала для отправки сообщений через чат-бот и структура ссылки
- 2.5 Шаг 5 — Отправляем сообщение в telegram-канал через адресную строку в браузере
- 2.6 Шаг 6 — Отправляем сообщение в telegram-канал из QlikView 12
- 2.7 Специальные символы для текстовой строки (перенос строки и т.д.)
- 3 Вне контура Qlik: отправка сообщения через PHP в телеграм-канал
- 4 Последовательность разработки чат-бота для Telegram
- 5 Как отправить сообщение пользователю через чат-бот Telegram?
- 6 Строка запуска WebHook (установка URL для WebHook Telegram Server)
- 7 Ошибка в Qlik «Bad Request: message text must be encoded in UTF-8»
- 8 Еще один пример реализации Telegram Chat Bot на PHP
- 9 Применение Chat Bot Telegram в бизнес-аналитике QlikView
В этой статье я расскажу как создавать закрытый Telegram-канал, в который будут приходить важные оповещения. Плюс расскажу, как можно получать данные из QlikView и Qlik Sense с помощью чат-бота, которому Вы например пишите что хотите получить. Например, «Продажи за вчерашний день по Москве». И система Вам автоматически присылает отчет — картинку или Excel-файл.
Чат-бот Telegram и QlikView Qlik Sense. Интеграция через PHP
Статья будет писаться постепенно и кусками. Подписывайтесь на мой Telegram-канал https://t.me/qlik_insight, чтобы не пропустить новую литературу по QlikView и Qlik Sense, а также самые «мощные», с технологической точки зрения, статьи.
Структура статьи будет выглядеть примерно так:
- Создание системы уведомлений в закрытом телеграм-канале (telegram канал, робот, отправка сообщений);
- Создание простого чат-бота (раскрою структуру приема и отправки сообщений);
- Создание команды для получения данных из приложения QlikView (с помощью API);
- Создание команды для получения данных из приложения Qlik Sense (с помощью API).
Создание системы уведомлений в закрытом Telegram-канале с применением QlikView или Qlik Sense
Процедура отправки сообщений в Telegram канал довольно простая. Нужно выполнить несколько действий, после которых станет доступным «интерфейс» отправки текстовых сообщений в телеграм-канал.
Краткий обзор шагов:
- Создать Telegram-канал;
- Создать бота;
- Получить все необходимые параметры объектов;
- Собрать URL-строку;
- Отправить в браузере сообщение (тестирование);
- Отправить сообщение из скрипта QlikView.
А теперь пройдемся более подробнее по шагам.
Шаг 1 — создаем закрытый телеграм-канал
Заходим в мобильное приложение Telegram и создаем закрытый телеграм-канал (все как на картинках).
Заполняем наименование канала и его описание:
Выбираем «Private Channel», чтобы в канал можно было зайти только по ссылке:
Закрытый телеграм создан:
Для Telegram канала выбираем фотографию:
Должен получиться вот такой вот закрытый Telegram-канал, в который мы будем посылать сообщения через чат-бота.
Шаг 2 — регистрируем чат-бота
Далее нам необходимо создать чат-бота. Для этих целей внутри самого Telegram есть системный чат-бот BotFather:
- https://telegram.me/BotFather — BotFather (@BotFather) — «Отец» всех Чат-ботов в телеграм. Через него можно зарегистрировать и настроить своего чат бота. Пишем команду /help:
Чат-бот пришлет вариации команд, в том числе /newbot для создания бота. Выбираем эту команду:
BotFather предлагает ввести имя нашего бота (то, которое будет отображаться, можно на кириллице):
Далее нам необходимо ввести 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=-100######################&text=Текст сообщения без каких либо кавычек (пробелы допускаются, некоторые знаки запрещены, о них позже)
Т.е. структура ссылки к API Telegram выглядит следующим образом:
Шаг 5 — Отправляем сообщение в telegram-канал через адресную строку в браузере
Берем сконструированный URL и вставляем в адресную строку браузера и нажимаем Enter. ВУАЛЯ:
Должны получить статус OK: TRUE
Переходим в телеграм канал и видим наше сообщение! 🙂
Шаг 6 — Отправляем сообщение в telegram-канал из QlikView 12
Теперь отправим простое сообщение из QlikView Script. Копируем наш URL, переходим в приложение QlikView 12 и выбираем Web Files:
Вбиваем наш URL:
Получаем строку. Эта строка будет каждый раз разная, но для начала мы формируем структуру запроса:
После того, как структура запроса сформирована, меняем название поля на *. Далее это поле можно назвать по человечески, но эту задачу здесь я решать пока не буду. В этой статье я раскрываю только принципы организации работы с чат ботом и телеграм каналом.
Загружаем скрипт:
В чат пришли два сообщения — первое, которое пришло после создания структуры скрипта, а второе после перезагрузки скрипта.
Специальные символы для текстовой строки (перенос строки и т.д.)
Если Вам необходимо в сообщении перенести строку, то необходимо использовать спецсимволы. Ниже приведен их список:
- %0A — символ переноса строки;
- … — …
Вне контура Qlik: отправка сообщения через PHP в телеграм-канал
Токен и chatID неправильный (исправил символы).
1 2 3 4 5 6 7 8 9 10 11 |
<?php $ch = curl_init(); $message = "Текстовое сообщение для отправки"; $tokenAccess = "243669416:ATFm98SmocwLERsqWztIMAPgHEQ5YUWKaXE"; $chatId = "-1001109374812"; curl_setopt($ch, CURLOPT_URL,'https://api.telegram.org/bot' . $tokenAccess . '/sendMessage?chat_id=' . $chatId . '&text=' . $message); curl_setopt($ch, CURLOPT_POST, 1); curl_setopt($ch, CURLOPT_RETURNTRANSFER, true); curl_exec ($ch); curl_close ($ch); ?> |
Последовательность разработки чат-бота для Telegram
Схема работы PHP, WebHook и Telegram
Webhook — механизм оповещения пользователей системы о событиях.
Как отправить сообщение пользователю через чат-бот Telegram?
Для того, чтобы отправить сообщение пользователю, необходимо выполнить несколько действий:
- Откройте чат с ботом и напишите ему произвольное сообщение
- Перейдите в браузере по ссылке https://api.telegram.org/bot<TelegramBotToken>/getUpdates, заменив на полученный токен от @BotFather
- В полученном json-ответе найдите значение в параметре result->message->chat->id, это и есть Ваш персональный
- Откройте браузер и перейдите по ссылке, заменив и на свои данные
https://api.telegram.org/bot<TelegramBotToken>/sendMessage?chat_id=&text=Первое сообщение в персональный чат с Chat Bot Telegram
Строка запуска WebHook (установка URL для WebHook Telegram Server)
https://api.telegram.org/bot281913351:CCccwsdCsdnt4SWd8OsdD1-GWavQCrgZGHk/setWebhook?url=https://domen.ru/telegram/bot.php
ВАЖНО — ДОМЕН ОБЯЗАТЕЛЬНО ДОЛЖЕН РАБОТАТЬ ЧЕРЕЗ HTTPS!!!!!!!!!!!!!!!!!
После того, как вобьете в строку браузера URL, должен поступить ответ от Telegram Сервера:
1 |
{"ok":true,"result":true,"description":"Webhook was set"} |
Если пришел другой ответ, то значит где-то ошибка.
Ниже будет приведен код php скрипта с меню:
В файле bot.php лежит php скрипт обработки команд для бота. Пример php скрипта с демо-меню для чата:
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 |
<?php $botToken = "225850916:AAEmCS9mocw0irfRqWztIMAPg5Kl9384KKUWKaXE"; $website = "https://api.telegram.org/bot".$botToken; $content = file_get_contents("php://input"); $update = json_decode($content, TRUE); $message = $update["message"]; $chatId = $message["chat"]["id"]; $text = $message["text"]; $MessageBot = "Тестовый ответ"; if($text === "/bob") { file_get_contents($website."/sendmessage?chat_id=".$chatId."&text=".$MessageBot); } $msg = "Нажмите на ссылку"; $replyMarkup['keyboard'][] = array("Ссылка раз","Ссылка два"); $replyMarkup['keyboard'][] = array("Ссылка три"); $replyMarkup['keyboard'][] = array("Форматировать мозг 😅"); $MessageBot = "Тестовый ответ 222"; if (substr_count($update["message"]["text"],'Ссылка раз')) { $msg = "Тут текст который видит юзер если нажмет кнопку 1"; } if (substr_count($update["message"]["text"],'Ссылка два')) { $msg = "Тут текст который видит юзер если нажмет кнопку 1"; } $sendto ="https://api.telegram.org/bot$botToken/sendmessage?parse_mode=HTML&chat_id=".$chatId."&text=".urlencode($msg)."&disable_web_page_preview=true&reply_markup=".json_encode($replyMarkup); file_get_contents($sendto); ?> |
Подробнее про создания чат-бота Telegram можно почитать здесь
https://golos.io/ru—obrazovanie/@tristamoff/sozdat-svoego-bota-v-telegram-prosto-kak-dvazhdy-dva
Ошибка в Qlik «Bad Request: message text must be encoded in UTF-8»
Что делать, если Вы в QlikView отправляете сообщение и получаете ошибку:
1 |
{"ok":false,"error_code":400,"description":"Bad Request: message text must be encoded in UTF-8"} |
Надо перекодировать сообщение в формат UTF-8:
1 |
LET vMessageToTelegram = ApplyCodepage('Текст соообщения для отправки через чат-бот',65001); |
Еще один пример реализации Telegram Chat Bot на PHP
В этой главе я приведу скрипт php для создания вот такого вот чат-бота (Перейти в демо-чат бот>>>):
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 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 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 |
<?php $botToken = "471473027:AAG1CSx3RfdwAwfDr43oSXWPA2Dpn_WKTRqBDg"; $website = "https://api.telegram.org/bot".$botToken; $content = file_get_contents("php://input"); $update = json_decode($content, TRUE); $message = $update["message"]; $chatId = $message["chat"]["id"]; $text = $message["text"]; $MessageBot = "Привет! Это чат-бот для рассылки QlikView-отчетности. Выберите пункт меню."; if($text === "/start") { file_get_contents($website."/sendmessage?chat_id=".$chatId."&text=".$MessageBot); } $msg = "Выберите пункт меню:"; $replyMarkup['keyboard'][] = array("Продажи","Финансы","HR"); $replyMarkup['keyboard'][] = array("Маркетинг","Логистика"); $replyMarkup['keyboard'][] = array("Производство","PR"); $replyMarkup['keyboard'][] = array("Консалтинг QlikView"); if ($update["message"]["text"] == "Продажи") { $replyMarkupProdagi['keyboard'][] = array("Продажи подпункт 1"); $replyMarkupProdagi['keyboard'][] = array("Продажи подпункт 2"); $replyMarkupProdagi['keyboard'][] = array("Продажи подпункт 3"); $replyMarkupProdagi['keyboard'][] = array("Вернутся в главное меню"); $sendto ="https://api.telegram.org/bot$botToken/sendmessage?parse_mode=HTML&chat_id=".$chatId."&text=".urlencode($msg)."&disable_web_page_preview=true&reply_markup=".json_encode($replyMarkupProdagi); file_get_contents($sendto); exit; } if ($update["message"]["text"] == "Маркетинг") { $replyMarkupProdagi['keyboard'][] = array("Маркетинг подпункт 1"); $replyMarkupProdagi['keyboard'][] = array("Маркетинг подпункт 2"); $replyMarkupProdagi['keyboard'][] = array("Маркетинг подпункт 3"); $replyMarkupProdagi['keyboard'][] = array("Вернутся в главное меню"); $sendto ="https://api.telegram.org/bot$botToken/sendmessage?parse_mode=HTML&chat_id=".$chatId."&text=".urlencode($msg)."&disable_web_page_preview=true&reply_markup=".json_encode($replyMarkupProdagi); file_get_contents($sendto); exit; } if ($update["message"]["text"] == "Финансы") { $replyMarkupProdagi['keyboard'][] = array("Финансы подпункт 1"); $replyMarkupProdagi['keyboard'][] = array("Финансы подпункт 2"); $replyMarkupProdagi['keyboard'][] = array("Финансы подпункт 3"); $replyMarkupProdagi['keyboard'][] = array("Вернутся в главное меню"); $sendto ="https://api.telegram.org/bot$botToken/sendmessage?parse_mode=HTML&chat_id=".$chatId."&text=".urlencode($msg)."&disable_web_page_preview=true&reply_markup=".json_encode($replyMarkupProdagi); file_get_contents($sendto); exit; } if ($update["message"]["text"] == "Логистика") { $replyMarkupProdagi['keyboard'][] = array("Логистика подпункт 1"); $replyMarkupProdagi['keyboard'][] = array("Логистика подпункт 2"); $replyMarkupProdagi['keyboard'][] = array("Логистика подпункт 3"); $replyMarkupProdagi['keyboard'][] = array("Вернутся в главное меню"); $sendto ="https://api.telegram.org/bot$botToken/sendmessage?parse_mode=HTML&chat_id=".$chatId."&text=".urlencode($msg)."&disable_web_page_preview=true&reply_markup=".json_encode($replyMarkupProdagi); file_get_contents($sendto); exit; } if ($update["message"]["text"] == "Производство") { $replyMarkupProdagi['keyboard'][] = array("Производство подпункт 1"); $replyMarkupProdagi['keyboard'][] = array("Производство подпункт 2"); $replyMarkupProdagi['keyboard'][] = array("Производство подпункт 3"); $replyMarkupProdagi['keyboard'][] = array("Вернутся в главное меню"); $sendto ="https://api.telegram.org/bot$botToken/sendmessage?parse_mode=HTML&chat_id=".$chatId."&text=".urlencode($msg)."&disable_web_page_preview=true&reply_markup=".json_encode($replyMarkupProdagi); file_get_contents($sendto); exit; } if ($update["message"]["text"] == "HR") { $replyMarkupProdagi['keyboard'][] = array("HR подпункт 1"); $replyMarkupProdagi['keyboard'][] = array("HR подпункт 2"); $replyMarkupProdagi['keyboard'][] = array("HR подпункт 3"); $replyMarkupProdagi['keyboard'][] = array("Вернутся в главное меню"); $sendto ="https://api.telegram.org/bot$botToken/sendmessage?parse_mode=HTML&chat_id=".$chatId."&text=".urlencode($msg)."&disable_web_page_preview=true&reply_markup=".json_encode($replyMarkupProdagi); file_get_contents($sendto); exit; } if ($update["message"]["text"] == "PR") { $replyMarkupProdagi['keyboard'][] = array("PR подпункт 1"); $replyMarkupProdagi['keyboard'][] = array("PR подпункт 2"); $replyMarkupProdagi['keyboard'][] = array("PR подпункт 3"); $replyMarkupProdagi['keyboard'][] = array("Вернутся в главное меню"); $sendto ="https://api.telegram.org/bot$botToken/sendmessage?parse_mode=HTML&chat_id=".$chatId."&text=".urlencode($msg)."&disable_web_page_preview=true&reply_markup=".json_encode($replyMarkupProdagi); file_get_contents($sendto); exit; } if ($update["message"]["text"] == "Консалтинг QlikView") { $vBIConsult = "https://biconsult.ru"; file_get_contents($website."/sendmessage?chat_id=".$chatId."&text=".$vBIConsult); file_get_contents($sendto); } $sendto ="https://api.telegram.org/bot$botToken/sendmessage?parse_mode=HTML&chat_id=".$chatId."&text=".urlencode($msg)."&disable_web_page_preview=true&reply_markup=".json_encode($replyMarkup); file_get_contents($sendto); exit; ?> |
Применение Chat Bot Telegram в бизнес-аналитике QlikView
Прошло время, когда электронная почта была передовым средством обмена информацией. Сейчас происходит настоящая революция в мире обмена информацией. Помимо того, что появляются продвинутые инструменты обработки информации, так ее еще можно получать в любой момент времени на телефон. Вот так вот просто: зашли в мессенджер, выбрали отчет и Вам его скидывает электронный помощник.
В настоящий момент есть возможность создания Чат-Бота в Telegram, который по запросу будет присылать вам персональный отчет: например, показатели по каналам продаж в разрезе территорий. Или карту России в цветовой палитре, которая характеризует уровень продаж или уровень рентабельности того или иного региона. И все это в любое время и в любом месте, благо телефон всегда под рукой. И не нужно больше писать ИТ-специалистам или аналитикам, чтобы они сформировали и выслали отчет. При этом, стоит отметить, что чат боты имеют существенное преимущество — во-первых это дешевле, чем готовые ИТ-решения (по сравнению с другими продуктами), во-вторых Вы сами определяете, когда хотите посмотреть отчет, в-третьих огромная гибкость системы оповещений через мессенджер Telegram.
Бизнес-аналитика с помощью чат-бота выходит на новый этап. Помимо того, что можно запрашивать информацию о деятельности вашей компании, также можно автоматизировать бизнес-аналитику по конкурентам: получать информацию о количестве акционных товарных позициях конкурента на его сайте. Какие маркетинговые акции проводятся в социальных сетях, по каким товарным позициям были снижены цены и т.д. Или к примеру, Вы закупили определенный товар на склад, а конкурент снизил цену. Вы об этом сразу же узнаете и разработаете стратегию борьбы с конкурентами.
Формат рассылки отчетов в Telegram может быть абсолютно любым: pdf-файл, excel-файл, картинка, предложение с показателями и т.д. Вплоть до воспроизведения текстов с помощью Yandex-голосового помощника (например, Вы едите на машине и слушаете главные новости о топовом ассортименте сбыта за вчерашний день и т.д.).
Заказать чат-бота Telegram и аналитическую систему QlikView Вы можете на сайте «Консультационные услуги QlikView».
Немного об этапах работ по разработке чат-бота и аналитической системы
- сначала создается приложение QlikView для анализа данных,
- затем создаются отчёты (цели отчетов, формат отчетов, количество, прописываются аналитики и показатели),
- Далее разрабатывается чат-бот, который эти отчёты формирует и присылает Вам.
Расскажу немного про сценарии использования чат-бота Телеграм.
Представьте свое утро. Вы проснулись. Налили себе горячего кофе, взяли смартфон и вместо того, чтобы пролистывать новостную ленту в социальной сети или на новостном портале — открываете Телеграм и читаете краткую историю за вчерашний день.
«Общая сумма продаж за вчерашний день N млн рублей. Топ-3 продаж по продуктам: G, I и Y. Лидеры продаж: Иванов Семен, Владимир Конюхов и Константин Денисов. Худшие продажи: 3 сотрудника. 3 наибольшие дебиторские задолженности у компаний: Компания 1 — $$$, Компания 2 — $$$, Компания 3 — $$$».
Или
«Вася Иванов сделал столько-то звонков, но продал на $$$. А Петя Сидоров сделал звонков меньше, но продажи $$$».
И вся эта информация поступает на свежую голову и пока Вы добираетесь до работы — Вам может прийти в голову идея.
2 Comments