Плагин предназначен для интеграции BGERP системой сообщений Slack и предоставляет функционал:
привязка процесса к каналу Slack;
создание канала по событию;
установка параметров канала: тема, топик и т.п.;
приглашение исполнителей процесса в канал;
архивирование канала по событию;
отправка сообщений из BGERP в Slack;
загрузка выбранных сообщений из канала Slack в BGERP.
The plugin has to be enabled in configuration.
Login in Slack your <domain>.slack.com using account under that it will be accessed.
Create an Slack Application with ClientID (e.g. 112244252083.2278905589302) and ClientSecret (e.g. 1e2d043f32ad28708e027646d8ef0322)
In section OAuth & Permissions add Redirect URLs https://localhost , press Save URLs
Open in BGERP Administration / Slack Configuration, use ClientID and ClientSecret there to obtain a TOKEN
Настроить в конфигурации тип сообщения
После настройки в системе типа сообщения к любому процессу может быть привязан канал Slack. Для выполнения этого в ручном режиме тип объекта выбирается в секции Привязать иной объект, наименование оставляется пустым. Уже привязанный канал изображён на снимке экрана выше.
После того, как канал привязан к процессу в Сообщениях процесса возможна отправка постов в привязанный канал.
Входящие сообщение импортируются из канала при наличии скрипта expressionMessageExtract в типе сообщения.
В конфигурации типа процесса может быть настроена автоматизация работы со Slack с помощью скрипта в doExpression простого обработчика событий. Ниже приведено несколько примеров возможных действий по различным событиям в процессе.
При переходе процесса в статус 10:
привязать если нет канал Slack к процессу;
пригласить исполнителей (они сопоставляются с пользователями Slack по логину в текстовом параметре пользователя BGERP);
установить топик канала, полученный из названия статуса процесса и привязанного к процессу контрагента.
onProcessEvent.1.events=statusChanged:10 onProcessEvent.1.doExpression=<<END paramDao = new("org.bgerp.dao.param.ParamValueDAO", conSet.getConnection()); linkDao = new("ru.bgcrm.dao.process.ProcessLinkDAO", conSet.getConnection()); slack.linkChannel(process); slack.inviteExecutors(process); topic = "[" + process.getStatusTitle() + "]"; link = u.getFirst(linkDao.getObjectLinksWithType(process.getId(), "customer")); if (link != null ) topic += " " + link.getLinkedObjectTitle(); slack.setTopic(process, topic); END
При переводе процесса в статус 8 перемещение привязанного канала в архив.
onProcessEvent.2.events=statusChanged:8 onProcessEvent.2.doExpression=<<END slack.archive(process, true); END
При изменении исполнителей процесса - приглашение новых исполнителей.
onProcessEvent.3.events=executorsChanged onProcessEvent.3.doExpression=<<END slack.inviteExecutors(process); END
Объект slack класса ru.bgcrm.plugin.slack.ExpressionObject с функциями API предоставляется плагином.