Секретные записки WEB-программиста




100mbru, bitrix, CentOS, cms, drupal, joomla, LAMP, linux, mysql, nicru, Open-Source, php, Red Hat, seo, Typo3, ubuntu, win, windows, авто, администрирование, алгоритмы, алкоголь, бизнес, битрикс, видео, военмех, выборы, германия, джино, домены, интересности, исследования, картинки, кино, компьютеры, ливия, магазин, маразм, мастерхост, обработка-изображений, пейнтбол, политика, политэкономия, прикольное-видео, программирование, путешествия, работа, религия, рунет, сайтостроение, сео, сми, технологии, украина, форум, хиханьки, холивары, хостинг

Отправка персональных сообщений и оповещений из Битрикса в Телеграмм

19.03.2019

I. Подготовка Битрикса

1. В разделе Настройки -> Настройки продукта -> Пользовательские поля создаёте у объекта USER два новых поля: TELEGRAMM_BOT_TOKEN и TELEGRAMM_CHAT_ID

2. Выводите их в настройках в какую-нибудь вкладку для удобного заполнения

3. Создаёте обработчик события OnBeforeMessageNotifyAdd:

 
function OnBeforeMessageNotifyAdd($ar){

 global $USER;
 $rsUser=CUser::GetByID($ar["TO_USER_ID"]); // кому отправляем PM
 $toUser = $rsUser->Fetch();
 
 if(($toUser["UF_TELEGRAMM_BOT_TOKEN"]>"") && ($toUser["UF_TELEGRAMM_CHAT_ID"]>"")){ // исполняем только если у адресата прописаны реквизиты телеграмм

 $token =$toUser["UF_TELEGRAMM_BOT_TOKEN"];
 $chat_id=$toUser["UF_TELEGRAMM_CHAT_ID"];
 
 if($ar["MESSAGE_OUT"]>"")$txt=str_replace("#BR#"," ",$ar["MESSAGE_OUT"]);
 else $txt=$ar["MESSAGE"];

 if($ar["FROM_USER_ID"]>0) {
 $rsUser=CUser::GetByID($USER->GetID());
 $fromUser = $rsUser->Fetch();
 $txt="[".$fromUser["LAST_NAME"]." ".$fromUser["NAME"]."] ".$txt;
 }
 
 $sendToTelegram = fopen("https://api.telegram.org/bot{$token}/sendMessage?chat_id={$chat_id}&parse_mode=html&text={$txt}","r");

 }
}
 
 для отправки заявки с сайта в Telegram нужен бот и соответствующий чат, где бот будет работать. Нужно их создать:

II. Подготовка бота (для каждого пользователя)

1. Для начала в поиске контактов Telegram вводим @BotFather. Это «отец» ботов, позволяющий прозводить с ними некоторые манипуляции. В том числе и создать бота (все скриншоты показаны на примере Telegram for Windows).

2. Нажимаем кнопку Start в чате с BotFather, после чего нашему вниманию выпадет список доступных команд. Можем найти сами нужную команду и кликнуть, а можем написать прямо в чат: «/newbot», без кавычек естественно.

3. Далее нас попросят ввести имя бота. Будьте внимательны и избирательны, ведь Telegram работает по всему миру и огромное количество имен уже заняты.

4. После успешного ввода имени потребуется ввести username бота, по которому его можно будет найти в поиске.

5. Когда подберете верное имя для бота, вам придет последнее нужное сообщение от BotFather, содержащее в себе так называемый «токен» (см. пример на фото). Данный токен пригодится Вам для дальнейших действий, сохраните его.

III. Подготовка чата (для каждого пользователя)

1. Далее нужно создать групповой чат (New Group). Называем этот чат, и добавляем туда уже созданного бота через поиск (вводим @maxgrbot_bot, в моем случае). Днелать это нужно с телефона (с аккаунта телеграмма) каждого пользователя который будет получать сообщения из Битрикс дабы только он имел доступ.

2. Следующий шаг — присоединить бота к чату. Делается это командой «/join @my_bot» в вашем созданном чате.

3. Затем, кликнув по «my_bot» (т.е. названию вашего бота, оно то у вас другое будет), переходите в личный чат с ним и нажимаете кнопку Start.

Перейти в браузере по ссылке вида: https://api.telegram.org/botXXXXXXXXXXXXXXXXXXXXXXXXX/getUpdates - только вместо ХХХ...ХХХ нужно подставить токен вашего бота. У вас должно появиться несколько строк кода. Среди них — находите id, значение которого указано с минусом. Это chat_id

IV. Прописываем api_bot и chat_id пользователям

записываем в поля TELEGRAMM_BOT_TOKEN и TELEGRAMM_CHAT_ID на странице пользователя в админке

II. Подготовка бота (для каждого пользователя)