Плагин оповещения по 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