Как из 1С отправлять сообщения в группу Телеграмм

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

Поэтому начну заново.

Сначала создаем новый чат через Bot Father, инструкция.

В списке ботов BotFather заходим в наш чат и получаем его токен.

Далее использовал инструкцию по получению chat ID.

Находим нашего бота, заходим в него, нажимаем Старт.

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

Далее узнаем ID группы, можно через специальных ботов, но я просто пишу сообщение боту в приватной группе и смотрю в браузере лог изменений бота по адресу:

https://api.telegram.org/bot<Токен вашего бота>/getUpdates 

В разделе chat — id с отрицательным идентификатором получаю ID группы.

Сообщение отправляется кодом вида:

Функция ОтправитьСообщениеТелеграмм(ПрайсСсылка, ТекстСообщения) Экспорт
	ТелеграммИДЧата = ПрайсСсылка.ТелеграммИДЧата;
	Если ТелеграммИДЧата = "" Тогда
		Возврат Неопределено;
	КонецЕсли;
	Сообщение = Новый Структура();
	Сообщение.Вставить("text", ТекстСообщения);
	Сообщение.Вставить("method", "sendMessage");
	Сообщение.Вставить("token", ПрайсСсылка.ТелеграммТокенБота);
	Сообщение.Вставить("chat_id", ТелеграммИДЧата);
	Возврат остп_Мессенджеры.ОтправитьСообщениеТелеграмм(Сообщение);
КонецФункции

Функции по отправке сообщения в телеграмм:

Функция ОтправитьСообщениеТелеграмм(Сообщение) Экспорт     
 	//https://infostart.ru/1c/articles/1217332/
 
	Если Сообщение.Свойство("ИспользоватьПрокси") И  Сообщение.ИспользоватьПрокси = 1 
		И Сообщение.Свойство("СистемныйПроксиСервер") 
		Тогда
		URL = "http://" + Сообщение.СистемныйПроксиСервер;
		ИнтернетПрокси = Неопределено;
		ЗащищенноеСоединение = Неопределено;
	Иначе                                                                                
		//осипов
		URL = "https://" + АдресСервераTelegram() + "/bot" + Сообщение.token + "/" + Сообщение.method;
		ИнтернетПрокси = Неопределено;
		ЗащищенноеСоединение = ОбщегоНазначенияКлиентСервер.НовоеЗащищенноеСоединение();
	КонецЕсли;
	
	HTTPЗапрос = Новый HTTPЗапрос();
	
	chat_id = Сообщение.chat_id;
	Если ТипЗнч(chat_id) = Тип("Число") Тогда
		chat_id = XMLСтрока(chat_id);
	КонецЕсли;
	URL = URL + "?chat_id=" + chat_id;
	URL = URL + "&text=" + Сообщение.text;
	
	СтруктураURI = ОбщегоНазначенияКлиентСервер.СтруктураURI(URL);
	HTTPЗапрос.АдресРесурса = СтруктураURI.ПутьНаСервере;
	
	HTTPСоединение = Новый HTTPСоединение(СтруктураURI.Хост, СтруктураURI.Порт,,, ИнтернетПрокси, 20, 
		ОбщегоНазначенияКлиентСервер.НовоеЗащищенноеСоединение());
		
	Попытка
		HTTPОтвет = HTTPСоединение.ВызватьHTTPМетод("POST", HTTPЗапрос);
	Исключение
		ОписаниеОшибки = ОписаниеОшибки();
		остп_С.ЗаписьЖурналаРегистрацииНаСервере("ЧатТелеграмм",,,,ОписаниеОшибки);
		Возврат Неопределено;
	КонецПопытки;
	
	Если HTTPОтвет.КодСостояния = 200 Тогда
		
		Ответ = HTTPОтвет.ПолучитьТелоКакСтроку();
		ОтветСоответствие = ЧтениеJSONВСтруктуру(Ответ, Истина);
		
		Если ОтветСоответствие.Получить("ok") = Истина Тогда
			Возврат ОтветСоответствие;
		Иначе
			остп_С.ЗаписьЖурналаРегистрацииНаСервере("ЧатТелеграмм",,,,"Ошибка! Ответ сервера: " + HTTPОтвет.КодСостояния + Символы.ПС + HTTPОтвет.ПолучитьТелоКакСтроку());
		КонецЕсли;
	Иначе
		остп_С.ЗаписьЖурналаРегистрацииНаСервере("ЧатТелеграмм",,,,"Ошибка! Ответ сервера: " + HTTPОтвет.КодСостояния + Символы.ПС + HTTPОтвет.ПолучитьТелоКакСтроку());
	КонецЕсли;
	
КонецФункции


Функция ЧтениеJSONВСтруктуру(Знач СтруктураВСтроке, ВернутьСоответствие = Истина) Экспорт
	
	ЧтениеJSON = Новый ЧтениеJSON;
	ЧтениеJSON.УстановитьСтроку(СтруктураВСтроке);
	
	Возврат ПрочитатьJSON(ЧтениеJSON, ВернутьСоответствие);

КонецФункции

Функция АдресСервераTelegram()
	Возврат "api.telegram.org";
КонецФункции


Дополнительно использую обертку в серверном модуле для записи в журнал регистрации:

Процедура ЗаписьЖурналаРегистрацииНаСервере(ИмяСобытия, Уровень=Неопределено, ОбъектМетаданных=Неопределено, Данные=Неопределено, Комментарий=Неопределено, РежимТранзакции=Неопределено) Экспорт
    ЗаписьЖурналаРегистрации(ИмяСобытия, Уровень, ОбъектМетаданных, Данные, Комментарий, РежимТранзакции);
КонецПроцедуры
image_pdfimage_print

fixin

Программирую на 1С с 1999 года. В 1С просто Гений. В 2020 году ушел из офиса на вольные хлеба фриланса. Принимаю заказы.

Вам может также понравиться...

Добавить комментарий

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