Сборщик заявок в телеграмм бота MODX Revolution

Для начала в telegram нужно создать бота. Для этого в строке поиска введите BotFather (это официальный сервис для настройки и управления созданными телеграм-ботами).

Далее, после первой команды /newbot следуем подсказкам Отца Ботов) Не с первого раза, но удается подобрать подходящее название для нашего бота и мы получаем наш токен (в ссылке — [token]). 

Добавляем бота себе в телеграм, запускаем и пишем ему 2-3 сообщения сообщения — это обязательно, без этого дальше ничего работать не будет! Теперь нужно узнать id. Для этого переходим по ссылке:

 https://api.telegram.org/bot[token]/getUpdates

Заменяем слова [token] на ваш токен из последнего сообщения BotFather и видим свой id. Если не видим — пишем боту еще раз.

id telegram bota

Теперь у нас есть всё, чтобы сделать сбор заявок или любой другой информации из формы на сайте.

Рабочий пример я взяла с сайта — https://dart.agency/blog/integraczii/otpravka-soobshheniya-v-telegram-v-modx-revo.html

Пишем хук для FormIt, заменяем token и chat_id на полученные вами данные, прописываем хук в AjaxForm и радуемся жизни! Если информации в хуке лишком много — просто удаляем лишние строки или добавляем если мало.


< ? php
$token = "";
$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'];
$subject = $values['subject'];
$text = $values['text'];

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

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

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

if($subject){
	$arr["Тема сообщения"] = $subject;
}

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

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

В итоге получаем вот такую красоту: