Slack бот на 1С



Представляю небольшую разработку, позволяющую использовать 1С в качестве бэкенда для слакбота. В 1С нужно настроить Http-сервис и запустить небольшую утилиту.

Общая суть проста — приложение прослойка подключается к серверу Slack и ждет сообщений. Затем транслирует их в 1С и возвращает ответ пользователю. Отправлять сообщения из 1С можно и напрямую, минуя утилиту. Хотя на эту тему публикаций достаточно, но в демо базе функции есть.

Итак, как настраивать. В архиве есть slackbot.exe и config.json. Они должны быть в одном каталоге. В конфиге нужно указать токен, полученный на странице https://my.slack.com/services/new/bot . Также нужно указать адрес http-сервиса, настроенного в 1С и параметры доступа к нему. И затем запустить slackbot.exe. Он просто отправляет POST запросы с параметрами user, message и email. Для полноценной работы можно с помощью сторонних утилит запускать как сервис. Прослойка написана на Go, исходник простой и лежит на https://github.com/nikepan/go-rtm2http-slackbot. В архиве лежат x86 версии под windows и linux.

После этого можно отправить боту команду "бабло" (без слэша и кавычек). Пример http-сервиса есть в приложенном dt файле. Там обрабатываются команды "бабло", "проекты" и "документы". Также есть возможность в пользовательсоком режиме настроить ответы на другие сообщения. Роутинг сообщений для простоты реализован прямо в модуле http-сервиса. В демо-базе пользователи ищутся по адресу электронной почты, и если не находятся, то по идентификатору Slack.

// Обработчик команды бабло
Функция ВывестиБабло(Сотрудник) Экспорт
ТекстОтвета = "Привет, " + ОбщегоНазначения2.ПолучитьИмяФизлица(Сотрудник) + Символы.ВК;
ТекстОтвета = ТекстОтвета + "Ты нам ничего не должен)";
Возврат ТекстОтвета;
КонецФункции

Обработка "Тест Слак" демонстрирует отправку сообщений напрямую из 1С. Содержит всего несколько функций:

  • Отправка сообщения пользователю с указанным адресом;
  • Получение сообщений чатов с пользователями;
  • Заполнение идентификаторов пользователей и их каналов для более быстрой прямой отправки из 1С (чтобы не запрашивать их каждый раз).

Если в базе используется авторизация, то, как обычно, делаем пользователя на латиннице с ролью "слакбот" и указываем параметры входа в прослойке. При интеграции в пути к базе скорее всего нужно будет только заменить db на имя базы, если не менять сервис.

Константы:
  • ТокенСлак — нужна для отправки сообщений прямо из 1С. Пример есть в обработке ТестSlack.
  • ИмяСлак — то, как бот будет себя называть.
  • ИдСлак — нужно при ручном заборе сообщений в обработке ТестSlack, чтобы не показывать сообщения бота.
 

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

4 Comments

  1. pereligins

    Добрый день! Исходники не предоставляете?

    Reply
  2. PaNick

    (1) Алексей, там же есть ссылка на github. А в 1С все открыто

    Reply
  3. pereligins

    (2) Точно, прошу прощения. проглядел этот абзац. Спасибо!

    Reply
  4. atland

    Добрый день!

    в форме теста при нажатии на «Входящие сообщения» выходит ошибка

    в браузере это выглядит также:

    https://slack.com/api/im.history?token=xoxp-xxxx...

    {«ok»:false,»error»:»missing_scope»,»needed»:»im:history»,»provided»:»identify,incoming-webhook»}

    У меня неверные настройки в Slack? или у них API изменился?

    Reply

Leave a Comment

Ваш адрес email не будет опубликован. Обязательные поля помечены *