Плагин оповещения по SMS о критичных задачах для Redmine

В нашей компании возникла необходимость оповещения по SMS о задачах, поставленных в трекере Redmine, с приоритетом «Авария!». Очень удобно получать такие оповещения, когда требуется мгновенная реакция.

Совместно с командой разработчиков из secoint.ru мы разработали плагин redmine_status_notifier, о котором я и расскажу под катом.

Как работает плагин

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

Как установить и настроить

Плагин проверен на последних стабильных версиях Redmine, к примеру, 2.1.4.
Загружаем плагин в папку redmine/plugins:

cd redmine/plugins && git clone https://github.com/olemskoi/redmine_status_notifier.git

Редактируем параметры «critical_priority» (список приоритетов, при которых будут отправляться оповещения) и «script» (путь к скрипту, который будет отправлять оповещения) в файле redmine_status_notifier/init.rb.

Создаем скрипт примерно следующего содержания:

#!/bin/sh

# скрипт получает следующие параметры от плагина:
# событие: new / done
ACTION="$1"
# номер задачи
ISSUE_ID="$2"
# идентификатор проекта
PROJECT="$3"
# тема задачи
SUBJECT="$4"

# в качестве sms-шлюза мы используем сервис smsc.ru
SMSC_LOGIN="mylogin"
SMSC_PASSWORD="mypassword"

# номера для оповещения, указанные через запятую
SMSC_NOTIFYTELS="89167777777,89151111111"

case "$ACTION" in
    active)
        # если задача новая или открыта
        STATUS="new"
        ;;
    done)
        # если задачу закрыли
        STATUS="done"
        ;;
    *)
        echo "please define action"
        exit 1
        ;;
esac

# шаблон sms-сообщения. в данном случае выглядит следующим образом: "new myproject #111: Сервер недоступен"
SMSC_MESSAGE="$STATUS $PROJECT #$ISSUE_ID: $SUBJECT"

# используя API smsc, отправляем утилитой curl запрос на отправку сообщений
LC_ALL=ru_RU.UTF-8 /usr/bin/curl --silent --show-error "https://smsc.ru/sys/send.php?charset=utf-8&login=$SMSC_LOGIN&psw=$SMSC_PASSWORD&phones=$SMSC_NOTIFYTELS&mes=$SMSC_MESSAGE" > /dev/null 2>&1

Перезапускаем Redmine.

Для проектов, в которых нужны оповещения, в настройках включаем модуль «Отправка уведомлений об авариях».
Включаем отправку уведомлений в настройках проекта

Вот и все, теперь вы будете быстро узнавать о срочных задачах.

Автор: olemskoi

Источник

Оставить комментарий