Интеграция 1с с telegram

Обновлено: 19.09.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С. Но нигде не увидел полной инструкции по установке и настройке вебхуков. Попробую её написать.

Для всего этого нам понадобится (или правильнее будет сказать, что было использовано мной):

  1. Apache 2.2.24
  2. OpenSSL (входящий в установку апача)
  3. 1C (с модулями веб-сервера)
  4. Свой домен
  5. Созданный бот в Телеграм (не буду описывать его создание, т.к. оно достаточно тривиально)

YOURPRIVATE.key — закрытый ключ сертификата. Будет использован в апаче

YOURPUBLIC.pem — открытый ключ сертификата. Будет использован при регистрации вебхука

YOURDOMAIN.EXAMPLE — адрес вашего домена с вебхуком. Должен таки совпадать с адресом вебхука.

После выполнения этого кода в папке openssl ( у меня это «C:\Program Files\Apache Software Foundation\Apache2.2\bin») появятся файлы ключей.

Я их скопировал в папку conf апача.

Переходим к настройке Apache.

Я видел много разных способов. У меня сработал следующий:


для того, чтобы апач «слушал» 443 порт.

Блок <IfModule ssl_module> приведен к следующему виду:


В самом конце добавлены строчки, где указываю пути к сертификату:


И раскомменитурйте строчку:

В моём случае указаны следующие параметры:

Имя: ТГВебхук
КорневойURL: webhook
Повторное использование сеансов: Не использовать (с автоматическим режимом у меня не заработало)
Время жизни: 20
Шаблоны URL: создан шаблон «Любой» с двумя методами: GET и POST

image

image

image

Обработчики методов создаются по умолчанию. В обработчик POST добавлю следующее, просто для проверки связи:

ВашДомен/ИмяБазы/hs/ИмяСервиса/v1

Прошу не пинать ногами за код, некоторые вещи умышленно сделаны хардкодом, т.к. это всё делалось исключительно в демонстрационных целях.

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

Аватар пользователя 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) в строку.

Задача:
Создать телеграм бота и научится работать с ним в «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»:

Важно! Данная интеграция доступна при наличие активного действующего договора «1С:ИТС Отраслевой».

Создание нового бота Telegram

Для создания чат-бота Telegram необходимо найти бота BotFather в самом Telegram (в веб-версии или мобильном приложении Telegram) и выполнить команду Запустить.

Далее выполнить последовательно шаги:

  • выбрать команду - /newbot;
  • указать имя бота, которое будет отображаться в контакт листе, а также в открытых чатах Telegram;
  • указать уникальное имя бота. На его основании будет сформирована ссылка на бота.
    Внимание! Уникальное имя должно содержать в конце суффикс bot, например, crm_bot.

После выполнения всех шагов будет выдан Токен доступа, который нужно будет прописать при подключении чат-бота Telegram в системе CRM.

Токен доступа

Подключение чат-бота Telegram

Важно! Интеграция работает только для чат ботов Telegram.

Для подключения чат-бота Telegram необходимо открыть окно Приложения для 1С:CRM и выбрать приложение «Telegram».

Подключение приложения для интеграции с Telegram

Подключение приложения для интеграции с Telegram

В форме настройки интеграции нужно выполнить команду Подключить и заполнить поля в окне «Настроек Telegram».

Подключение чат-бота Telegram

Подключение чат-бота Telegram

В форме настройки подключения Telegram необходимо указать токен доступа полученный при регистрации нового чат-бота Telegram;

Настройки подключения

Затем выполнить команды Проверить подключение и Готово.

В форме настройки учетной записи в поле «Наименование» необходимо прописать название чат-бота, которое будет выводиться в АРМ Диалоги и выполнить команду Готово.

Учетная запись

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