[ВсеПросто] "Оперативный" информатор из 1С за 5 мин.

Программирование - Практика программирования

190
Быть всегда в курсе дел, даже в дороге!

Данную статью решил написать, для того чтобы показать как "просто" сделать "просто". Статей на портале достаточно много и с описанием, и с открытыми кодами, и с платными решениями, вот некоторые из них:

Но все они достаточно "сложны" для старта, если Вы вообще не "бум-бум" в данном вопросе.

Вот все, что нам надо:

  1. Установить "Telegram" и зарегистрироваться в нем (банально, комментарии давать не буду).
  2. Создать своего бота. Инструкция по регистрации нового робота. (в гугл док - просто и доступно, спасибо Телеграм бот. Отчеты на мобильном устройстве без изменения конфигурации (Telegram bot)). Нам надо запомнить Токен его вид такой: NNNNNNN:SSSSSSSSSSSSSSSSSSSSSS
  3. Добавить только что созданного бота в свой контакт лист, через поиск контактов и запустить его (в окне общения с ботом выбираем «Запустить» или «Старт»)
  4. Отправить боту любое сообщение, хоть "точку" (необходимо чтобы узнать ID Вашего чата с ботом).
  5. Выполняем код в консоли кода 1С или пишем обработку с таким кодом: 
    Соединение  =  Новый HTTPСоединение("api.telegram.org",443,,,,,Новый ЗащищенноеСоединениеOpenSSL());
    ПолучениеЗапрос = "bot"+ТокенБота+"/getUpdates";
    Запрос = Новый HTTPЗапрос(ПолучениеЗапрос);
    Ответ = Соединение.Получить(Запрос);
    
    ЧтениеJSON = Новый ЧтениеJSON();
    ЧтениеJSON.УстановитьСтроку(Ответ.ПолучитьТелоКакСтроку());
    Результат = ПрочитатьJSON(ЧтениеJSON);
    ЧтениеJSON.Закрыть();
    
    МассивСообщений = Результат.result;
    Для каждого СтруктураСообщения из МассивСообщений Цикл
    	Отправитель = ""+СтруктураСообщения.message.from.first_name+" "+СтруктураСообщения.message.from.last_name;
    	ИДЧата = Формат(СтруктураСообщения.message.chat.id, "ЧГ=");
    	
    	Сообщить(СтрШаблон("Отправитель: %1; ID чата: %2", Отправитель, ИДЧата));
    КонецЦикла;
    
  6. Ищем себя и запоминаем свой ID чата
  7. У нас все есть для отправки сообщения из 1С вот код:
    ПроизвольныйТекст = "Тест";
    Соединение  =  Новый HTTPСоединение("api.telegram.org",443,,,,,Новый ЗащищенноеСоединениеOpenSSL());
    ПолучениеЗапрос = "bot"+ТокенБота+"/sendMessage?chat_id="+IDЧата+"&text="+ПроизвольныйТекст;
    Запрос = Новый HTTPЗапрос(ПолучениеЗапрос);
    Соединение.Получить(Запрос);
    

     

Если все сделано правильно Вам прилетит сообщение в "Telegram".

Код написанный в п.7 можно использовать для любого информирования(сервер не доступен; регламентное задание не отработано; платежку с зарплатой выгрузили в "Клиент-банк" и так далее все зависит от Вашей фантазии).

Ну а дальше уже можно разбираться во всеми дополнительными плюшками ботов.

К вопросу, где будет работать?

Весь код проверен на УПП 1.3

1С:Предприятие 8.3 (8.3.10.2561) 

Режим совместимости Версия 8.2.13

Надеюсь, статья была полезной :)

190

См. также

Комментарии
Сортировка: Древо
1. nomadon 288 22.02.18 18:07 Сейчас в теме
Две ссылки на мою публикация, прям популярность)

А вообще если совсем прям что бы просто можно например на oscript или powershell написать батник или бинарник, куда вписать данные по id и ключа и вызывать его с одним параметром - сообщение, будет удобно не только из 1с юзать, можно на тригеры бэкапов админами поставить, или перезагрузку сервера
kote; hulio; +2 Ответить
22. nixel 509 10.04.18 17:40 Сейчас в теме
(1) на оскрипте, к слову, есть библиотека, которая умеет отправлять в телеграм.
2. Alexander174 23.02.18 13:49 Сейчас в теме
Подскажите нубу, пожалуйста: как реализовать отправку из 1с собственной клавиатуры с действиями? Чтобы не писать одно и тоже, а заказывать отчёт одним кликом
3. DarkAn 729 23.02.18 15:53 Сейчас в теме
(2) данный вопрос рассмотрен вот тут (один из коментов выше приведенных статей. Там кстати много интересного в комментах)
Alexander174; +1 Ответить
4. Anton64 212 24.02.18 17:36 Сейчас в теме
Странно, что Вы не указали в списке решений конструктор уведомлений из 1С в Телеграм
По поводу пунктов 4-6, более простой вариант узнать свой ID или ID группы: https://t.me/getid4bot
5. DarkAn 729 24.02.18 19:22 Сейчас в теме
(4) Спасибо за ссылку на бота и на статью!
По поводу статьи, у меня не было повода кого то рекламировать или скрывать, просто дал ссылки на статьи от куда сам начинал.
6. brrart 22 26.02.18 08:18 Сейчас в теме
Еще бы такой-же до боли простой и понятный пример отправки картинки - цены бы тебе не было
7. Vanch90 26.02.18 10:02 Сейчас в теме
8. khabibullin.tu 74 27.02.18 13:53 Сейчас в теме
Хелп ми, плиз ! У меня почему то, через раз сообщения не отправляются с ошибкой, хотя сообщения идентичны, может знает кто нибудь из-за чего ?

9. DarkAn 729 27.02.18 14:23 Сейчас в теме
(8) Может все же строка запроса с ошибками? Может обратиться к админам, т.к. проблема с инетом? Может быть все что угодно :(
14. khabibullin.tu 74 27.02.18 15:54 Сейчас в теме
(9) Блин, теперь я понял в чём дело: "Символы.ПС", с переносом строки в тексте запрос отправляется через несколько раз. А как тогда передать перенос строки ? Подскажите, пжл
15. khabibullin.tu 74 27.02.18 15:54 Сейчас в теме
(9) Блин, теперь я понял в чём дело: "Символы.ПС", с переносом строки в тексте запрос отправляется через несколько раз. А как тогда передать перенос строки ? Подскажите, пжл
23. nomadon 288 11.04.18 07:07 Сейчас в теме
10. khabibullin.tu 74 27.02.18 14:35 Сейчас в теме
Тут дело похоже в самом телеграмме, решил проблему так, может кому понадобится

Отправлено = Ложь;
		Пока Не Отправлено Цикл
			Попытка	
				Токен = "УКАЗАТЬ СВОЙ ТОКЕН";
				Текст = "ВАШ ТЕКСТ";
				Соединение  =  Новый HTTPСоединение("api.telegram.org",443,,,,,Новый ЗащищенноеСоединениеOpenSSL());
				ПолучениеЗапрос = "bot" + Токен + "/sendMessage?chat_id=" + "НОМЕР БОТА" + "&text=" + Текст;
				Запрос = Новый HTTPЗапрос(ПолучениеЗапрос);
				Соединение.Получить(Запрос);
				Отправлено = Истина;
			Исключение
				ТекстОшибки = "Пока не вышло, пробуем еще :" + ОписаниеОшибки();
			КонецПопытки;
Показать
11. DarkAn 729 27.02.18 15:15 Сейчас в теме
(10)
ПолучениеЗапрос = "bot" + Токен + "/sendMessage?chat_id=" + "НОМЕР БОТА" + "&text=" + Текст;

Смущает меня "НОМЕР БОТА", там ID чата должно быть;

Если написать так
Ответ = Соединение.Получить(Запрос);

То в переменной "Ответе" - "result" будет или Ок, или написана причина проблемы :)
12. khabibullin.tu 74 27.02.18 15:33 Сейчас в теме
(11)
ПолучениеЗапрос = "bot" + Токен + "/sendMessage?chat_id=" + "НОМЕР БОТА" + "&text=" + Текст;

Смущает меня "НОМЕР БОТА", там ID чата должно быть;

Если написать так
Ответ = Соединение.Получить(Запрос);

То в переменной "Ответе" - "result" будет или Ок, или написана причина проблемы :)


Да да, опечатался, там ID чата, без попытки-исключения не все сообщения уходят почему то ...

Попробую сейчас посмотреть ответ
13. khabibullin.tu 74 27.02.18 15:46 Сейчас в теме
(11) В общем ответ просто "Неопределено". Попробовал на другом компе, в другом городе, в котором нет никаких настроек над сетью. Точно также, один и тот же запрос к телеграмм отправляется с третьей - четвертой попытки
16. khabibullin.tu 74 27.02.18 16:49 Сейчас в теме
(11) Блин, теперь я понял в чём дело: "Символы.ПС", с переносом строки в тексте запрос отправляется через несколько раз. А как тогда передать перенос строки ? Подскажите, пжл
17. khabibullin.tu 74 27.02.18 16:55 Сейчас в теме
(16)
Правильный ответ:

Текст = "Ну хер знает даже чо эта такое " + "%0A" + "МММММ";
18. DarkAn 729 27.02.18 17:30 Сейчас в теме
(17)
"%0A"
Уже хорошо, что ответ найден и все работает :)
19. Anton64 212 02.03.18 10:39 Сейчас в теме
(17) Просто передавайте текст в параметры GET запроса, обработав его функцией КодироватьСтроку().
20. khabibullin.tu 74 02.03.18 11:27 Сейчас в теме
(19)
(17) Просто передавайте текст в параметры GET запроса, обработав его функцией КодироватьСтроку().


Отлично, спасибо !
21. Yashazz 2280 10.04.18 17:35 Сейчас в теме
Ничо-ничо, вот щас телеграм заблокируют, будем писать интеграцию под отечественный мессенджер. А то и сразу на 1С его забубеним)
24. Anton64 212 15.05.18 09:09 Сейчас в теме
(21) Пришлось под отечественный интеграцию написать, для ВК вот например
Оставьте свое сообщение