Подключить телеграмм бота к базе данных 1с что бы показывал остаток товара

Обновлено: 04.07.2024

Пробовали ли вы общаться с клиентами, сотрудниками, партнерами и другими внешними пользователями с помощью telegram-бота ?

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

Интеграция возможна только начиная с версии платформы 8.3.10.2168

Чтобы произвести интеграцию, надо выполнить три простых шага:

  1. Подключение системы взаимодействия
  2. Создание Telegram-бота для входящих обращений
  3. Добавление интеграции на уровне системы взаимодействия.
1С-Рарус подробно расскажет вам о каждом шаге прямо сейчас!

1 шаг. Подключение системы взаимодействия

  1. Переходим в главное меню–> « Функции для технического специалиста » –> « Стандартные » –> « Управление системой взаимодействия ».
  2. Чтобы пройти регистрацию, введите адрес электронной почты , на которую придет код подтверждения.
  3. Введите полученный код и нажмите « Зарегистрировать ».

Чтобы после регистрации создать диалог внутри программы, необходимо:

1. Перейти на закладку « Обсуждения »;

2. Нажимаем на значок « Новое обсуждение »;

3. Указываем тему и пользователей ;

4. Нажимаем « ОК ».

Заходим в главное меню, затем "Функции для технического специалиста". Нажимаем "Стандартные", затем "Управление системой взаимодействия". Вводим адрес электронной почты, получаем код и вводим его в соответствующее поле. Заходим в главное меню, затем "Функции для технического специалиста".

Готово! Вы настроили внутренний чат.

Для того, чтобы выполнить интеграцию с Telegram, нужно выполнить еще два шага. Разбираем!

2 шаг. Создание телеграмм-бота для входящих обращений

1. Переходим в Telegram

2. В поле поиска вводим @BotFather. Это аккаунт для создания персональных ботов.

3. Переходим в диалог с ботом.

4. Нажимаем команду « Запустить » –> « New bot ».

5. После этого введите имя бота . Так он будет отображаться для пользователей.

6. Указываем никнейм бота .

В конце никнейма обязательно надо указать слово bot

8. Готово! Бот создан.

3 шаг. Добавить интеграцию на уровне системы взаимодействия

Остался всего один простой шаг, который соединит два предыдущих действия.

1. Заходим в программу под администратором .

2. Переходим в главное меню –> « Функции для технического специалиста » –> « Стандартные » –> « Управление системой взаимодействия » –> пункт « Интеграции ».

3. Нажимаем « Добавить ».

Задача:
Создать телеграм бота и научится работать с ним в «1С:Предприятие 8», через long polling и webhooks, используя Telegram bot API.


В результате, будет сформирован токен доступа, который необходимо сохранить и держать в секрете, а созданного бота добавить себе в приложение «Телеграм».

2. Два способа работы с телеграм ботом.

При помощи «Telegram Bot API», есть два взаимоисключающих способа работы с телеграм ботом:

  1. Метод «getUpdates» – самостоятельно, выполняем запрос получения новых обновлений.
  2. Использование «Webhooks» – обновления приходят автоматически от сервера, на указанный URL-адрес.

Ответ приходит в виде JSON, не обработанные обновления хранятся на сервере до тех пор, пока бот их не получит, но они не будут храниться дольше 24 часов.

3. Подготовка конфигурации.

Коннектор: удобный HTTP-клиент для 1С:Предприятие 8


3.2 Создаем пустую (вспомогательную) конфигурацию и выполняем «Загрузить конфигурацию из файлов…», используя папку «src» (см. п. 3.1):

Коннектор: Загрузка конфигурации

Коннектор: Загрузка конфигурации

Перенос общего модуля

Метод "getMe"

4. Метод «getUpdates».

Из 1С, самостоятельно, периодически обращаемся к методу API «getUpdates», для получения 100 самых ранних неподтвержденных (не полученных ранее) обновлений, в виде JSON объекта «Update».

Метод "getUpdates"

Для нашего примера, будет заполнен только параметр offset равным 0, для того чтобы получить все не обработанные обновления. Процедура обработки команды «Обновить» на клиенте:

Методы «ОбновитьНаСервере» и «ОбработатьОбновление»:

Метод "getUpdates"

Метод "sendMessage"

5. Использование «Webhooks»

Сервис Apache

Публикация сервиса

Apache config


Их нужно сохранить в шаблоне «‪C:\OpenServer\userdata\config\Apache_2.4-PHP_7.2-7.4_server.conf», для того чтобы при следующем запуске «Open Server» они не затерлись.

Для проверки воспользуемся приложением «Postman»:

Postman test

В результате, внутренние локальные сервисы, станут доступны для внешнего взаимодействия:

Postman test ngrok

Postman test ngrok

Для эксперимента, попробуем это сделать через «Postman»:

Postman setWebhook

Для удаление webhook и переход на метод «getUpdates», достаточно вызвать метод «deleteWebhook»:


Для многих новичков в разработке на Python возникает проблема — как подключить базу данных? Я сам столкнулся с такой проблемой в начале разработки. Тема оказалось довольно простой, но в интернете есть множество гайдов, которые могут запутать. В этом туториале я расскажу о том, как просто интегрировать базу данных Sqlite3 на примере Telegram бота.

Начало работы

Для работы нам понадобятся базовые знания в Python, достаточные для написания простого бота. Данный гайд можно использовать не только для интеграции с ботом, но и для других проектов. Если вы не используете PyCharm, и у вас нет средства для работы с БД, то необходимо установить утилиту SQLiteStudio с официального сайта.

Теперь давайте перейдем к написанию кода. В терминале необходимо установить pyTelegramBotAPI (если по какой-то причине у вас его нет).

Далее создаем новый файл с расширением .py. В нем прописываем следующее:

Устанавливать sqlite3 не нужно — это стандартная библиотека. Вместо "token" необходимо указать токен бота, который выдал вам BotFather. Теперь проверим, работает ли бот.


Как мы видим, все работает.

Настройка базы данных

Открываем SQLiteStudio. Во вкладке Database выбираем пункт Add a database. Для удобства можно использовать сочетание Ctrl+O.


Далее нажимаем на зеленую кнопку Создать новый фал базы данных. Выбираем директорию вашего проекта. В ней можете создать отдельную папку db, где будет хранится файл с базой. Вводим название, например database. Расширение будет присвоено автоматически. Нажимаем Сохранить. Теперь слева в списке у нас появился наш файл. Кликаем по нему ПКМ и выбираем пункт Connect to the database. Соединение с базой установлено. Появилось два подпункта: Таблицы и Представления. В этом уроке мы будем затрагивать только пункт Таблицы. Нажимаем по нему ПКМ и выбираем Add a table.


В поле для ввода указываем имя для таблицы. Я назову ее test. Чуть выше есть активная кнопка Добавить столбец (Ins). В появившемся окне указываем название столбца и тип данных. Для начала вам могут понадобится такие условия, как Первичный ключ, Не NULL и Уникальность. Первый столбец я назову id, выберу тип данных INTEGER и установлю все три условия. У Первичный ключ выберу настройку Автоинкремент. Этот столбец будет автоматически создавать ID записи в таблице. Работать с ним в коде мы не будем.


Второй столбец будет хранить user_id. Он будет иметь тип данных INT, уникален и не равен нулю. Третий столбец я назову user_name, присвою тип данных STRING и выберу пункт Не NULL. Еще 2 столбца будут называться user_surname и username. После того, как вы создали столбцы, нажимаем зеленую кнопку с галочкой.


В общем все будет выглядеть вот так.

Работа с базой данных в коде

Теперь давайте вновь перейдем к коду. Создадим 2 переменные.

В первой мы подключаем нашу базу данных, а во второй создаем курсор для работы с таблицами. Обратите внимание на то, что у меня в директории проекта создана папка db, а уже в ней находится файл БД. Если у вас по другому, укажите расположение в первой переменной.

Теперь создадим функцию, которая будет нужна непосредственно для работы с таблицей.

В переменные мы вносим имя пользователя, id, имя и фамилию в Telegram, а потом сохраняем в БД. В конце кода можем сделать так, чтобы бот работал постоянно.

Пришло время проверить, как работает код. Запускаем бота и пишем ему "Привет".


Теперь можем зайти в SQLiteStudio, и выбрав вкладку Данные посмотреть что получилось:


Как мы видим, данные уже в базе. Если их по какой-то причине нет, то обновите базу, нажав на синюю кнопку Обновить

Заключение

В этой статье мы немного познакомились с sqlite3 и сделали простой скрипт добавления сведений о пользователе. Этого, конечно, не достаточно. В скором времени выпущу продолжение, в котором затрону тему удаления пользователей и редактирования полей.

Огромное спасибо за то, что прочитали. Надеюсь, кому-то помог. Всем удачи и поменьше багов в коде!

Аватар пользователя mykib.org

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

В данной статье рассмотрим следующее:

Для начала, зарегистрируем бота, получим его id - токен. В Telegram для этого создан специальный бот — @BotFather.

 В Telegram для этого создан специальный бот — @BotFather

Добавляем его в контакт. Получаем получаем список его команд, написав ему /start.

Этого, в принципе, достаточно.

2. Создание обработки в 1С

Создадим внешнюю обработку. Добавим реквизиты обработки строковый переменной длины «Бот», «Токен», «Сервер».

Т.к. обработку не будем привязывать к конкретной конфигурации, то список понимаемых команд будем хранить в табличной части обработки «ТаблицаПонимаемыхКоманд» (а так, в принципе, команды можно хранить в справочнике конфигурации).

Реквизиты ТЧ строковые: «Имя», «ВыполняемоеДействие», «Параметр», «Описание»

 ТаблицаПонимаемыхКоманд

Команды пользователя (те, которые он буде писать боту) по той же причине будем хранить в табличной части «КомандыПользователей» (если не делать обработку универсальной, то, конечно, предпочтительно использовать регистр сведений – далее, в листингах кода укажем примеры и для регистра сведений тоже).

Реквизиты ТЧ: числовые «chat_id», «date», булево «Выполнено» и строковый «Команда».

 КомандыПользователей

Теперь создадим управляемую форму обработки, назначим ее основной и разместим реквизиты «Бот» и «Токен» (необязательно, но для наглядности):

 Теперь создадим управляемую форму обработки 1C, назначим ее основной и разместим реквизиты «Бот» и «Токен» Telegram

Также создадим реквизит формы «Дерево» – тип «ДеревоЗначений». В нем будут отображаться чаты. Для наглядности выведем его на форму. Колонки дерева создадим программно (см.далее).

Для события формы ПриСозданииНаСервере добавим процедуру:

Если Вы используете версию 1С 8.3.6 и выше, то в процедуре ПрочитатьДвоичныеДанныеОтвета() будем использовать новый объект ЧтениеJSON()
.

В процедуре ЗаполнитьРС() будем заполнять табличную часть «КомандыПользователей» (или же регистр сведений). (код процедуры далее).

Процедура ЗаполнитьСтруктуруИзОтветаJSON() заполняет дерево чатов:

Если Вы используете версию 1С ниже 8.3.6 то процедура ПрочитатьДвоичныеДанныеОтвета() будет такой:

Как уже было сказано, в процедуре ЗаполнитьРС() будем заполнять табличную часть «КомандыПользователей» (или же регистр сведений). (код процедуры далее).

Процедура ЗаполнитьСтруктуруИзОтветаJSON() – это парсер JSON и рекурсивное заполнение дерева для версии ниже 1С 8.3.6:

Теперь опишем процедуру, заполняющую табличную часть «КомандыПользователей» либо регистр сведений:

Если вы будете использовать регистр сведений (я назвал его «КомандыПользователей»), то закомментируйте/разкомментируйте соответствующие участки кода.

Обратите внимание, что если версия ниже 1С 8.3.6, то в коде переменную Параметр надо преобразовать из Юникода (этот участок обозначен в коде в комментарии - разкомментируйте его):

Для этого используем две функции Юникод – парсер (он нужен только для версии 1С ниже 8.3.6):

В процедуре ЗаполнитьРС() вызывается функция ВыполнитьКомандуБота(ЗаписьРегистра, Параметр), где ЗаписьРегистра – это строка табличной части ТаблицаПонимаемыхКоманд (либо запись Вашего регистра сведений). Параметр – параметр команды (то что написал боту пользователь).

  • о версии операционной системы;
  • о версии используемого 1С:Предприятия 8 в формате <основная версия>.<младшая версия>.<релиз>.<дополнительный номер релиза>.(например, 8.2.9.200);
  • Уникальный идентификатор клиента. Для данного компьютера и данного пользователя операционной системы идентификатор один, вне зависимости от информационной базы и пользователя информационной базы;
  • о веб-браузере (userAgent);
  • о размере оперативной памяти;
  • Идентификатор процессора;
  • тип платформы, в рамках которой осуществляется работа.

Для того, чтобы все работало автоматом лучше использовать фоновое задание. Но так как наша Обработка не привязана к конкретной базе данных и к конкретной конфигурации. То подключим обработчик ожидания.

Создадим команду формы «ЗапускФоновыхЗаданий», разместим соответствующую кнопку на форме. Обработчик команды:

Вот и все – Обработка прилагается.

Отдельное спасибо пользователю Инфостарт igo1 - перекодировка из Юникода (Unicode) в строку.

Читайте также: