company_banner

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

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

    Вот и все, теперь вы будете быстро узнавать о срочных задачах.
    Southbridge
    Обеспечиваем стабильную работу highload-проектов

    Comments 16

      –2
      Как-то в мире Ruby вроде не принято выкладывать в паблик либы без единого теста, да еще и с какой-то шаблонной чушью в папке config. Неужеле сложно было оформить по-человечески?
        +9
        Я никогда такого не понимал. Человек потратил свое время, написал код, написал статью, выложил это в общий доступ — а вы тут ему притензии предъявляете, что сделано не так, как вы хотите.
          +3
          А по вашему если выкладываешь бесплатно в общий доступ, то можно плюнуть потенциальным потребителям своего продукта в лицо и добавить «скажите спасибо, что вообще выложил»? Есть определенные стандарты, заложенные сообществом, и не соблюсти их даже по-минимуму — это показать прямое неуважение. Такой продукт не внушает никакого доверия и надежды на дальнейшую поддержку. Если автор не удосужился даже первую версию сделать с человеческим лицом, то последующие будут не лучше, если вообще будут. Кому такое надо?

          Ну и плюс личная непереносимость непрофессионализма, такой вот недостаток.
            –1
            Не пользуйтесь? Проблему нашли.
              +6
              А почему вы считаете что автор, выкладывая бесплатно свой код, сразу становится кому-то что-то должен?
              0
              Есть правила оформления кода.
              А вот из-за того, что оформлено не по правилам возникает тонна проблем при обновлении на новую версию.

              Зачем создавать ситуацию, когда каждый следующий релиз напоминает выход на минное поле?
              Для примера gem carrierwave — неделю или две назад что-то около 100 ошибок было сейчас только 22.
              кстати с популярным delayed_job таже ерунда.
                0
                Я еще раз повторю — автор никому ничего не должен. Вы можете помочь советом, но никак уж не кидать претензии, как это сделал комментатор выше.
            +3
            Странен выбор smsc в качестве sms-шлюза, он дорогой…
              +3
              Посоветуйте дешевле :-)
                0
                http://sms.ru
                1 сообщение РФ → 0.25 руб. (Цена понижается с 25 копеек до 7 копеек как только вы потратите 5000 рублей в текущем календарном месяце)
                  0
                  +60 смс в сутки бесплатно на свой телефон. Как раз для уведомлялок
                  0
                  littlesms.ru/

                  Для ruby есть простой gem даже.
                    0
                    Их очень много, рекомендую поискать через поисковик;)
                    Мы http://www.epochtasms.ru/ используем
                  0
                  Спасибо большое за плагин. Давно планировал сделать более гибкую систему уведомлений (например отсылать мыло QA при переводе тикета в тестинг), на основе вашего кода это сильно проще теперь сделать.
                    +1
                    Ух, ты! Это ваш баннер на Хабре вверху справа висел?! Шикарный дизайн /offtop, конечно/
                      0
                      Спасибо, очень приятно :-)

                    Only users with full accounts can post comments. Log in, please.