Как из 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"; КонецФункции
Дополнительно использую обертку в серверном модуле для записи в журнал регистрации:
Процедура ЗаписьЖурналаРегистрацииНаСервере(ИмяСобытия, Уровень=Неопределено, ОбъектМетаданных=Неопределено, Данные=Неопределено, Комментарий=Неопределено, РежимТранзакции=Неопределено) Экспорт ЗаписьЖурналаРегистрации(ИмяСобытия, Уровень, ОбъектМетаданных, Данные, Комментарий, РежимТранзакции); КонецПроцедуры




Свежие комментарии