Каталог решений - Как отправить сообщение Telegram в группу?

Как отправить сообщение Telegram в группу?

Как отправить сообщение Telegram в группу?

В наличии

Отправка сообщения в группу Telegram.

Категория:

Описание

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

В организации уже был Telegram-бот и настроена рассылка сообщений пользователям с помощью этого бота, поэтому статья рассчитана на тех, кто с ботом работать уже умеет. Если не умеете, то на Infostart есть обработки и статьи, но это другая — отдельная тема.

На Infostart я простых материалов для отправки сообщений в группу Telegram не нашел. То, что было, было очень длинно и предлагалось изучить api Telegram. Но хотелось сделать это "малой кровью".

Так вот отправить сообщение в группу все-таки оказалось просто. Сначала я сумел сделать это с помощью утилиты curl. А поскольку сделать мне это удалось, то переделать отправку с помощью curl на 1С не составило большого труда. Нужен был всего лишь опыт работы с post-запросом.

Итак, что потребовалось сделать:

1. Создать бота-телеграм для отправки сообщений.

2. Добавить этого боту в группу.

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

4. Бота надо сделать администратором группы, чтобы он получил доступ к сообщениям.

5. Сам пример отправки сообщения с помощью curl из командной строки выглядит так:

curl -X POST "https://api.telegram.org/bot1641633011:AAHkAXbdj1RKTJYHCnJF7dZ8u9LMyWL8ba7/sendMessage" -d "chat_id=-1001222395108&text=my sample text"

Здесь: 

1) 1641633011:AAHkAXbdj1RKTJYHCnJF7dZ8u9LMyWL8ba7 — токен моего бота

2) -1001222395108 — id группы, куда я отправлял ботом сообщение. id группы начинается с символа "-" в отличии от id пользователя, например.

3) my sample text — текст тестового сообщения

Потом я просто переписал это для 1С. Код не самодостаточный, но рассчитано на то, что код работы с ботом у вас уже есть. Вот пример кода:

// Это для сообщения в группу от чат-бота служебных сообщений
&НаСервере
Функция ОтправитьСлужебноеСообщениеTelegramВГруппу(ИдентрификаторЧата,ТекстСообщения) Экспорт
	ПараметрыЗапроса = Новый Структура;
	ПараметрыЗапроса.Вставить("chat_id",ИдентрификаторЧата);
	ПараметрыЗапроса.Вставить("text",ТекстСообщения);
	Ответ = ОтправитьЗапросСлужебныеСообщенияВГруппу("sendMessage",ПараметрыЗапроса);
	Если Ответ <> Неопределено и Ответ.КодСостояния =  200 Тогда
		Возврат Истина;
	Иначе 
		Возврат Ложь;
	КонецЕсли; 
КонецФункции

Функция ОтправитьЗапросСлужебныеСообщенияВГруппу(Команда,ПараметрыЗапроса)
	#Область Проверки
	ТокенТелеграм = Константы.ТокенТелеграмСлужебныеСообщения.Получить();
	СерверТелеграм = Константы.СерверТелеграм.Получить();
	Если Не ЗначениеЗаполнено(ТокенТелеграм) Тогда
		Сообщить("Не заполнен токен");
		Возврат Неопределено;
	КонецЕсли; 
	Если Не ЗначениеЗаполнено(СерверТелеграм) Тогда
		Сообщить("Не заполнен сервер телеграм");
		Возврат Неопределено;
	КонецЕсли; 
	Прокси = ПолучитьПрокси();
	Соединение  =  Новый HTTPСоединение(СерверТелеграм,443,,,Прокси,,Новый ЗащищенноеСоединениеOpenSSL());
	Если Соединение = Неопределено Тогда 
		Сообщить("Не удалось установить соединение");
		Возврат Неопределено;
	КонецЕсли;
	#КонецОбласти
	#Область Запроса
	ТекстЗапроса = "bot" + ТокенТелеграм + "/"+Команда;
	Если ЗначениеЗаполнено(ПараметрыЗапроса) Тогда
		ПервыйПараметр = Истина;
		Для каждого Эл Из ПараметрыЗапроса Цикл
			Если ПервыйПараметр Тогда
				ТекстЗапроса = ТекстЗапроса+"?";
				ПервыйПараметр = Ложь;
			Иначе 
				ТекстЗапроса = ТекстЗапроса+"&";
			КонецЕсли;
			ТекстЗапроса = ТекстЗапроса+Эл.Ключ+"=-"+Эл.Значение;
		КонецЦикла;
	КонецЕсли;
	Запрос = новый HTTPЗапрос(ТекстЗапроса);
	Ответ = Соединение.ВызватьHTTPМетод("POST", Запрос);	
	#КонецОбласти
	Если Ответ.КодСостояния <>  200 Тогда
		Ответ = Неопределено
	КонецЕсли; 
	
	Возврат Ответ
КонецФункции

 

has been added to your cart:
Оформление заказа