Написал для себя, чтобы уведомлять сотрудников нашей организации об изменениях в документах. Пробовал другие подобные обработки, но они не имели прокси сервера и были громоздкими. Поэтому решил немного сделать по-своему.
Прокси можете изменить под себя на любой другой.
Тестировал на платформе версии 1с 8.3.11
Конфигурация 1с не имеет значение. Главное чтобы было на УправляемыхФормах.
1. Запускаете обработку
2. Указываете Token чатбота Телеграм. Как получить токен и как создать чатБота Телеграм - можете загуглить - это просто, но могу пояснить:
а) Чтобы создать ЧатБота надо добавить себе в телеграме @BotFather - он выдаст инструкцию по созданию. Остается задать логин ЧатБоту. После этого вы получите Токен.
б) Чтобы пользователи могли получать сообщения от 1с надо чтобы они добавили себе вашего новосозданного ЧатБота.
3. Указываете ID пользователя Телеграм. Как узнать свой ID - нажмите на @userinfobot в Телеграме. Напишите например "привет". Получите свой id. Либо ваш знакомый может таким же способом получить свой ID и отправить его Вам что бы вы по его id отправили сообщение. Сообщение придёт от ЧатБота.
4. Пишите сообщение и нажимаете "Отправить". Готово!
Вот весь код обработки:
&НаСервере
Процедура ОправитьНаСервере()
Если НЕ ЗначениеЗаполнено(ТекстСообщения) Тогда
Возврат;
КонецЕсли;
ПроксиСервер = "socks5://jqlwb.teletype.live"; // Собственно вот здесь мы и обращаемся через socks5
ПроксиПорт = 1080;
ПроксиПользователь = "telegram";
ПроксиПароль = "telegram";
ИнтернетПрокси = Новый ИнтернетПрокси;
ИнтернетПрокси.Установить("https", ПроксиСервер, ПроксиПорт, ПроксиПользователь, ПроксиПароль);
ЗащищенноеСоединение = Новый ЗащищенноеСоединениеOpenSSL(Новый СертификатКлиентаWindows, Новый СертификатыУдостоверяющихЦентровWindows);
Ресурс = "bot" + Token + "/sendMessage?chat_id=" + СтрЗаменить(Формат(ID, "ЧДЦ=; ЧС=; ЧРГ=."), ".", "") + "&text= " + ТекстСообщения;
Соединение = Новый HTTPСоединение("api.telegram.org",443,,,ИнтернетПрокси,,ЗащищенноеСоединение);
Запрос = Новый HTTPЗапрос(Ресурс);
Ответ = Соединение.Получить(Запрос);
КодСостояния = Ответ.КодСостояния;
СтрокаОтвета = Ответ.ПолучитьТелоКакСтроку();
Если КодСостояния=200 тогда
ЧтениеОтвета = Новый ЧтениеJSON;
ЧтениеОтвета.УстановитьСтроку(СтрокаОтвета);
РезультатСтруктура = ПрочитатьJSON(ЧтениеОтвета);
Если РезультатСтруктура.ok = Истина Тогда
СтруктураMessage = РезультатСтруктура.result;
КонецЕсли;
Иначе
Сообщить("КодСостояния "+КодСостояния);
Сообщить(СтрокаОтвета);
КонецЕсли;
КонецПроцедуры
&НаКлиенте
Процедура Оправить(Команда)
ОправитьНаСервере();
КонецПроцедуры