Рассмотрим простой пример создания телеграм-бота для 1С. В данном примере будет минимальная разработка, позволяющая получить первый результат. Рефакторинг и универсальность это тема другой статьи, каких много в сети.
Чтобы зарегистрировать нового бота, необходимо добавить в друзья контакт BotFather и там следовать инструкции. В итоге будет создан токен для доступа к боту.
Для простоты демонстрации создадим внешнюю обработку. В ней добавим команду для включения обработчика оповещения, он будет с определенным интервалом опрашивать бота и получать накопленные сообщения.
В обработку добавим реквизиты:
- Токен
- Сервер
- Бот
Создадим форму и инициализируем переменные.
&НаСервере Процедура ПриСозданииНаСервере(Отказ, СтандартнаяОбработка) Объект.Бот = "@Test_record_bot"; //Имя бота Объект.Токен = "765095809:AAHjcCMtQMRBaszb94MVO44bhrK36"; //Токен telegram Объект.Сервер = "api.telegram.org"; КонецПроцедуры
Добавим на форму кнопку, которая будет запускать обработчик ожидания для получения данных из телеграм.
&НаКлиенте Процедура АвтоматическаяРабота(Команда) ПодключитьОбработчикОжидания("Автомат",10); КонецПроцедуры &НаКлиенте Процедура Автомат() ПоказатьСообщения(); КонецПроцедуры
Опишем процедуру получения данных из телеграм. Возможно здесь необходимо будет указать описание прокси-сервера.
&НаКлиенте Процедура ПоказатьСообщения(Команда = Неопределено) Ресурс = "bot" + Объект.Токен + "/getUpdates"; Соединение = Новый HTTPСоединение(Объект.Сервер,443,,,,,Новый ЗащищенноеСоединениеOpenSSL()); Запрос = Новый HTTPЗапрос(Ресурс); Ответ = Соединение.Получить(Запрос); ПрочитатьСтрокуОтвета(Ответ.ПолучитьТелоКакСтроку()); КонецПроцедуры
Создадим процедуру, которая будет обрабатывать полученные данные
&НаСервере Процедура ПрочитатьСтрокуОтвета(СтрокаОтвета) ЧтениеJSON = Новый ЧтениеJSON(); ЧтениеJSON.УстановитьСтроку(СтрокаОтвета); Результат = ПрочитатьJSON(ЧтениеJSON); ЧтениеJSON.Закрыть(); Если Результат.ok = Истина Тогда Для Каждого СтрокаРезультата Из Результат.result Цикл Если СтрокаРезультата.message.text = "/start" Тогда ВывестиПриветствие(СтрокаРезультата.message.chat.id) КонецЕсли; КонецЦикла; КонецЕсли; КонецПроцедуры
И последний шаг — напишем ответ от бота
Процедура ВывестиПриветствие(chat_id) Ресурс = "bot" + Объект.Токен + "/sendMessage?chat_id=" + СтрЗаменить(Формат(chat_id, "ЧГ=0"), ".", "") + "&text= Здравствуйте!"; Соединение = Новый HTTPСоединение(Объект.Сервер,443,,,,,Новый ЗащищенноеСоединениеOpenSSL()); Запрос = Новый HTTPЗапрос(Ресурс); Ответ = Соединение.Получить(Запрос); КонецПроцедуры
Бот готов, на сообщение «/start» он отвечает приветствием. Дальнейшая работа с ботом зависит от вашей фантазии и подготовки.