Шпаргалка для новичков. Самый простой пример создания Telegram бота и отправка сообщений из 1С

11.08.22

Интеграция - Мессенджеры и боты

Пошаговая инструкция, как создать бота и отсылать пользователям сообщения из 1С.

Скачать исходный код

Наименование Файл Версия Размер
Шпаргалка для новичков. Самый простой пример создания Telegramm бота и отправка сообщений из 1С :
.cfe 26,23Kb
26
.cfe 26,23Kb 26 Скачать

Создание телеграм ботов - тема не новая и уже далеко убежала вперед, а новичкам сложно с чего-то начать. Начнем с этой статьи.

1. Первое, что нам нужно, это сам Бот. Открываем Telegram на своем телефоне и в поисковике ищем BotFather - это помощник создания бота. Заходим, запускаем и пишем команду /newbot.  В ответ придет сообщение на английском (кому влом переводить: "Хорошо, новый бот. Как будем его называть? Впишите имя своего бота"). Пишем произвольно, что-то типа МояОрганизация. В ответ опять придет сообщение на английском (кому опять влом переводить: "Хорошо. Теперь придумай ник для своего бота, ник обязательно должен заканчиваться на слово "bot""). Пишем что-то типа МояОрганизация_bot. В ответ опять придет сообщение (переводить не буду). В нем нам надо сохранить токен, выглядит он в сообщении так  

Use this token to access the HTTP API:
5519894407:AAHE***********kYlaN7AC*************

Вот эта вторая строка и есть наш токен.

2. Для каждого пользователя, которому мы хотим что-то отправить, надо знать его ID. Чтобы его узнать, опять в телеграмме находим бота Get My ID  и запускаем, в ответ он пришлет вам ваш ID. Сохраняем его.

3. Переходим к 1С. Сама отправка сообщения достаточно проста:
 

ЗащищенноеСоединение = Новый ЗащищенноеСоединениеOpenSSL();
TokenTelegramm=ПолучитьTokenTelegramm(); //"111111111:AAHEyAAbz2RpGAAkYlaN7ACyAAAARfi21sU"; 
Ресурс = "bot" + TokenTelegramm + "/sendMessage?chat_id=" + СтрЗаменить(Формат(IDUser, "ЧДЦ=; ЧС=; ЧРГ=."), ".", "") + "&text= " + Текст;
Соединение = Новый HTTPСоединение("api.telegram.org",443,,,,,ЗащищенноеСоединение);
Запрос = Новый HTTPЗапрос(Ресурс);
Ответ = Соединение.Получить(Запрос);  
Если Ответ.КодСостояния=200 тогда
     Сообщить("Успешно");
Иначе
     Сообщить("Ошибка");
КонецЕсли;

В переменную TokenTelegramm надо записать наш Токен, В переменную IDUser указываем ID Пользователя, ну и Текст - всё, что хотим отправить пользователю.

Осталось только придумать, где хранить в базе TokenTelegramm и IDUser для каждого пользователя. Вы можете использовать для этого регистры сведений, справочники, дописать реквизиты в уже имеющиеся справочники и т.д.  В этом примере, чтобы не создавать новые объекты и реквизиты, использую встроенный механизм дополнительных реквизитов. Итак, в карточке организации добавляем новый доп.реквизит  с названием TokenTelegramm, тип реквизита строка (кто не в курсе: на форме справа сверху нажимаем ЕЩЕ и Изменить состав дополнительных реквизитов).


 

В карточке организации появится новый реквизит, в него и запишем наш токен.


 

Аналогично в справочник Пользователи добавим доп.Реквизит TelegrammID, тут будем хранить ID каждого пользователя. 

Осталось только обернуть все это в процедуру. Создадим общий модуль TG_Server и пропишем:
 

Процедура ОправитьСообщение(Текст,Получатель="") Экспорт 
	Мас=Новый Массив;
	Если ЗначениеЗаполнено(Получатель) тогда 
		Мас.Добавить(получатель);
	Иначе 
		Запрос=Новый Запрос("
		|ВЫБРАТЬ
		|	ПользователиДополнительныеРеквизиты.Значение КАК Значение
		|ИЗ
		|	Справочник.Пользователи.ДополнительныеРеквизиты КАК ПользователиДополнительныеРеквизиты
		|ГДЕ
		|	ПользователиДополнительныеРеквизиты.Свойство.Заголовок = ""TelegrammID""
		|	И НЕ ПользователиДополнительныеРеквизиты.Значение = """"
		|");
		Рез=Запрос.Выполнить().Выбрать();
		
		ПОка рез.Следующий() Цикл
			Мас.Добавить(СокрЛП(Рез.Значение));
		КонецЦикла;
	КонецЕсли;	
	
	Для Каждого IDUser из Мас Цикл	
		Попытка
			ЗащищенноеСоединение = Новый ЗащищенноеСоединениеOpenSSL();
			TokenTelegramm=ПолучитьTokenTelegramm(); //"111111111:AAHEyAAbz2RpGAAkYlaN7ACyAAAARfi21sU"; 
			Ресурс = "bot" + TokenTelegramm + "/sendMessage?chat_id=" + СтрЗаменить(Формат(IDUser, "ЧДЦ=; ЧС=; ЧРГ=."), ".", "") + "&text= " + Текст;
			Соединение = Новый HTTPСоединение("api.telegram.org",443,,,,,ЗащищенноеСоединение);
			Запрос = Новый HTTPЗапрос(Ресурс);
			Ответ = Соединение.Получить(Запрос);  
			Если Ответ.КодСостояния=200 тогда
				рег=РегистрыСведений.TG_ОтправленныеСообщения.СоздатьМенеджерЗаписи();
				Рег.TelegrammID=IDUser;
				рег.Сообщение=Текст;
				Рег.Записать(Истина);
			КонецЕсли;	
		Исключение   
			//Сообщить(ОписаниеОшибки());
		КонецПопытки;
	КонецЦикла;	
КонецПроцедуры	

Функция ПолучитьTokenTelegramm()
	Запрос=Новый Запрос("
	|ВЫБРАТЬ
	|	ОрганизацииДополнительныеРеквизиты.Значение КАК Значение
	|ИЗ
	|	Справочник.Организации.ДополнительныеРеквизиты КАК ОрганизацииДополнительныеРеквизиты
	|ГДЕ
	|	ОрганизацииДополнительныеРеквизиты.Свойство.Заголовок = &Заголовок
	|");      
	Запрос.УстановитьПараметр("Заголовок","TokenTelegramm");
	Рез=Запрос.Выполнить().Выбрать();
	
	Если Рез.Следующий() тогда 
		Возврат Рез.значение;
	иначе 
		Возврат "";
	КонецЕсли;	
		
	
КонецФункции	

Думаю, тут все понятно, но поясню: в процедуру передается текст сообщения и пользователь получатель, если получатель не указан, сообщение уйдет всем. Из доп. реквизитов вытаскиваем Токен и ID получателей.

Ну и еще процедура для завершения. При записи нового заказа клиента идет оповещение в телеграм

Процедура ПередЗаписью(Отказ, РежимЗаписи, РежимПроведения)
	Если ЭтоНовый() Тогда 
		TG_Сервер.ОправитьСообщение("Оформлен новый заказ №"+ЭтотОбъект["Номер"], Пользователи.ТекущийПользователь());
	КонецЕсли;	
КонецПроцедуры

Готово. Теперь можете сами придумать, откуда и какие сообщения рассылать.

И последнее, в телеграмме находим своего бота через поиск МояОрганизация_bot и подключаемся к нему.

В приложении  расширение с данным решением для УНФ 1.5.4.34 Тестировалось на платформе 8.3.20.1613.

telegrmm bot новичек.

См. также

SALE! 25%

Конструктор ботов Телеграм, редакция 2

Мессенджеры и боты Платформа 1С v8.3 Платные (руб)

Развитие популярного решения для интеграции мессенджера Telegram с нашей любимой 1С.

15000 11250 руб.

18.06.2021    59434    295    255    

349

SALE! 25%

Что нам стоит бота построить? Нарисуем - будет жить! Графический конструктор телеграм-ботов/Telegram

Мобильная разработка Мессенджеры и боты Платформа 1С v8.3 Платные (руб)

Теперь создать telegram-бота - элементарно. Достаточно просто нарисовать блок-схему телеграм-бота, и он сразу заработает. Это возможно при использовании Графического конструктора телеграм-ботов. Это единственный конструктор ботов для telegram, чье качество и функционал подтверждены фирмой 1С, есть сертификат 1С:Совместимо. Расширение в интерактивном режиме, с помощью блок-схем, позволяет с минимальными трудозатратами создать телеграм-ботов в любой конфигурации, работающей на платформе «1С:Предприятие 8.3».

13200 9900 руб.

27.12.2021    33806    82    159    

177

Легкий документооборот (+чат-бот для Telegram)

Документооборот и делопроизводство (СЭД) Мессенджеры и боты Учет документов Платформа 1С v8.3 1С:Управление нашей фирмой 1.6 1С:Бухгалтерия государственного учреждения 1С:ERP Управление предприятием 2 1С:Бухгалтерия 3.0 Платные (руб)

Расширение для согласования справочников и документов в конфигурациях "1С: Бухгалтерия 3.0", "Управление нашей фирмой", "1С ERP Управление предприятием", "Бухгалтерия государственного учреждения". Ролевая адресация, условная маршрутизация, последовательное и параллельное согласование, уведомление о новых задачах на почту, блокировка объектов в зависимости от статуса, запрет проведения в зависимости от статуса, автозапуск процессов согласования, отчеты по исполнительской дисциплине. Не требуется снятие конфигурации с поддержки. Настройка без программирования. Версия для 1cfresh.com. Сертификат 1С-Совместимо.

14900 руб.

15.11.2018    28012    26    48    

58

Email, SMS, Telegram рассылки из 1С - Директ Маркетинг

Управление взаимоотношениями с клиентами (CRM) Мессенджеры и боты SMS рассылки Email рассылки Платформа 1С v8.3 Конфигурации 1cv8 Управленческий учет Платные (руб)

Полный набор инструментов для качественных транзакционных и маркетинговых Email, SMS, Telegram рассылок из 1С. Даже простые уведомления об оплате счетов способны существенно упростить сбор дебиторской задолженности. Применение всех возможностей прямого маркетинга выводит коммуникацию с клиентами, уровень сервиса и лояльность на новый уровень.

7788 руб.

07.04.2014    83875    41    191    

128

Интеграция 1С с телефонией и чатами WhatsApp и Telegram

Телефония, SIP Мессенджеры и боты Платформа 1С v8.3 Конфигурации 1cv8 Россия Управленческий учет Платные (руб)

Интеграция 1С с телефонией и чатами WhatsApp и Telegram автоматизирует работу оператора со звонками и чатами и добавит вашей 1С элементы CRM системы. Храните всю историю взаимоотношений в 1С, не теряйте звонки, скачивайте, прослушивайте в любое время из карточки клиента или журнала звонков, держите руку на пульсе, используя блок отчетов по звонкам. Интегрируйте вашу 1С и чатами WhatsApp и Telegram, общайтесь с клиентами с единого номера и в одном окне. Теперь чаты с клиентами хранятся в карточке партнера в 1С, а не в личных мобильных ваших менеджеров.

4100 руб.

28.04.2022    14078    11    8    

36

Отправка в Telegram отчетов, печатных форм, присоединённых файлов и произвольных вложений. Загрузка получателей. Хранение истории отправок.

Мессенджеры и боты Платформа 1С v8.3 Конфигурации 1cv8 1С:ERP Управление предприятием 2 1С:Бухгалтерия 3.0 1С:Управление торговлей 11 1С:Комплексная автоматизация 2.х 1С:Зарплата и Управление Персоналом 3.x 1С:Управление нашей фирмой 3.0 Платные (руб)

Универсальное расширение для отправки (напрямую и через прокси) печатных форм, отчетов, присоединённых файлов, табличных документов и произвольных вложений в чат Telegram прямо из 1С. Ручная и автоматическая фоновая загрузка по расписанию идентификаторов получателей Telegram. Хранение истории отправок сообщений с ограничением по времени хранения и с автоматической очисткой по мере истечения срока хранения.

4800 руб.

26.12.2023    2351    2    0    

7
Комментарии
Подписаться на ответы Инфостарт бот Сортировка: Древо развёрнутое
Свернуть все
1. USR1CV8 12.08.22 04:13 Сейчас в теме
В картинках замазал токен, а в тексте нет.
+
3. KVIKS 399 12.08.22 09:31 Сейчас в теме
(1)пропустил, исправил
+
2. aleksey2 86 12.08.22 07:02 Сейчас в теме
как отправить список задач из формы "Задачи мне"
или список текущие дела из формы "Текущие дела" ?
+
4. KVIKS 399 12.08.22 09:32 Сейчас в теме
(2)Надо вытащить эти записи из регистра, сформировать сообщение и отправить, пример позже могу набросать
+
5. KVIKS 399 12.08.22 10:54 Сейчас в теме
(2)Вот например Так для УТ 11.4
Параметры=Новый Структура;                                     
АдресРезультата=ПоместитьВоВременноеХранилище(Неопределено);
ТекущиеДелаСлужебный.СформироватьСписокТекущихДелПользователя(Параметры,АдресРезультата); //Вызываем процедуру которая получит список Дел
ТЗ = ПолучитьИзВременногоХранилища(АдресРезультата);  Получим Таблицу из результата и переберем ее в цикле сформировав общий текст.
Текст="";
Для Каждого Стр из ТЗ Цикл
	Текст=Текст+Стр.Представление+Символы.ПС;
КонецЦикла;	
TG_Сервер.ОправитьСообщение(Текст, Пользователи.ТекущийПользователь());

Показать
sapervodichka; +1
9. aleksey2 86 17.08.22 07:38 Сейчас в теме
(5)
Параметры=Новый Структура;


Поле объекта недоступно для записи (Параметры)
{ВнешняяОбработка.ЗадачиМне.Форма.Форма.Форма(9)}: Параметры=Новый Структура;
+
10. KVIKS 399 17.08.22 08:46 Сейчас в теме
(9)вместо переменной "параметры" придумайте свое название.
+
6. akR00b 22 15.08.22 15:30 Сейчас в теме
картинки из статьи не загружаются.
mihuilka; +1
7. user613549_scratch_sv 16.08.22 10:19 Сейчас в теме
Ещё замечание.
Не стоит использовать Заголовок свойства дополнительного реквизита как идентификатор для поиска. Он не контролирует уникальность и разрешён для изменения пользователем.
Для это цели у Свойства есть Имя, которое заполняется на той же форме, что и Заголовок, в свёрнутой группе "Для разработчиков"
G_101689065488872646269; akR00b; +2
8. KVIKS 399 16.08.22 11:10 Сейчас в теме
(7)Согласен, у меня был старый релиз УНФ, в котором еще нет этого реквизита.
+
11. KHoroshulinAV 171 20.04.23 18:25 Сейчас в теме
Коллеги можно ещё проще: отправлять уведомления в мобильном приложении. И другие данные и даже отчёты Дзен MIE
или публикация инфостарт Инфостарт MIE
+
12. user1637521 04.05.23 10:22 Сейчас в теме
В чем проблема может быть если Ответ.КодСостояния = 400
+
13. KVIKS 399 04.05.23 10:37 Сейчас в теме
(12)
КодСостояния = 400

код ответа, который означает, что сервер не смог обработать запрос. Возможно запрос собран не правильно или там неполадки на сервере
+
14. user1637521 04.05.23 10:51 Сейчас в теме
(13)
Возможно запрос собран не

А как можно проверить, что с запросом все нормально?
+
15. user1637521 04.05.23 10:54 Сейчас в теме
(14)
Вроде все подбирает и IDUser и TokenTelegramm
+
17. KVIKS 399 04.05.23 11:35 Сейчас в теме
(15)
может сам ресурс api.telegram.org не доступен у вас?
+
16. KVIKS 399 04.05.23 11:20 Сейчас в теме
(15)
У меня такая строка тестовая:
bot+ТОкен+/sendMessage?chat_id=+ID+&text= Привет, я новый бот, буду присылать сообщения.
Работает. может не тот токен или ID или вы не подключились в телеге к своему боту
bajen; +1
18. aster-x 03.11.23 20:58 Сейчас в теме
А как можно вывести сообщение с кнопками и ловить нажатие на кнопки?
+
19. KVIKS 399 03.11.23 21:27 Сейчас в теме
(18)Рекомендую ознакомится с этим https://infostart.ru/1c/articles/1951756/
user624610_rt0107; +1
20. user682398_paul_candle 2 02.04.24 10:02 Сейчас в теме
Нужно еще учитывать, что Телеграмм не дает отправлять больше 1 сообщения в секунду и не более 30 сообщений в минуту. Иначе не все сообщения дойдут.
+
21. user2064719 09.04.24 13:00 Сейчас в теме
А вместо IDUser нужно использовать ID телеграмм пользователя в строковом типе или числовом
У меня просто что то не получается
+
22. KVIKS 399 09.04.24 13:34 Сейчас в теме
23. user2064719 09.04.24 14:41 Сейчас в теме
IDUser = "5510585095";
Ресурс = "bot" + TokenTelegramm + "/sendMessage?chat_id=" + СтрЗаменить(Формат(IDUser, "ЧДЦ=; ЧС=; ЧРГ=."), ".", "") + "&text= " + "Hellow";
Соединение = Новый HTTPСоединение("api.telegram.org",443,,,,,ЗащищенноеСоединение);
Запрос = Новый HTTPЗапрос(Ресурс);
Ответ = Соединение.Получить(Запрос);

А
вот так должно работать?
+
24. user2064719 09.04.24 14:52 Сейчас в теме
у мен вот такая ошибка
{Документ.ЗаказПокупателя.Форма.ФормаСписка.Форма(303)}: Ошибка при вызове метода контекста (Получить)
Ответ = Соединение.Получить(Запрос);
по причине:
Ошибка работы с Интернет: Ошибка инициализации SSL-соединения
+
25. KVIKS 399 09.04.24 15:15 Сейчас в теме
(24) Это ошибка защищенного соединения, а код полностью рабочий, Проверил только что.
Попытка
			ЗащищенноеСоединение = Новый ЗащищенноеСоединениеOpenSSL();
			TokenTelegramm=ПолучитьTokenTelegramm(); 
			Ресурс = "bot" + TokenTelegramm + "/sendMessage?chat_id=" + СтрЗаменить(Формат(IDUser, "ЧДЦ=; ЧС=; ЧРГ=."), ".", "") + "&text= " + Текст;
			Соединение = Новый HTTPСоединение("api.telegram.org",443,,,,,ЗащищенноеСоединение);
			Запрос = Новый HTTPЗапрос(Ресурс);
			Ответ = Соединение.Получить(Запрос);  
			Если Ответ.КодСостояния=200 тогда
				Сообщить("ОК");
			КонецЕсли;	
		Исключение   
			Сообщить(ОписаниеОшибки());
		КонецПопытки;
Показать
+
26. user2064719 09.04.24 15:22 Сейчас в теме
(25) А что можно сделать чтоб исправить эту ошибку?
+
27. KVIKS 399 09.04.24 15:56 Сейчас в теме
(26) Вот что ИТС пишет
Ошибка инициализации SSL-соединения
Номер карточки: SD0004276
Ошибка инициализации SSL возникает в случае, когда платформа по каким-то причинам не может установить соединение с сервером. Соединение может блокироваться антивирусами, сетевыми экранами, прокси. Платформа не может повлиять на такие блокировки.

Проверить, что ошибка связана именно с невозможностью установить соединение можно с помощью WireShark - если соединение устанавливается, но при этом возникает ошибка протокола, то будут записи о доступе к серверу (минимум одна, а реально больше). Если такое соединение невозможно установить, то записей в логах не будет совсем.
+
28. user2064719 09.04.24 16:37 Сейчас в теме
(27)А если убрать строку с защищенном соединением то работать не будет?
+
Оставьте свое сообщение