Mattermost — корпоративный чат на собственном сервере с управлением из 1С












Интеграция с чатом Mattermost на базе 1С. Управление списком пользователей, создание команд и каналов, настройка вебхуков для получения сообщений в 1С.

Для удобства взаимодействия с большим число разрозненных офисов и сотрудников решил попробовать найти подходящий чат, для себя ставил ряд думаю очевидных критериев: бесплатный, свой сервер, api для управления, функциональность (вложения, оформления и т.д.), симпатичный, кроссплатформенный. Выбор остановил на этом, как удовлетворяющий всем им. Из недостатков: есть Enterprise Edition которая богаче функциональнее именно в административном плане, но стоит при этом резко больше бесплатной. И так:

Mattermost

Это корпоративный чат позиционирующий себя как альтернатива известному Slack. Интерфейс построен по принципу каналов, разделенных на виды:

  • Публичный — доступен всем желающим
  • Приватный — каналы по приглашению
  • Личный — тет-а-тет переписка (можно небольшой группой)

Чат имеет обширную api и описание к нему, через которые я смог реализовать все необходимое мне в 1С. А так же поддерживает плагины, но лично я не нашел необходимые/подходящее мне. Функционал плагинов ещё в стадии беты, поэтому нужно посмотреть что будет дальше. Отдельно хочу отметить штатную функцию "Ответить" создающую как бы под ветку канала, объединяя все сообщения в одну линию — удобно.

Поддерживаются все популярные платформы:

Установку сервера производил по инструкции из документации. Работа в линуксе мне не привычна, погуглив всякое смог установить и настроить и https. В первый раз ставил через докер (изучение заняло пару дней), но потом пришел к мнению что лучше ставить напрямую (поставил за час используя багаж знаний с первой попытки), так как это и так выделенный сервер (для справки: 2 гб, 2 ядра).

1C MattermostService

Для управления чатом написал отдельную конфигурацию. В своей разработке, я всегда стараюсь выносить дополнительный функционал отдельно от рабочей базы. Выстраивая процесс обмена так: Рабочая база (изолирована из вне) сама инициализирует обмен с нужной сервисной базой выгружая и получая данные. Это позволяет обезопасить рабочую базу, и оставляет мне контроль над сервисными функциями. Конфигурация имеет только блок управления сервером Mattermost, механизмы обмена с рабочей базы вынесены в расширение и не представлены в публикации (так как имеют узкоспециальное назначение под клиента в специально разработанной под него конфигурации).

Механика управления следующая: После установки сервера Mattermost в нём создается специальный пользователь-аля бот. Его данные прописываются в параметрах сервера, и все дальнейшие действия выполняются от его имени. Конфигурация позволяет:

  1. Управлять командами и каналами: создавать, обновлять и получать данные с сервера.
  2. Управлять пользователями: создавать и удалять пользователей, регистрировать в командах и каналах.
  3. Настраивать вебхук на канал для блокировки сообщений в нем.
 

 Настройка вебхука

По поводу вебхука: Я его использую для "ленты новостей" — т.е. публичный канал, в который по умолчанию подключаются все пользователи. Так как функции администрирования в Mattermost доступны только в платной редакции, я реализовал это через 1С. Когда пользователь пишет сообщение в этот чат, вызывается исходящий вебхук к серверу 1С, который проверяет, может ли пользователь сообщения писать в нем. Если нет, то посылает команду на удаление этого сообщения. В идеале, хотелось бы ещё добавить уведомление в приват для этого пользователя, что туда писать нельзя, поэтому сообщение удалено. Думаю в будущем добавлю.

 

 Скриншоты интерфейса

Работает на 1С:Предприятие 8.3 (8.3.13.1513)

Mattermost Версия: 5.10.0 Версия Схемы Базы Данных: 5.10.0 База данных: postgres

П.С.

Конфигурация распространяется "как есть" работает у меня ) Вы можете пилить под себя как хочется. Из опыта могу сказать, что пытался встроить чат прям в обычную форму через ПолеHTMLДокумента, переводя (через реестр) на использование в 1С IE11. Чат работал, но утекала память. На новой версии платформы с встроенным "webkit`ом" у меня не заработало. Поэтому пришлось от этой идеи отказаться.

У меня маленький опыт работы в управляемых формах и организации поэтапных вызовов (клиент-сервер-фоновые задания) поэтому если я что-то сделал не правильно — буду рад совету "как правильно".

В конфигурации содержится КонсольЗаданий за авторством (c) Душелов’2009 — спасибо ему за разработку.

24 Comments

  1. kolabaister

    А пуши у вас работают?

    Reply
  2. Steelvan

    Готовая виртуалка беседки «mattermost».

    https://bitnami.com/stack/mattermost/virtual-machine

    Reply
  3. Steelvan

    Вот еще список виртуалок других беседок.

    https://bitnami.com/stacks/chat

    Reply
  4. Serj1C

    девопс бесплатный?

    Reply
  5. tanat74

    (1) Да, я прописал их сервер.

    https://monosnap.com/file/l9UF1n1B6Q7ZJROA1Gpn6nXmhatp3x

    Reply
  6. tanat74

    (4) Не понимаю этого термина в этом контексте.

    Reply
  7. tanat74

    (2) Докер можно скачать и с их официального сервера https://mattermost.com/download/

    Или это просто реклама bitnami? Дак она и там тоже есть)

    Reply
  8. maxim4566

    Я так понимаю как замена сервера взаимодействия от 1С

    Reply
  9. Serj1C

    (6) DevOps на первом скриншоте

    Reply
  10. DonAlPatino

    (8) Я вот как раз не очень понял — можно ли подключить к этому делу несколько разных инфобаз и как оно с пользователями в таком случае разберется (Вроде это как раз то, что СВ делает из коробки)?

    Reply
  11. GreenDragon

    (5) А почему не Rocket.Chat? Сейчас тоже сидим на mattermost, но до этого я прикручивал Рокет, и он мне показался удобнее в плане интеграции с чем угодно. Особенно порадовали скрипты для преобразования пакетов данных от этого самого «чего угодно» в «какой нравится» вид.

    Rocket.Chat Incoming WebHook Scripting

    Reply
  12. GreenDragon

    (3) docker run —name mattermost-preview -d —publish 8065:8065 mattermost/mattermost-preview

    И всё. Без вот этой вот порнографии с виртуалками

    Reply
  13. GreenDragon

    (10) Можно создать отдельные команды под разные базы, можно просто слать в разные каналы, можно слать в один, но автором сообщения будет пользователь с именем базы… Тут вообще никаких трудностей с этим.

    Reply
  14. GreenDragon

    (11) Да, ещё дико бесит, что нельзя настроить мерцание иконки клиента при получении новых сообщений — только малюсенькая красная точка появляется. В рокете полгода назад прикрутили мерцание после пачки ишузов в его репозитории на гитхабе (как в спарке, аське и прочих допотопных клиентах, потому как гораздо эффективнее привлекается внимание).

    Reply
  15. GreenDragon

    (9) Это канал. А вообще DevOps — это набор практик. Попробуйте уточнить для себя термин, прежде чем употреблять, тогда получится эффективнее получать ответы на вопросы.

    Reply
  16. tanat74

    (11) Я многие чаты смотрел. В целом первые попытки делал на Zulip, но там как то совсем грустно было с апи (а может я не разобрался), решил попробовать mm. Ну и так на нем остановился. То что вы скинули действительно интересно, может в будущем по изучаю на досуге.

    Reply
  17. GreenDragon

    (16) У нас просто завернули Рокет по ряду внутренних политик в компании. Но мне действительно понравилось с ним взаимодействовать — как-то «лампово» прям.

    Reply
  18. tanat74

    (17) Ну если речь, в частности о дизайне, то да, мне кажется строгий дизайн mm более подходит под корпоративные стандарты.

    Reply
  19. GreenDragon

    (18) Не, суть не в этом. Дизайн прикрутить можно самому — делай форк в гитхабе, крути свой дизайн и собирай дистрибутив, если очень нужно https://github.com/RocketChat/Rocket.Chat

    У нас были скорее высокие требования к стабильности и защищённости — а с этим у Рокета полгода назад всё было не столь радужно.

    Reply
  20. tanat74

    (10) С точки зрения этой разработки, этот момент нужно будет допиливать самостоятельно, так как нужно.

    Reply
  21. DonAlPatino

    (13) Стоп. Т.е. бот шлет сообщение всем подписанным на канал? Про пользователей базы он не знает и персонально никому ничего послать не может? Ну тогда же это не замена СВ. СВ же именно с пользователями работает…

    Reply
  22. GreenDragon

    (21) это реализуемая фича. СВ хороша тем, что это всё ВНУТРИ базы. А снаружи можно прикрутить с разной степенью сложности что угодно. Хоть автоматизированные таблички с клинописью.

    Reply
  23. tanat74

    (21) Ваши ожидания слишком завышены. СВ это интегрированный продукт 1С, гораздо более богатый (чат, видео, удаленное подключение), но он платный (а именно включен только в ключи КОРП). Mattermost это корпоративный чат и только. К плюсам можно отнести бесплатность ну и пожалуй кроссплатформенность включая ios и android. Что для СВ дело времени.

    По сообщениям: в рамках mattermost можно создавать личный чат, а потом писать туда от имени бота. Ссылка на апи: https://api.mattermost.com/

    Reply
  24. DonAlPatino

    (23)Ну я просто увидел (8) и решил, что человек знает больше, чем написано в статье. По факту вы абсолютно правы.

    Reply

Leave a Comment

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