Связка 1С и Telegram. Отправка стикеров

31.07.18

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

В качестве факультатива сейчас изучаю возможности связки 1С и мессенджера Telegram. И возник вопрос, как помимо сообщений, посылать в ответ на действия пользователя произвольный стикер? Решению этой мини задачи и посвящена данная статья.

Файлы

ВНИМАНИЕ: Файлы из Базы знаний - это исходный код разработки. Это примеры решения задач, шаблоны, заготовки, "строительные материалы" для учетной системы. Файлы ориентированы на специалистов 1С, которые могут разобраться в коде и оптимизировать программу для запуска в базе данных. Гарантии работоспособности нет. Возврата нет. Технической поддержки нет.

Наименование Скачано Купить файл
(только для физ. лиц)
Пример отправки стикеров из 1С в Telegram
.epf 7,34Kb
11 1 850 руб. Купить

Подписка PRO — скачивайте любые файлы со скидкой до 85% из Базы знаний

Оформите подписку на компанию для решения рабочих задач

Оформить подписку и скачать решение со скидкой

На Infostart`е множество статей по интеграции 1С и мессенджера Telegram. В них описано как отправить пользователю сообщения/кнопки/файлы, но нигде нет примера по отправке стикера.

Немного оживим задачу:

Пусть у нас существует бот, который оповещает пользователей о необходимости согласовать документ, т.е. в момент поступления документа на согласование пользователю приходит сообщение следующего вида: "Прошу согласовать документ заявка на расход 1 от 15.07.208 на сумму 100 руб." с двумя кнопками (клавиатура типа "inline_keyboard") "Согласовать" и "Не согласовать". По нажатию на кнопку "Согласовать" пользователю должно приходить сообщение "Спасибо, документ успешно согласован!" и посылаться произвольный стикер.

Вот как это должно выглядеть на практике:

Покопавшись в Telegram Api (https://core.telegram.org/bots/api), было обнаружено, что для отправки стикера существует метод "/sendSticker":

Получается, чтобы отправить стикер нужно знать chat_id и sticker, первый параметр это идентификатор чата нашего бота с конкретным пользователем, а второй это адрес стикера на сервере telegram. Чтобы получить эти параметры нужно один раз послать необходимые нам стикеры нашему боту.

Затем создать обработку и выполнить в ней следующий код по чтению этих сообщений:

&НаКлиенте
Процедура ПолучитьИдентификаторы(Команда)
	
	Идентификаторы.Очистить();
	
	Соединение  =  Новый HTTPСоединение("api.telegram.org",443,,,,,Новый ЗащищенноеСоединениеOpenSSL());
	
	//Запрос обновлений сообщений
	ТекстЗапросаHTTP = "bot" + ТокенБота + "/getUpdates";
	Запрос = Новый HTTPЗапрос(ТекстЗапросаHTTP);
	
	Ответ = Соединение.Получить(Запрос);
	ТекстОтвета = Ответ.ПолучитьТелоКакСтроку();
	
	//Чтение ответа
	ЧтениеJSON = Новый ЧтениеJSON();       	
	ЧтениеJSON.УстановитьСтроку(ТекстОтвета);
	
	Результат = ПрочитатьJSON(ЧтениеJSON);
	
	ЧтениеJSON.Закрыть();
	
	МассивСообщений = Результат.result;
	
	Для каждого СтруктураСообщения из МассивСообщений Цикл
		
		Сообщение = СтруктураСообщения.message;
	
		Если Сообщение.Свойство("sticker") Тогда 
			
			ИдентификаторЧата = Формат(Сообщение.chat.id, "ЧГ=");
			
			//Строка ИД чата
			НоваяСтрокаИдентификатора = Идентификаторы.Добавить();
			
			НоваяСтрокаИдентификатора.ИмяПользователя = Сообщение.from.first_name + " " + Сообщение.from.last_name;
			НоваяСтрокаИдентификатора.ИдентификаторЧата = ИдентификаторЧата;
			
			Стикер = Сообщение.sticker;
			
			НоваяСтрокаИдентификатора.Стикер = Стикер.emoji;
			НоваяСтрокаИдентификатора.АдресСтикера = Стикер.file_id;
			
		КонецЕсли;
				
	КонецЦикла;
	
КонецПроцедуры

В ответ на http запрос telegram вернет нам JSON массив следующего формата (адрес стикера это его file_id):

Получив адрес стикера, можно легко его отправить, используя следующий код:

&НаКлиенте
Процедура ОтправитьСтикерПользователю(АдресСтикера, ИдентификаторЧата)
	
	Соединение = Новый HTTPСоединение("api.telegram.org",443,,,,,Новый ЗащищенноеСоединениеOpenSSL()); 

	//Параметры запроса
	ПараметрыЗапроса = "?chat_id=" + Формат(ИдентификаторЧата, "ЧГ=0") + "&sticker=" + АдресСтикера;
	ТекстЗапросаHTTP = "bot" + ТокенБота + "/sendSticker" + ПараметрыЗапроса;
		
	Запрос = Новый HTTPЗапрос(ТекстЗапросаHTTP);
	Запрос.УстановитьТелоИзСтроки(ПараметрыЗапроса);
	
	Ответ = Соединение.ОтправитьДляОбработки(Запрос);
		
КонецПроцедуры

Для удобства получения параметров chat_id и sticker была создана обработка по их получению и отправки стикеров:

Обработка находится во вложении к данной публикации, однако весь её код приведен выше.

Обработка тестировалась на конфигурации "Бухгалтерия предприятия, редакция 3.0 (3.0.63.20)", но она также будет работать на любой конфигурации на управляемых формах

Вступайте в нашу телеграмм-группу Инфостарт

См. также

Мессенджеры и боты Системный администратор Программист Бизнес-аналитик Пользователь Руководитель проекта 1С v8.3 Платные (руб)

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

15000 руб.

18.06.2021    73535    316    273    

392

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

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

13200 руб.

27.12.2021    43874    123    172    

217

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

Интеграция мессенджера WhatsApp и 1С: УНФ, УТ, КА, ERP - отправка и получение сообщений, картинок, файлов и видео прямо в 1С. Расширение работает с сервисом GreenApi.

15600 руб.

23.06.2023    13636    77    21    

52

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

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

4800 руб.

07.04.2014    88756    60    199    

145

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

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

14900 руб.

15.11.2018    37683    40    49    

75

Зарплата Учет рабочего времени Кадровый учет Мессенджеры и боты Бухгалтер Пользователь 1С v8.3 Сложные периодические расчеты 1С:Зарплата и Управление Персоналом 3.x Россия Бухгалтерский учет Платные (руб)

Сделайте взаимодействие сотрудников компании и бухгалтерии быстрым и удобным. С Личным кабинетом сотрудника в 1С:ЗУП 3.1 и КА 2.5 для Telegram больше не нужно лично посещать бухгалтерию и отдел кадров – все документы доступны в Telegram.

9600 руб.

21.03.2022    16380    8    21    

23
Комментарии
Подписаться на ответы Инфостарт бот Сортировка: Древо развёрнутое
Свернуть все
1. Aspirant 4 02.08.18 12:58 Сейчас в теме
HTTPСоединение("api.telegram.org"

"api.telegram.org" - этот адрес точно работает?
2. Skin123 190 02.08.18 15:13 Сейчас в теме
(1) Должен работать, если Ваш провайдер не заблокировал его по требованиям РКН
3. stako8 18.01.19 08:22 Сейчас в теме
Может кто сталкивался: отправляю клавиатуру "bot******/sendMessage?chat_id=******&text=Меню&reply_markup={"inline_keyboard":[[{"text":"1","callback_data":"1"},{"text":"2","callback_data":"2"}]]}", она приходит пользователю, тот нажимает на не, но через "getUpdates" не приходит ответ что он нажал. Куда копать?
4. serg-lom89 82 25.07.19 14:49 Сейчас в теме
(3)в ответ когда будете дергать getUpdates там должно быть поле
callback_data что такое и там будет индентификатор вашего callback_data (1 или 2)
5. simuljakr 207 09.05.21 12:03 Сейчас в теме
А можно ли отправить одним сообщением и стикер и текст?
Оставьте свое сообщение