1С 8.3 Отправка файлов в Телеграм чат
Данные > Примеры кода 1С > 1С 8.3 Telegram
Перейти в раздел примеры кода 1С 8.3:
Telegram bot - отправка файлов в телеграм из 1С 8.3:
// Отправка файла в Телеграм чат
&НаСервере
Функция ОтправитьФайлВтелеграм(ПутьКФайлу)
//Через BotFather создаём бота (для регистрации нового бота должен быть уникальный UserName)
//Инструкция есть здесь: https://botcreators.ru/blog/botfather-instrukciya/
//В конце операции получаем Access token
AccessToken = "Access token";
//Получаем Chat ID Телеграм заранее написав боту любое сообщение
//https://api.telegram.org/bot123456789:XXXXXX-X-XXXX-XXXXXXXXXXXXXXXXXXXXXX/getUpdates,
//где 123456789:XXXXXX-X-XXXX-XXXXXXXXXXXXXXXXXXXXXX - это токен нашего бота
ServerTg = "api.telegram.org";
ChatID = "123456789";
ФайлОтправки = Новый Файл(ПутьКФайлу);
СтрокаСоединения = "bot" + AccessToken + "/sendDocument";
// Разделитель;
Boundary = "----"+Строка(Новый УникальныйИдентификатор());
// Определяем массив для процедуры ОбъединитьФайлы;
МассивФайловДляОбъединения = Новый Массив;
// Формируем начальный фрагмент файла POST-запроса;
ИмяФайлаОтправкиНачало = ПолучитьИмяВременногоФайла("txt");
ФайлОтправки = Новый ЗаписьТекста(ИмяФайлаОтправкиНачало, КодировкаТекста.UTF8);
// Формируем конечный фрагмент файла POST-запроса;
ИмяФайлаЗаписи = ПолучитьИмяВременногоФайла("txt");
ФайлаЗаписи = Новый ЗаписьТекста(ИмяФайлаЗаписи, КодировкаТекста.UTF8);
ТекстОтправки = "";
ТекстОтправки = ТекстОтправки + "--" + Boundary + Символы.ПС;
ТекстОтправки = ТекстОтправки + "Content-Disposition: form-data; name=""chat_id""" + Символы.ПС + Символы.ПС + СтрЗаменить(Формат(ChatID, "ЧДЦ=0; ЧС=; ЧРГ=.; ЧГ=0"), ".", "") + Символы.ПС;
ТекстОтправки = ТекстОтправки + "--" + Boundary + Символы.ПС;
ТекстОтправки = ТекстОтправки + "Content-Disposition: form-data; name=""document""; filename=""/" + ФайлОтправки.Имя + """" + Символы.ПС;
// Записываем ФайлОтправки;
ФайлОтправки.ЗаписатьСтроку(ТекстОтправки);
ФайлОтправки.Закрыть();
ТекстОтправки = "" + Символы.ПС;
ТекстОтправки = ТекстОтправки + "--" + Boundary+"--";
// Записываем ФайлаЗаписи;
ФайлаЗаписи.ЗаписатьСтроку(ТекстОтправки);
ФайлаЗаписи.Закрыть();
// Заполняем массив;
МассивФайловДляОбъединения.Добавить(ИмяФайлаЗаписи);
МассивФайловДляОбъединения.Добавить(ИмяФайлаОтправкиНачало);
МассивФайловДляОбъединения.Добавить(СокрЛП(ПутьКФайлу));
// Формируем ИмяФайлаОтправки;
ИмяФайлаОтправки = ПолучитьИмяВременногоФайла("txt");
ОбъединитьФайлы(МассивФайловДляОбъединения, ИмяФайлаОтправки);
HTTPЗапрос = Новый HTTPЗапрос;
Заголовки = Новый Соответствие;
// Формируем Заголовки HTTP Запроса;
HTTPЗапрос.Заголовки.Вставить("Connection", "keep-alive");
HTTPЗапрос.Заголовки.Вставить("Content-Type", "multipart/form-data; boundary="+Boundary);
HTTPЗапрос.УстановитьИмяФайлаТела(ИмяФайлаОтправки);
// Установим АдресРесурса;
HTTPЗапрос.АдресРесурса = СтрокаСоединения;
SSL = Новый ЗащищенноеСоединениеOpenSSL();
СоединениеHTTP = Новый HTTPСоединение(ServerTg, 443,,,,, SSL);
Попытка
// POST запрос;
Ответ = СоединениеHTTP.ОтправитьДляОбработки(HTTPЗапрос);
КодСостояния = Ответ.КодСостояния;
СтрокаОтвета = Ответ.ПолучитьТелоКакСтроку();
Если КодСостояния = 200 Тогда
// Читаем JSON;
ЧтениеJSON = Новый ЧтениеJSON;
ЧтениеJSON.УстановитьСтроку(СтрокаОтвета);
РезультатСтруктура = ПрочитатьJSON(ЧтениеJSON);
Если РезультатСтруктура.ok = Истина Тогда
СтруктураMessage = РезультатСтруктура.result;
КонецЕсли;
Иначе
Сообщить("КодСостояния " + КодСостояния);
Сообщить(СтрокаОтвета);
КонецЕсли;
Исключение
// Здесь может быть обработчик ошибки или вход в резервную функцию
КонецПопытки;
КонецФункции
&НаСервере
Функция ОтправитьФайлВтелеграм(ПутьКФайлу)
//Через BotFather создаём бота (для регистрации нового бота должен быть уникальный UserName)
//Инструкция есть здесь: https://botcreators.ru/blog/botfather-instrukciya/
//В конце операции получаем Access token
AccessToken = "Access token";
//Получаем Chat ID Телеграм заранее написав боту любое сообщение
//https://api.telegram.org/bot123456789:XXXXXX-X-XXXX-XXXXXXXXXXXXXXXXXXXXXX/getUpdates,
//где 123456789:XXXXXX-X-XXXX-XXXXXXXXXXXXXXXXXXXXXX - это токен нашего бота
ServerTg = "api.telegram.org";
ChatID = "123456789";
ФайлОтправки = Новый Файл(ПутьКФайлу);
СтрокаСоединения = "bot" + AccessToken + "/sendDocument";
// Разделитель;
Boundary = "----"+Строка(Новый УникальныйИдентификатор());
// Определяем массив для процедуры ОбъединитьФайлы;
МассивФайловДляОбъединения = Новый Массив;
// Формируем начальный фрагмент файла POST-запроса;
ИмяФайлаОтправкиНачало = ПолучитьИмяВременногоФайла("txt");
ФайлОтправки = Новый ЗаписьТекста(ИмяФайлаОтправкиНачало, КодировкаТекста.UTF8);
// Формируем конечный фрагмент файла POST-запроса;
ИмяФайлаЗаписи = ПолучитьИмяВременногоФайла("txt");
ФайлаЗаписи = Новый ЗаписьТекста(ИмяФайлаЗаписи, КодировкаТекста.UTF8);
ТекстОтправки = "";
ТекстОтправки = ТекстОтправки + "--" + Boundary + Символы.ПС;
ТекстОтправки = ТекстОтправки + "Content-Disposition: form-data; name=""chat_id""" + Символы.ПС + Символы.ПС + СтрЗаменить(Формат(ChatID, "ЧДЦ=0; ЧС=; ЧРГ=.; ЧГ=0"), ".", "") + Символы.ПС;
ТекстОтправки = ТекстОтправки + "--" + Boundary + Символы.ПС;
ТекстОтправки = ТекстОтправки + "Content-Disposition: form-data; name=""document""; filename=""/" + ФайлОтправки.Имя + """" + Символы.ПС;
// Записываем ФайлОтправки;
ФайлОтправки.ЗаписатьСтроку(ТекстОтправки);
ФайлОтправки.Закрыть();
ТекстОтправки = "" + Символы.ПС;
ТекстОтправки = ТекстОтправки + "--" + Boundary+"--";
// Записываем ФайлаЗаписи;
ФайлаЗаписи.ЗаписатьСтроку(ТекстОтправки);
ФайлаЗаписи.Закрыть();
// Заполняем массив;
МассивФайловДляОбъединения.Добавить(ИмяФайлаЗаписи);
МассивФайловДляОбъединения.Добавить(ИмяФайлаОтправкиНачало);
МассивФайловДляОбъединения.Добавить(СокрЛП(ПутьКФайлу));
// Формируем ИмяФайлаОтправки;
ИмяФайлаОтправки = ПолучитьИмяВременногоФайла("txt");
ОбъединитьФайлы(МассивФайловДляОбъединения, ИмяФайлаОтправки);
HTTPЗапрос = Новый HTTPЗапрос;
Заголовки = Новый Соответствие;
// Формируем Заголовки HTTP Запроса;
HTTPЗапрос.Заголовки.Вставить("Connection", "keep-alive");
HTTPЗапрос.Заголовки.Вставить("Content-Type", "multipart/form-data; boundary="+Boundary);
HTTPЗапрос.УстановитьИмяФайлаТела(ИмяФайлаОтправки);
// Установим АдресРесурса;
HTTPЗапрос.АдресРесурса = СтрокаСоединения;
SSL = Новый ЗащищенноеСоединениеOpenSSL();
СоединениеHTTP = Новый HTTPСоединение(ServerTg, 443,,,,, SSL);
Попытка
// POST запрос;
Ответ = СоединениеHTTP.ОтправитьДляОбработки(HTTPЗапрос);
КодСостояния = Ответ.КодСостояния;
СтрокаОтвета = Ответ.ПолучитьТелоКакСтроку();
Если КодСостояния = 200 Тогда
// Читаем JSON;
ЧтениеJSON = Новый ЧтениеJSON;
ЧтениеJSON.УстановитьСтроку(СтрокаОтвета);
РезультатСтруктура = ПрочитатьJSON(ЧтениеJSON);
Если РезультатСтруктура.ok = Истина Тогда
СтруктураMessage = РезультатСтруктура.result;
КонецЕсли;
Иначе
Сообщить("КодСостояния " + КодСостояния);
Сообщить(СтрокаОтвета);
КонецЕсли;
Исключение
// Здесь может быть обработчик ошибки или вход в резервную функцию
КонецПопытки;
КонецФункции
0
комментарии
____________________
Перепечатка текста и фотографий разрешена при наличии прямой ссылки на источник