Отправка заявок в Telegram с Modx

Отправка заявок в Telegram

Очень удобно для тех кто не настроил CRM и принимает заявки на почту. В телегу они приходят на много быстрее и в отличии от почты ей больше пользуются и быстрее перезванивают.

Для отправки заявок в телеграм нам нужно много чего сделать.. но приступим.

Создаем бота с помощью BotFather

  1. Переходим по ссылке
  2. Нажимаем запустить — можете ознакомиться с меню и доступными возможностями
  3. Нажимаем или пишем /newbot — создаем нового бота
  4. Пишем имя вашего бота латиницей —  (будет отображается при поиске, например jrabbit) если имя свободно придет сообщение что все Хорошо.
  5. Вводите имя пользователя латиницей заканчивающееся на bot (дальше будем работать с этим пользователем, например jrabbit_bot) если свободен, то придет Токен.
  6. Готово. Копируем токен или просто запоминаем, до его использования еще долго.
Отправка заявок в Telegram

Создаем группу для заявок

Теперь нам нужно создать группу для заявок. Также туда можно добавить нужных менеджеров и тп. Ну и немного общаться в ней, а не только заявки принимать.

  1. Нажимаем Меню и выбираем Создать группу (пишем любое название и сохраняем)
  2. Переходим в группу и выбираем Информация о группе
  3. Нажимаем добавить участников (иконка +чел) — в появившемся окне пишем Имя Пользователя бота (jrabbit_bot) и добавляем
  4. В управление группой выбираем Администраторы и выставляем разрешения и права нашему новому пользователю/боту. Главное чтобы был доступ к Сообщениям.. и пишем должность (например Почтальон)
  5. Готово. Дальше можете настроить чат на свое усмотрение (аватар, история сообщений, стикеры и тп)

Получение ID группы у Telegram

А тут начинается веселуха. Работает не всегда и приходится тыкать настройки группы. Пока попробуем на текущих.

  1. Отправляем в чат любое сообщение со своего аккаунта
  2. Копируем ссылку ниже и вместо XXX вставляем наш полученный Токен
  3. Получаем код и радуемся, значит все сработало. Если нет, то пробуем другую ссылку по той же схеме.
  4. В этом коде ищем ID группы. Ctrl + F (Запрос chat":{"id":- ) — id группы начинается с минуса (пример -1001897938090)
  5. Готово. Копируем айдишник телеграм группы.

Ссылки для определения группы

  • https://api.telegram.org/botXXX/getUpdates?offset=-10
  • https://api.telegram.org/botXXX/getUpdates
  • https://api.telegram.org/botXXX/getChat?chat_id=@Username

Пример с токеном https://api.telegram.org/bot5715967662:AAG9tbE9aEEr0sn_AywFQOMBdyLB7qqNCeY/getUpdates

Внимание! По этой ссылке видно пользователей писавших сообщения в группе. Сама переписка типа закодирована.

Получение ID группы у Telegram

Создание сниппета FormitTelegram для Modx

Самое сложное прошли. Теперь осталось создать сниппет, вставить туда наши токены, айдишники и показать какие поля будут уходить в телегу.

Название сниппета указываем FormitTelegram

Далее идет код. Я его где то давно подсмотрел, немного переписал и пользуюсь.

Из-за синтаксиса fenom в 57 строке стоит три пробела после фигурной скобки.. их нужно будет удалить!
                                        		    
                                                        $token = "5778708487:AAFp2GzgDdCSqkc31UMa4nDOENby2_p-xA"; // токен бота
$chat_id = "-1001817403524"; // id группы

$values = $hook->getValues();

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

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

//Создаем переменные с данными формы. указываем значение name 
$name = $values['name'];
$phone = $values['phone'];
$email = $values['email'];
$message = $values['message'];

//Создаем массив с условием если поле заполнено
if($name){ 
	$arr["Имя"] = $name;
}

if($phone){ 
    // убираем лишние символы
    $tel = str_replace(array('+', '(', ')', ' ', '-'), '', $phone);
    $arr["Телефон"] = '%2b' . $tel;

    // можно сделать ссылку на whatsapp или telegram
    $url_w = urlencode('https://wa.me/+' . $tel);
    $url_t = urlencode('https://t.me/+' . $tel);
    $arr["Написать в WhatsApp"] = $url_w;
    $arr["Написать в Telegram"] = $url_t;
}

if($email){ 
	$arr["E-mail"] = $email;
}

if($message){ 
	$arr["Сообщение"] = $message;
}

// Простой вывод без условия
if($metka){ 
	$arr["%0AМетка"] = $metka; // %0A - дополнительный перенос строки.. типа 
$arr["%0AСтраница"] = $pagetitle; $arr["Ссылка"] = $pagelink; $arr["IP"] = $ip; } // Заголовок $txt = "Заявка с JRabbit%0A%0A"; // Цикл по массиву (собираем сообщение) foreach($arr as $key => $value) { $txt .= "".$key.": ".$value."%0A"; } //Отправляем сообщение // Внимание!!! из-за синтаксиса fenom тут стоит три пробела после фигурной скобки.. их нужно будет удалить $fp=fopen("https://api.telegram.org/bot{ $token}/sendMessage?chat_id={ $chat_id}&parse_mode=html&text={ $txt}","r"); //Возвращаем true return true;

Добавляем Хук в вызов Formit

Теперь нужно добавить наш сниппет в вызов AjaxForm.

При отправке заявки сообщение будет приходить и на почту и в телеграм.

                                        		    
                                                        'hooks' => 'validate, email, FormItSaveForm, FormitTelegram',                                                    
                                                

Все! Теперь заявки с Modx будут отправляться в Telegram

Вот так просто мы начали отправлять заявки в телегу.

Наверное можно как то отформатировать текст в сообщении, чтобы приходили не ссылки, а кликабельный линкт.. Но до этого пока не дошли руки. Если знаешь как это сделать — черкани в комменты.

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

Все! Теперь заявки с Modx будут отправляться в Telegram

Бонус для тех у кого не Modx, а чисто PHP

Скрипт такой же, но нет привязки в движку. Ну и условий там нет. Но работает.

                                        		    
                                                        // Проверяем заполнено ли поле с телефоном
if (isset ($_POST['phone'])){
	$title = 'Название компании';// это заголовок 
	$city = $_POST['city'];// это что ловим с формы 
	$name = $_POST['name'];
	$phone = $_POST['phone'];
	$email = $_POST['email'];
	$metka = $_POST['metka']; 
	$url = $_SERVER['HTTP_REFERER'];
	$ip = $_SERVER['REMOTE_ADDR'];
	
	// убираем лишние символы у телефона
	$tel = str_replace(array('+', '(', ')', ' ', '-'), '', $phone);

	$token = "5408105598:AAFg4f_O45Yo4Qbl2pkDN2369kCvqH5Zbtk"; // Это ТОКЕН
	$chat_id = "-1001569582592"; // Это id группы

	$arr = array(
	  'Заявка с ' => $title . ' - ' . $city,
	  'Имя: ' => $name, 
	  'Телефон: ' => '%2b' . $tel,
	  '%0AМетка: ' => $metka,
	  'Страница: ' => $url,
	  'IP: ' => $ip,
	);

	foreach($arr as $key => $value) {
	  $txt .= "".$key." ".$value."%0A";
	};
	
	// Пробелы после фигурной скобки надо удалить
	$sendToTelegram = fopen("https://api.telegram.org/bot{ $token}/sendMessage?chat_id={ $chat_id}&parse_mode=html&text={ $txt}","r");
};                                                    
                                                
24 Март 2023 г.
modx, telegram

Комментарии ()

Написать комментарий

*Комментарий будет опубликован после проверки модератором

Хотите так же?
Мы сделаем лучше!

Оставьте свои контакты и мы рассчитаем предварительную стоимость проекта.
Выберите удобный способ связи
Спасибо!
Ваша заявка принята.