Интеграция 1с с telegram
Пробовали ли вы общаться с клиентами, сотрудниками, партнерами и другими внешними пользователями с помощью telegram-бота ?
В сегодняшнем выпуске 1С-Рарус расскажет вам, как быстро произвести интеграцию 1С с Telegram, чтобы общение с внешними пользователями проходило быстро и удобно.
Интеграция возможна только начиная с версии платформы 8.3.10.2168
Чтобы произвести интеграцию, надо выполнить три простых шага:
- Подключение системы взаимодействия
- Создание Telegram-бота для входящих обращений
- Добавление интеграции на уровне системы взаимодействия.
1С-Рарус подробно расскажет вам о каждом шаге прямо сейчас!
1 шаг. Подключение системы взаимодействия
- Переходим в главное меню–> « Функции для технического специалиста » –> « Стандартные » –> « Управление системой взаимодействия ».
- Чтобы пройти регистрацию, введите адрес электронной почты , на которую придет код подтверждения.
- Введите полученный код и нажмите « Зарегистрировать ».
Чтобы после регистрации создать диалог внутри программы, необходимо:
1. Перейти на закладку « Обсуждения »;
2. Нажимаем на значок « Новое обсуждение »;
3. Указываем тему и пользователей ;
4. Нажимаем « ОК ».
Заходим в главное меню, затем "Функции для технического специалиста". Нажимаем "Стандартные", затем "Управление системой взаимодействия". Вводим адрес электронной почты, получаем код и вводим его в соответствующее поле. Заходим в главное меню, затем "Функции для технического специалиста".Готово! Вы настроили внутренний чат.
Для того, чтобы выполнить интеграцию с Telegram, нужно выполнить еще два шага. Разбираем!
2 шаг. Создание телеграмм-бота для входящих обращений
1. Переходим в Telegram
2. В поле поиска вводим @BotFather. Это аккаунт для создания персональных ботов.
3. Переходим в диалог с ботом.
4. Нажимаем команду « Запустить » –> « New bot ».
5. После этого введите имя бота . Так он будет отображаться для пользователей.
6. Указываем никнейм бота .
В конце никнейма обязательно надо указать слово bot
8. Готово! Бот создан.
3 шаг. Добавить интеграцию на уровне системы взаимодействия
Остался всего один простой шаг, который соединит два предыдущих действия.
1. Заходим в программу под администратором .
2. Переходим в главное меню –> « Функции для технического специалиста » –> « Стандартные » –> « Управление системой взаимодействия » –> пункт « Интеграции ».
3. Нажимаем « Добавить ».
Много строк исписано про интеграцию Телеграма и 1С. Но нигде не увидел полной инструкции по установке и настройке вебхуков. Попробую её написать.
Для всего этого нам понадобится (или правильнее будет сказать, что было использовано мной):
- Apache 2.2.24
- OpenSSL (входящий в установку апача)
- 1C (с модулями веб-сервера)
- Свой домен
- Созданный бот в Телеграм (не буду описывать его создание, т.к. оно достаточно тривиально)
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
Обработчики методов создаются по умолчанию. В обработчик POST добавлю следующее, просто для проверки связи:
ВашДомен/ИмяБазы/hs/ИмяСервиса/v1
Прошу не пинать ногами за код, некоторые вещи умышленно сделаны хардкодом, т.к. это всё делалось исключительно в демонстрационных целях.
Публикация была написана, т.к. ни одного рабочего примера по работе с вебхуками на сайте не нашел, кроме Конструктор ботов Телеграм. Но она платная и, возможно, не всем нужна в таком виде.
В результате чтения публикации Вы получите готовую внешнюю обработку, позволяющую получать из 1С данные, запрашиваемые через Telegram.
В данной статье рассмотрим следующее:
Для начала, зарегистрируем бота, получим его id - токен. В Telegram для этого создан специальный бот — @BotFather.
Добавляем его в контакт. Получаем получаем список его команд, написав ему /start.
Этого, в принципе, достаточно.
2. Создание обработки в 1С
Создадим внешнюю обработку. Добавим реквизиты обработки строковый переменной длины «Бот», «Токен», «Сервер».
Т.к. обработку не будем привязывать к конкретной конфигурации, то список понимаемых команд будем хранить в табличной части обработки «ТаблицаПонимаемыхКоманд» (а так, в принципе, команды можно хранить в справочнике конфигурации).
Реквизиты ТЧ строковые: «Имя», «ВыполняемоеДействие», «Параметр», «Описание»
Команды пользователя (те, которые он буде писать боту) по той же причине будем хранить в табличной части «КомандыПользователей» (если не делать обработку универсальной, то, конечно, предпочтительно использовать регистр сведений – далее, в листингах кода укажем примеры и для регистра сведений тоже).
Реквизиты ТЧ: числовые «chat_id», «date», булево «Выполнено» и строковый «Команда».
Теперь создадим управляемую форму обработки, назначим ее основной и разместим реквизиты «Бот» и «Токен» (необязательно, но для наглядности):
Также создадим реквизит формы «Дерево» – тип «ДеревоЗначений». В нем будут отображаться чаты. Для наглядности выведем его на форму. Колонки дерева создадим программно (см.далее).
Для события формы ПриСозданииНаСервере добавим процедуру:
Если Вы используете версию 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», есть два взаимоисключающих способа работы с телеграм ботом:
- Метод «getUpdates» – самостоятельно, выполняем запрос получения новых обновлений.
- Использование «Webhooks» – обновления приходят автоматически от сервера, на указанный URL-адрес.
Ответ приходит в виде JSON, не обработанные обновления хранятся на сервере до тех пор, пока бот их не получит, но они не будут храниться дольше 24 часов.
3. Подготовка конфигурации.
3.2 Создаем пустую (вспомогательную) конфигурацию и выполняем «Загрузить конфигурацию из файлов…», используя папку «src» (см. п. 3.1):
Коннектор: Загрузка конфигурации
Перенос общего модуля
4. Метод «getUpdates».
Из 1С, самостоятельно, периодически обращаемся к методу API «getUpdates», для получения 100 самых ранних неподтвержденных (не полученных ранее) обновлений, в виде JSON объекта «Update».
Для нашего примера, будет заполнен только параметр offset равным 0, для того чтобы получить все не обработанные обновления. Процедура обработки команды «Обновить» на клиенте:
Методы «ОбновитьНаСервере» и «ОбработатьОбновление»:
5. Использование «Webhooks»
Их нужно сохранить в шаблоне «C:\OpenServer\userdata\config\Apache_2.4-PHP_7.2-7.4_server.conf», для того чтобы при следующем запуске «Open Server» они не затерлись.
Для проверки воспользуемся приложением «Postman»:
В результате, внутренние локальные сервисы, станут доступны для внешнего взаимодействия:
Postman test ngrok
Для эксперимента, попробуем это сделать через «Postman»:
Для удаление 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;
Затем выполнить команды Проверить подключение и Готово.
В форме настройки учетной записи в поле «Наименование» необходимо прописать название чат-бота, которое будет выводиться в АРМ Диалоги и выполнить команду Готово.
Читайте также: