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

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

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

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

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

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

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

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

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

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

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

  1. Копируем ссылку ниже и вместо XXX вставляем наш полученный Токен
  2. Отправляем в чат любое сообщение со своего аккаунта
  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

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

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

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

                                        		    
                                                        getObject('modResource', 2); // Ресурс с полями
$subject = $res->getTVValue('form_subject'); // Заголовок сообщения
$token = $res->getTVValue('send_telegram_token'); // Токен бота
$chat_id = $res->getTVValue('send_telegram_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'];
$metka = $values['metka'];
$yacity = $values['yacity'];
$city = $values['city'];
$message = $values['message'];
$pagelink = $values['pagelink'];
$pagetitle = $values['pagetitle'];
$utm_source = $values['utm_source'];
$utm_medium = $values['utm_medium'];
$utm_term = $values['utm_term'];
$original_ref = $values['original_ref'];


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

if($phone){
    // можно сделать ссылку на whatsapp или telegram
    $tel = str_replace(array('+', '(', ')', ' ', '-'), '', $phone);
    $url_w = urlencode('Написать');
    $url_t = urlencode('Написать');   
	$arr["Телефон"] = '%2b' . $tel;
	$arr["WhatsApp"] = $url_w;
	$arr["Telegram"] = $url_t;
}


if($email){
	$arr["E-mail"] = $email;
}
if($city){
	$arr["Город"] = $city;
}
if($message){
	$arr["Сообщение"] = $message;
}


#Квиз
if ($values['quiz_discont']){
    $arr["%0AРезультат Квиз"] = $values['quiz_discont'];
    
    foreach ($values as $key => $val) {
        if (preg_match('/quiz_answer(\d+)/', $key, $match)) {
            $arr[$values['quiz_question'.$match[1]]] = implode(' ', $values['quiz_answer'.$match[1]]);
        }
    }
}


if($metka){
	$arr["%0AМетка"] = $metka;
	$arr["Город по IP"] = $yacity;
	$arr["%0AСтраница"] = urlencode('' . $pagetitle . '');
	$arr["IP"] = $ip;
}

if($utm_source){
	$arr["Источник"] = $utm_source;
}
if($utm_medium){
	$arr["Тип рекламы"] = $utm_medium;
}
if($utm_term){
	$arr["Ключевое слово"] = $utm_term;
}
if($original_ref){
	$arr["Рефер"] = $original_ref;
}


$txt = "" . $subject . "%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 или FetchIt.

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

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

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

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

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

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

Все! Теперь сообщения с Modx будут отправляться в Telegram
24 Март 2023 г.
modx, telegram

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

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

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

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

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