Leo slack

Написал небольшой сервис для слэка. Познакомился с API и способами интеграции.

Leo Slack — это серверное готовое решение, а также фреймворк для построения сервисов, интегрированных со slack-чатом вашей команды, для публикации больших смайлов (также известных как стикеры) в каналы, группы и личную переписку.

Исходный код и инструкции на английском доступны по адресу: https://github.com/obukhov/leoslack

Как это выглядит

В действии решение очень простое. Пользователь в одном из чатов (канале, группе, личной переписке) вводит так называемую слеш-команду с кодом стикера в качестве аргумента, а бот публикует от имени пользователя сообщение с прикрепленным стикером.

leoslackHowitlookslike

Авторские права

Код свободен для использования в некоммерческих целях. Изображения в папке images/source являются собственностью ООО Лингуалео и не могут быть использованы без письменного разрешения ни для каких целей кроме предусмотренных в качестве стикеров в чате slack.

Установка

Приложение требует веб сервер с установленной версией php не менее 5.4. Установка происходит в два простых шага:

Клонируем репозиторий:

git clone git@github.com:obukhov/leoslack.git

Устанавливаем зависимости с помощью composer:

composer install

Если у вас не установлен composer, установите его с помощью инструкций на официальном сайте composer.

Конфигурация и настройка

Чтобы сервис заработал нужно настроить следующие интеграции в вашем аккаунте slack.

Для начала скопируйте файл настроек из дистрибутива:

cp config.dist.php config.php

В этом файле можно переопределить любые настройки определенные в файле baseConfig.php.

Конфигурация слеш-команды

В панели управления вашим slack-аккаунтом добавьте новую слеш-команду:

screenshot3

Command — ключевое слово для того чтобы задействовать интеграцию. Этот параметр должен совпадать со значением $config['app']['stickerCommand']в конфигурации.

URL — адрес где развернуто приложение.

Token — токен интеграции. Вы должны скопировать значение токена в параметр $config['slack']['slashCommandToken']вашего файла конфигурации config.php.

Для того чтобы использование команды было более интуитивным заполните секцию Autocomplete help text.

Конфигурация входящего веб-хука

Чтобы бот мог публиковать в чатах сообщения вам нужно настроить входящий веб-хук:

leoslackIncomingWebHook

Channel for posting to — канал в который будут публиковаться сообщения, можно выбрать любой, при запросе канал будет переопределен на текущий.

Вы должны скопировать значение поля «web hook URL» в файл конфигурации по ключу $config['slack']['incomingWebHookURL'].

Добавляем токен для API

Последняя интеграция — веб API. Она нужна для получения аватара и имени пользователя. Скопируйте значение токена отсюда: https://api.slack.com/web в файл конфигурации config.phpпо ключу $config['slack']['webApiToken'].

Обзор настроек

В файле базовой конфигурации baseConfig.phpесть несколько полезных настроек. Их можно переопределить задав те же ключи в файле config.php.

Настройки обработки изображений

...
'image' => [
        'basePath' => realpath('./images/'),
        'baseUrl' => '', // base url for images, you should redefine it in config.php
        'size' => 250,
        'map' => []
]
...
  • basePath — можно переопределить, если вы хотите хранить картинки в другой папке.
  • baseUrl — это префикс для всех url стикеров. Вы должны указать домен и путь к папке, в которую установлено приложение.
  • size — высота изображения. Все стикеры будут смасштабированы до этой высоты.
  • map — ассоциативный массив кодов стикеров и имен файлов.

Настройки приложения

...
'app' => [
    'helpUrl' => '', // url to index.php file of this project, you should redefine it in config.php
    'stickerCommand' => '/leo',
]
...
  • stickerCommand — можно переопрделить ключевое слово слеш-команды. Нужно следить чтобы, значение этой настройки совпадало с конфигурацией слеш-команды.
  • helpUrl — этот url совпадает с url слеш-команды. Если открыть его в браузере, будет показана страница со всеми стикерами и их кодами. Также этот url будет использован в сообщении об ошибке, если пользователь введет несуществующий код стикера:

leoslackHelp