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 не будет опубликован. Обязательные поля помечены *