Уведомления с MODX в Telegram

Уведомления с MODX в Telegram MODX Revo
В данном уроке разберем, как настроить отправку различных уведомлений в Telegram из MODX: отправка форм, заказов, редактирование ресурсов.

Заводим себе бота

Для этого запускаем телеграмм, и ищем пользователя @botfather, выбираем его и запускаем, набрав /start и Enter (если работаете c ПК) или отправить. После чего должны прийти все доступные команды. Для создания нового бота, выбираем (/newbot).

Создание нового бота

После чего botFather попросит нас ввести название бота (Alright, a new bot. How are we going to call it? Please choose a name for your bot.). Я написал (web-revenue). Вводите свое имя и отправляете.

Потом botFather попросит ввести имя пользователя (Username). Username должен заканчиваться на Bot или _bot. Это то имя, по которому можно будет этого бота найти (в моем случае @webrev_bot). Вводите и отправляете.

После этого всего должно прийти сообщение о создании бота с токеном. Он то нам и нужен, запишите его.

Вводите свое имя и отправляете.

Дальше добавляем своего бота в контакт лист (запустите его и что-нибудь напишите).

Запускаем своего бота

Теперь нам нужно узнать ID бота, для этого, заходим по ссылке:

https://api.telegram.org/bot<bot_token>/getUpdates

где <bot_token> — тот самый токен который мы получили ранее (Use this token to access the HTTP API: токен).

Там подсматриваем свой id:

Смотрим ID бота
Записываем его рядом с токеном) Теперь у нас есть все необходимые данные чтобы можно было отправлять уведомления в телегу, например подставляя текст в ссылку:

https://api.telegram.org/bot<bot_token>/sendMessage?chat_id=<id>&text=<text>

Отправка сообщений с FormIt + AjaxForm в Telegram

Для того чтобы дублировать сообщения с AjaxForm (в связке с FormIt), на просто FormIt не тестировал, необходимо написать хук и добавить его в вызовы форм!

Создаем сниппет с именем sendMessageTelegram (это и есть хук) со следующим кодом:

<?php
$token = "<token>";
$chat_id = "<chat_id>";

$values = $hook->getValues();

// Получаем название формы
$formName = $modx->getOption('formName', $formit->config, 'form-'.$modx->resource->get('id'));

// Получаем ip адрес отправителя
$ip = $modx->getOption('REMOTE_ADDR', $_SERVER, '');

// Берем данные с формы
$name = $values['name'];
$phone = $values['phone'];
$email = $values['email'];
$message = $values['message'];

// Создаем массив данных
$arr = array(
"Название формы" => $formName,
"IP" => $ip,
"Имя" => $name);

if($phone){
	$arr["Телефон"] = $phone;
}

if($email){
	$arr["Email"] = $email;
}

if($message){
	$arr["Текст сообщения"] = $message;
}

$txt = '<strong>Заполнена форма - '.$formName."</strong>\n";
// Цикл по массиву (собираем сообщение)
foreach($arr as $key => $value) { 
     $txt .= "<strong>".$key."</strong>: ".$value." \n"; 
  }

// Отправляем сообщение посредством cURL
$website="https://api.telegram.org/bot".$token;
$params=[
    'chat_id' => $chat_id,
    'text' => $txt,
	'parse_mode' => 'html'
];
$ch = curl_init($website . '/sendMessage');
curl_setopt($ch, CURLOPT_HEADER, false);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($ch, CURLOPT_POST, 1);
curl_setopt($ch, CURLOPT_POSTFIELDS, ($params));
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false);
$result = curl_exec($ch);
$modx->log(MODX_LOG_LEVEL_ERROR, $result);
curl_close($ch);

//Возвращаем true – это особенность написания хуков для FormIt.
return true;

Здесь вам нужно вписать вместо <token> — свой токен, <chat_id> — id чата бота.

Где берем данные с формы и создаем массив указываются названия полей (из формы или форм) и их расшифровка.

Заполняем хук

Важно! В данном хуке использует синтаксис fenom, по этому у вас обязательно должен быть установлен компонент PdoTools и должны быть включены настройки pdotools_fenom_default и pdotools_fenom_modx.

Теперь подключаем наш хук к вызову формы, пример:

[[!AjaxForm?
                        &form=`tpl.AjaxForm.kon`
                        &snippet=`FormIt`
                        &hooks=`email,sendMessageTelegram`
                        &emailSubject=`Обратная связь с сайта [[++site_name]]`
                        &emailTo=`[[++emailsender]]`
                        &emailFrom=`info@site.ru`
                        &emailTpl=`tpl.email.o`
                        &validationErrorMessage=`В форме содержатся ошибки!`
                        &successMessage=`Спасибо за вашу заявку! В ближайшее время с Вами свяжется наш специалист.`
                    ]]

После чего можно попробовать отправить тестовое сообщение, делать это лучше в режиме инкогнито. Если все сделали правильно, форма прилетит в телегу боту.

Результат работы бота

Уведомления о заказах из MiniShop2 в Telegram

Устанавливаем с репозитория modstore бесплатно дополнение msTelegram. После чего идете в системные настройки, там есть 2 опции:

  • mstelegram_token, сюда вводим токен.
  • mstelegram_recepients, сюда вводим id чатов, кто будет получать уведомления.

И проверяем чтобы плагин был повешен на событие msOnCreateOrder

msOnCreateOrder

Все)

MODX — уведомления об обновлениях ресурсов

К примеру у вас есть проект на котором копирайтеры , журналисты или к примеру SEO специалисты наполняют сайт и вы хотите быть в курсе, что вам публикуют. Тогда создайте плагин, с именем telegram со следующим кодом:

<?php
$title= $resource->get('pagetitle');
$alias= $resource->get('uri');

if ($resource->get('published') == "1")  {

$fp=fopen("https://api.telegram.org/bot<bot_token>/sendMessage?chat_id=<id>&text={$title} http://site.info/{$alias}","r"); 
while(!feof($fp)) 
{  $content .= fread($fp,1024); } 
fclose($fp); };

Не забудьте в коде поставить свой токен и id, после чего вешаем плагин на системные события, например такие:

Системные события публикаций ресурсов и тикетов

И пользуемся) Надеюсь информация для вас является полезной!

Поделиться с друзьями
Алексей

Веб-дизайнер и SEO оптимизатор. Занимаюсь созданием сайтов с 2010 года и их продвижение с 2012 года!

Оцените автора
( Пока оценок нет )
Web-Revenue.ru