Стандартная интеграция 1С с Telegram обычно ограничивается использованием Bot API. Однако боты имеют существенные ограничения: они не могут инициировать диалог первыми (без предварительного сообщения от пользователя), не имеют доступа к списку контактов по номеру телефона и ограничены в работе с группами. Для решения задач полноценной CRM-системы часто требуется User API (MTProto), который позволяет 1С работать как «честный» клиент от имени реального пользователя.
В данной статье мы проанализируем опыт разработки такого клиента, разберем архитектурные подходы, использование промежуточных сервисов и способы хранения данных.
Рассмотрим наиболее гибкий вариант реализации — создание промежуточного микросервиса на языке Python. Платформа 1С не поддерживает протокол MTProto напрямую, поэтому использование внешней библиотеки является оправданным шагом. В качестве основы выберем библиотеку Pyrogram (или аналогичную Telethon).
Схема взаимодействия выглядит следующим образом:
Flask или FastAPI), который принимает запросы от 1С.Проанализируем реализацию метода получения сообщений. Чтобы 1С мгновенно узнавала о новом сообщении, на стороне 1С необходимо опубликовать HTTP-сервис. Python-сервер, получив апдейт от Telegram, будет пересылать его (POST-запрос) на адрес опубликованного сервиса 1С.
При создании клиента важно не перегружать основную базу 1С транзакциями по каждому мелкому событию (например, статусу «печатает»). Для хранения истории сообщений, временных метаданных и структуры таблиц удобно использовать SQLite.
Рассмотрим интересный подход: динамическая реструктуризация SQLite на основе JSON-описания. Мы можем передавать из 1С структуру требуемых таблиц, а Python-скрипт будет автоматически приводить базу SQLite к нужному виду. Это позволяет легко обновлять функционал расширения 1С без ручной правки схем данных на стороне внешнего сервиса.
Пример структуры метаданных в формате JSON для управления таблицами:
{
"tables": {
"messages": {
"columns": ["id INTEGER PRIMARY KEY", "chat_id TEXT", "text TEXT", "date DATETIME"],
"indexes": ["chat_id"]
},
"contacts": {
"columns": ["user_id TEXT", "phone TEXT", "name TEXT"]
}
}
}
Для минимизации вмешательства в типовые конфигурации (УТ, ERP, УНФ) логично реализовать функционал в виде расширения. Внутри расширения создаются:
ПолеHTMLДокумента, так как оно позволяет гибко верстать «бабблы» сообщений и отображать картинки.Партнеры, КонтактныеЛица).Проанализируем программный код отправки текстового сообщения через наш микросервис:
Функция ОтправитьСообщениеВТелеграм(Телефон, ТекстСообщения)
Запрос = Новый HTTPЗапрос("/send_message");
СтруктураДанных = Новый Структура;
СтруктураДанных.Вставить("phone", Телефон);
СтруктураДанных.Вставить("message", ТекстСообщения);
ЗаписьJSON = Новый ЗаписьJSON;
ЗаписьJSON.УстановитьСтроку();
ЗаписатьJSON(ЗаписьJSON, СтруктураДанных);
СтрокаJSON = ЗаписьJSON.Закрыть();
Запрос.УстановитьТелоИзСтроки(СтрокаJSON, КодировкаТекста.UTF8);
Соединение = Новый HTTPСоединение("localhost", 8080); // Наш Python-сервис
Ответ = Соединение.ОтправитьДляОбъекта(Запрос);
Возврат Ответ.КодСостояния = 200;
КонецФункции
Если использование Python в инфраструктуре нежелательно, рассмотрим альтернативные пути:
Разработка собственного клиента открывает возможности, недоступные ботам:
Важно помнить: Telegram строго наказывает за злоупотребление User API. При использовании самописных клиентов необходимо получить официальные api_id и api_hash на портале my.telegram.org.
Основные причины блокировок при работе через 1С:
Выясним причину, почему стоит предпочесть User API вместо Системы взаимодействия 1С. Хотя Система взаимодействия имеет штатный шлюз в Telegram, она работает только через ботов. Если ваша стратегия продаж подразумевает «живое» общение и инициативный контакт с клиентом, то разработка собственного MTProto-клиента — единственный путь интеграции.
Таким образом, разработка клиента Telegram на 1С — это сложная, но оправданная задача для автоматизации CRM-процессов. Наиболее жизнеспособной архитектурой сегодня является использование Python-сервиса в качестве прослойки, что позволяет совместить мощь библиотек обработки протокола с бизнес-логикой платформы 1С.