Подробное руководство по настройке отправки заявок с сайта в Telegram с помощью Google Tag Manager своими руками.
Возможности диспетчера тегов Google безграничны. С его помощью можно решать большое количество различных задач специалистов разного профиля — маркетологов, аналитиков, разработчиков. Чем больше я работаю с этим инструментом и чем больше знаю, тем больше понимаю, что ничего не знаю (с). Одной из таких нетривиальных задач, которую можно решить с помощью GTM, является отправка заявок с сайта в мессенджер Telegram.
Чтобы проще было понять, о чем идет речь, я записал короткое видео демонстрации того, что мы будем учиться отслеживать:
Пользователь заходит к вам на сайт, оставляет заявку, и вы сразу получаете ее в Telegram. Реализовать это можно самостоятельно, без каких-либо финансовых затрат, используя только возможности Telegram, Google Spreadsheet и Google Tag Manager.
Get Telegram Chat ID
Какой практический смысл этой настройки?
Вопрос хороший, особенно в текущих условиях рынка, когда владельцы бизнесов стараются настраивать проекты таким образом, чтобы получать лиды в CRM-системе, имея единую централизованную систему сбора данных о входящих обращениях с последующей возможностью построения сквозной аналитики.
Перед проведением 2 ноября 2020 года бесплатного вебинара на своем канале YouTube, на котором в режиме реального времени показывал данную настройку, я определил для себя несколько целей:
- продемонстрировать нестандартные возможности работы с Google Tag Manager;
- иметь запасной вариант приема обращений (дополнение к CRM-системе, e-mail и т.д.);
- потому что это бесплатно и просто, а значит каждый может попробовать настроить;
- забавы ради;
Полное видео трансляции можно посмотреть ниже:
Как это сделать?
Последовательность настройки отправки заявок с сайта в Telegram с помощью GTM сводится к нескольким простым шагам:
- создание Telegram-бота;
- получение token;
- активация бота;
- получение chat id;
- настройка извлечения данных из полей формы в Google Tag Manager + специальный тег;
- добавление кода в редактор скриптов с указанием всех настроек;
- отправка заявки с сайта и проверка, дошла ли она в Telegram;
Давайте рассмотрим каждый шаг подробнее.
Создание Telegram-бота
Рекомендация: для удобства работы и тестирования установите десктопную версию Telegram.
Главный бот BotFather
Нажмите на кнопку Start или введите /start:
Вы увидите список команд для создания бота или управлениями текущими (уже созданными):
Команды для бота
В списке есть команда /newbot. Данная функция позволяет создать нового бота. Вы можете прописать эту команду вручную в поле отправки сообщения или просто нажать на эту команду в списке:
Придумайте имя для бота и нажмите Enter (в моем примере — myfirstbot):
На следующем шаге выберете логин (username) для вашего бота. Он должен заканчиваться на bot. Например: TetrisBot или tetris_bot (в моем примере — moyLeadBot):
Логин (username) Telegram-бота
Если логин занят, вам придет уведомление: Sorry, this username is already taken. Please try something different. Вам нужно будет придумать другой username для своего бота
Сохраните токен, который бот вам пришлет в ответном сообщении (в моем примере — 1373742947:AAEULIWMmPCEAqSoduIYlIj-PezQrIjDmmE) . Он понадобится вам в дальнейшем.
Затем следует активировать бота. Чтобы это сделать, вам нужно найти его в поиске Telegram и нажать на Start:
Теперь необходимо получить chat id. Вставьте в браузер ссылку:
Источник: osipenkov.ru
Чат-бот Telegram и QlikView Qlik Sense. Интеграция через PHP
В этой статье я расскажу как создавать закрытый 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 и создаем закрытый телеграм-канал (все как на картинках).
Нажимаем «New Channel»:
Заполняем наименование канала и его описание:
Выбираем «Private Channel», чтобы в канал можно было зайти только по ссылке:
Закрытый телеграм создан:
Для Telegram канала выбираем фотографию:
Должен получиться вот такой вот закрытый Telegram-канал, в который мы будем посылать сообщения через чат-бота.
Шаг 2 — регистрируем чат-бота
Далее нам необходимо создать чат-бота. Для этих целей внутри самого Telegram есть системный чат-бот BotFather:
Чат-бот пришлет вариации команд, в том числе /newbot для создания бота. Выбираем эту команду:
BotFather предлагает ввести имя нашего бота (то, которое будет отображаться, можно на кириллице):
Далее нам необходимо ввести USERNAME Бота, которое должно оканчиваться на bot:
Если имя занято, то BotFather предложит сделать попытку снова (пока не попадется свободный username):
Кликаем на наш бот и нажимаем START:
/start — это название команды. В дальнейшем в бот можно ввести список команд и каждой команде на стороне backend (на сервере) задать последовательность тех или иных действий.
При регистрации бота команда /start пустая:
Помните, чат бот BotFather выдал нам token? Это ключевая строка, без которой мы не сможем взаимодействовать с ботом. Скопируйте ее себе куда-нибудь. Если вдруг потеряете, то всегда сможете вернуться к BotFather и попросить прислать его токен снова.
Шаг 3 — Добавляем бота в качестве администратора в Telegram-канале (через мобильное приложение)
Чтобы бот смог присылать сообщения в телеграм-канал, его необходимо добавить в администраторы канала. Заходим в настройки канала и кликаем на Administrators:
Add Administrator — выбираем пункт «Добавить администратора»
Все — бот добавлен в качестве администратора в закрытый Telegram канал:
Шаг 4 — Получаем ID закрытого телеграм-канала для отправки сообщений через чат-бот и структура ссылки
Для приватного телеграм канала необходимо взять цифры без буквы «c» и до знака «_». И добавить префикс -100.
https://api.telegram.org/bot######################/sendMessage?chat_id=-100#######################128578;
Шаг 6 — Отправляем сообщение в telegram-канал из QlikView 12
Теперь отправим простое сообщение из QlikView Script. Копируем наш URL, переходим в приложение QlikView 12 и выбираем Web Files:
Вбиваем наш URL:
Получаем строку. Эта строка будет каждый раз разная, но для начала мы формируем структуру запроса:
После того, как структура запроса сформирована, меняем название поля на *. Далее это поле можно назвать по человечески, но эту задачу здесь я решать пока не буду. В этой статье я раскрываю только принципы организации работы с чат ботом и телеграм каналом.
В чат пришли два сообщения — первое, которое пришло после создания структуры скрипта, а второе после перезагрузки скрипта.
Специальные символы для текстовой строки (перенос строки и т.д.)
Если Вам необходимо в сообщении перенести строку, то необходимо использовать спецсимволы. Ниже приведен их список:
Вне контура Qlik: отправка сообщения через PHP в телеграм-канал
Токен и chatID неправильный (исправил символы).
Источник: ivan-shamaev.ru
Пишем бота для telegram на node.js
Как оказывается, написать бота для telegram, как два пальца об асфальт.
Если кому-то нужно разработать бота для telegram или для другой платформы, напишите мне в VK — сделаем. Также интегрируем с 1С и остальными требуемыми программными продуктами.
Для чего можно использовать бота:
- Социальные боты в электронной коммерции. Боты-продажники;
- Боты напоминалки;
- Проводить обучение;
- Использоваться для управления умным домом и многое другое, все на что способна фантазия!
Итак, чтобы написать бота нам потребуется:
Вначале опишу какой простой бот получился в Telegram
Кстати можете посмотреть возможности ботов, на примере моего бота в телеграм, который позволяет вести список задач.
И так описание бота, который будем разрабатывать:
- умеет отправлять пользователю на запрос — классическую музыку рандомно
- Две клавиатуры прикрутил к нему обычную и инлайновую
- Отвечать на кое-какие сообщения
![]()
Начинаем писать бота в Telegram
В телеграм находим BotFather.
/newbot
Придумываем название боту. И имя юзера. Он нам выдаст токен, который будем использовать.
Также у него есть и другие команды, для задания описания бота, команд и прочего:
Начинаем разработку бота на Node.js
В консоли пишем:
npm init -y
для создания package.json и управления зависимостями.
npm install —save node-telegram-bot-api
Файл index.js получился такой самый простой:
const TelegramBot = require(‘node-telegram-bot-api’); const token = ‘СЮДА_ВСТАВЛЯЕМ_ТОКЕН_КОТОРЫЙ_ПОЛУЧИЛИ’; const bot = new TelegramBot(token, ); bot.onText(//echo (.+)/, (msg, match) => < const chatId = msg.chat.id; const resp = match[1]; // the captured «whatever» bot.sendMessage(chatId, resp); >); bot.on(‘message’, (msg) => < const chatId = msg.chat.id; bot.sendMessage(chatId, ‘Получили твое сообщение! Спасибо!’); >);
Вставляем свой токен, который получили от BotFather и можно его разместить на бесплатном хостинге Heroku, и все сразу заработает, самый простой ботик!
Но лучше токен, поместить в переменную окружения, также можно на Heroku.
Полезные ссылки по ботам Телеграм
Документация по ботам telegram находится: https://core.telegram.org/bots/api
Также есть сайт и на русском с описанием: https://tlgrm.ru/docs/bots/api
Описываю какой код бота для Телеграм получился
const fs = require(‘fs’);
Подключаем библиотеку для работы с файлами
const TelegramBot = require(‘node-telegram-bot-api’); const token = process.env.TELEGRAM_BOT_TOKEN; const bot = new TelegramBot(token, ); const idAdmin = 32949386;
Подключаем библиотеку node-telegram-bot-api, токен получаем из переменной окружения, и устанавливаем константу idAdmin — ему дополнительно сообщения потом будем слать.
bot.on(‘message’, (msg) => < const chatId = msg.chat.id; const first_name = msg.chat.first_name; if (msg.text) < const text = msg.text.toLowerCase(); if (~text.indexOf(«привет»)) < bot.sendMessage(chatId, ‘Приветик, ‘ + first_name + ‘!’); >else if (~text.indexOf(«start»)) < >else if (~text.indexOf(«закрыть»)) < bot.sendMessage(chatId, ‘Клавиатура закрыта’, < reply_markup: < remove_keyboard: true >>); > else if (~text.indexOf(«клав»)) < openKlava(chatId); >else if (~text.indexOf(«здраст»)) < bot.sendMessage(chatId, ‘Здравствуй, здравствуй, ‘ + first_name + ‘!’); >else if (~text.indexOf(«здравст»)) < bot.sendMessage(chatId, ‘Здравствуй, здравствуй, ‘ + first_name + ‘!’); >else if (~text.indexOf(«дур»)) < bot.sendMessage(chatId, » + first_name + ‘, не ругайся, а то обижусь!’); >else if (~text.indexOf(«туп»)) < bot.sendMessage(chatId, » + first_name + ‘, не ругайся, а то обижусь!’); >else if (~text.indexOf(«класи»)) < openClassik(chatId, first_name); >else if (~text.indexOf(«класси»)) < openClassik(chatId, first_name); >else if (~text.indexOf(«про автора»)) < bot.sendMessage(chatId, ‘Про автора бота’, < reply_markup: < inline_keyboard: [ [ < text: ‘Автор’, url: ‘https://polyakovdmitriy.ru’ >], [ < text: ‘Классика’, callback_data: ‘classik’ >] ] > >) > else < bot.sendMessage(chatId, » + first_name + ‘, я тебя не понимать!’); >> bot.forwardMessage(chatId, idAdmin, msg.message_id); >);
Здесь у нас в bot.on(‘message’ — прилетают все сообщения.
const chatId = msg.chat.id; — Достаем id чата.
const first_name = msg.chat.first_name; — Достаем имя пользователя.
Здесь: Если пришел текст привет — то бот отвечает: Приветик, Имя! if (~text.indexOf(«привет»)) < bot.sendMessage(chatId, ‘Приветик, ‘ + first_name + ‘!’);
И также остальные текстовые фразы обрабатывает.
bot.sendMessage(chatId, ‘Про автора бота’, < reply_markup: < inline_keyboard: [ [ < text: ‘Автор’, url: ‘https://polyakovdmitriy.ru’ >], [ < text: ‘Классика’, callback_data: ‘classik’ >] ] > >)
Этим кодом создается клавиатура инлайновая.
bot.forwardMessage(chatId, idAdmin, msg.message_id); — этим кодом все сообщения пересылаются админу.
bot.onText(//start/, (msg, match) => < const chatId = msg.chat.id; bot.sendMessage(chatId, ‘Приветик, ‘ + msg.chat.first_name + ‘!’); openKlava(chatId); >);
Здесь обрабатывается команда /start
bot.on(‘callback_query’, (query) => < const chatId = query.message.chat.id; if (query.data === ‘classik’) < openClassik(chatId, query.message.chat.first_name); >>);
Этим кодом обрабатывается callback — от инлайновой клавиатуры.
bot.on(‘contact’, (msg) => < const chatId = msg.chat.id; bot.sendMessage(chatId, ‘Спасибо! Ваш заказ принят, мы с Вами свяжемся!’); >);
Этим кодом отлавливается контакты, которые отправили боту, хотя их можно также отловить bot.on(‘message’ — сюда они тоже приходят.
function openKlava(chatId) < bot.sendMessage(chatId, ‘Клавиатура открыта’, < reply_markup: < keyboard: [ [ < text: ‘Классика’ >, < text: ‘Закрыть’ >], [ < text: ‘Заказать разработку бота’, request_contact: true >], [ < text: ‘Про автора’ >] ], one_time_keyboard: true > >) >
Здесь создаем клавиатуру.
request_contact: true — обозначает запрос контактов, также можно запрашивать локацию.
function openClassik(chatId, first_name) < fs.readdir(‘./klasik/’, function(err,files) < const rf = files[Math.floor(Math.random()*files.length)]; bot.sendMessage(chatId, » + first_name + ‘, лови классическую музыку!’); bot.sendAudio(chatId, ‘./klasik/’ + rf).then(()=>< bot.sendMessage(chatId, ‘И слушай!’); >); >) >
Этот код отправляет классическую музыку, случайно выбранную из папки ./klasik/
Итого файл index.js полностью:
const fs = require(‘fs’); const TelegramBot = require(‘node-telegram-bot-api’); const token = process.env.TELEGRAM_BOT_TOKEN; const bot = new TelegramBot(token, ); const idAdmin = 32949386; bot.on(‘message’, (msg) => < const chatId = msg.chat.id; const first_name = msg.chat.first_name; if (msg.text) < const text = msg.text.toLowerCase(); if (~text.indexOf(«привет»)) < bot.sendMessage(chatId, ‘Приветик, ‘ + first_name + ‘!’); >else if (~text.indexOf(«start»)) < >else if (~text.indexOf(«закрыть»)) < bot.sendMessage(chatId, ‘Клавиатура закрыта’, < reply_markup: < remove_keyboard: true >>); > else if (~text.indexOf(«клав»)) < openKlava(chatId); >else if (~text.indexOf(«здраст»)) < bot.sendMessage(chatId, ‘Здравствуй, здравствуй, ‘ + first_name + ‘!’); >else if (~text.indexOf(«здравст»)) < bot.sendMessage(chatId, ‘Здравствуй, здравствуй, ‘ + first_name + ‘!’); >else if (~text.indexOf(«дур»)) < bot.sendMessage(chatId, » + first_name + ‘, не ругайся, а то обижусь!’); >else if (~text.indexOf(«туп»)) < bot.sendMessage(chatId, » + first_name + ‘, не ругайся, а то обижусь!’); >else if (~text.indexOf(«класи»)) < openClassik(chatId, first_name); >else if (~text.indexOf(«класси»)) < openClassik(chatId, first_name); >else if (~text.indexOf(«про автора»)) < bot.sendMessage(chatId, ‘Про автора бота’, < reply_markup: < inline_keyboard: [ [ < text: ‘Автор’, url: ‘https://polyakovdmitriy.ru’ >], [ < text: ‘Классика’, callback_data: ‘classik’ >] ] > >) > else < bot.sendMessage(chatId, » + first_name + ‘, я тебя не понимать!’); >> bot.forwardMessage(chatId, idAdmin, msg.message_id); >); bot.onText(//start/, (msg, match) => < const chatId = msg.chat.id; bot.sendMessage(chatId, ‘Приветик, ‘ + msg.chat.first_name + ‘!’); openKlava(chatId); >); bot.on(‘callback_query’, (query) => < const chatId = query.message.chat.id; if (query.data === ‘classik’) < openClassik(chatId, query.message.chat.first_name); >>); bot.on(‘contact’, (msg) => < const chatId = msg.chat.id; bot.sendMessage(chatId, ‘Спасибо! Ваш заказ принят, мы с Вами свяжемся!’); >); function openClassik(chatId, first_name) < fs.readdir(‘./klasik/’, function(err,files) < const rf = files[Math.floor(Math.random()*files.length)]; bot.sendMessage(chatId, » + first_name + ‘, лови классическую музыку!’); bot.sendAudio(chatId, ‘./klasik/’ + rf).then(()=>< bot.sendMessage(chatId, ‘И слушай!’); >); >) > function openKlava(chatId) < bot.sendMessage(chatId, ‘Клавиатура открыта’, < reply_markup: < keyboard: [ [ < text: ‘Классика’ >, < text: ‘Закрыть’ >], [ < text: ‘Заказать разработку бота’, request_contact: true >], [ < text: ‘Про автора’ >] ], one_time_keyboard: true > >) >
Структура проекта получилась такая:
Успехов в создании ботиков!
Источник: polyakovdmitriy.ru