Не то чтобы часто, но всё-таки иногда у программистов/тестеров/сетевых инженеров/саппорта и других диаспр IT возникает необходимость получать уведомления о тех или иных событиях, которые имеют место быть в области их творческого безумия. Так стало и со мной, скромным тружеником большой компании, когда было сказано, что пора бы нашему отделу выставить регламент на обработку запросов клиентов, чтобы не расслабляться и получать премии. Счастья было полные штаны.
Естественно в первый же месяц премия была потеряна, ибо по условию было необходимо удовлетворить клиента максимум за 4 часа рабочего времени (делается это по старому доброму обычаю, в последние минуты), а про клиентов все забыли ибо релиз, ибо баги, ибо ищем и не до этого. Тогда-то и решили прикрутить какой-нибудь нотифай на случай, если станем забывать про запросы клиентов. Идея была проста: мигать смской или ещё чем-нибудь каждый 5 минут в случае, если до deadline в отношениях с клиентом и премией осталось меньше часа. Что и реализовали за минут 40 не потеряв ни цента.
Всякие смс-рассылалки были отвергнуты организмом сразу же, ибо необходимо было платить, регистрироваться, верифицироваться, переводить бабло, заниматься непристойностями с кривым API и т.п. Попробовали нагуглить какие-нибудь специальные сервисы для таких дел, подошла бы любая отсылалка почты, главное чтобы удобно и не парило, но повстречали лишь орды спамеров. Были разочарованы и уже было собирались крутить какой-нибудь свой почтовик, который бы пришлось самим поддерживать, расширять и работать через всякие костыли, но тут один из представителей моей диаспры краем глаза зацепился за ссылку на форум, где просят разобраться с API какого-то сервиса по уведомлениям — forum.vingrad.ru/forum/topic-351474/kw-talennsy-curl.html
Сервис мгновенно был выгуглен и обнаружен в стадии тестирования, однако уже имеющий сносный API, документацию и вполне себе большой бесплатный пакет для пробы (к слову сказать цен до сих пор не нашли).
Короткая регистрация, пара пробных запросов и пошёл процесс интеграции.
С клиентами мы общаемся через BILLmanager, поэтому просто положили на сервер скрипт, который зовёт список активных тикетов от клиентов:
/usr/local/ispmgr/sbin/mgrctl -m billmgr -o xml tickets
Получили xml'ку, в которой каждый тикет выражен элементом:
<elem> <id>251264</id> <subject>testing ticket</subject> <account>Test account (testing)</account> <datelast>2012-05-19 11:25:13</datelast> <responsible color="green">Support</responsible> <category>Service support</category> <expenses>0.0000 USD</expenses> <delay>0d+00:00</delay> <project>Cloud</project> <ticketid>239861</ticketid> <premium/> <weight>0</weight> <replyuntil color="green">0d+02:24</replyuntil> <unread/> <importance0/> </elem>
Самый важный для нас тэг это replyuntil, он характеризует время оставшееся до истечения регламента. Распарсив его мы можем оценить — пора нам уже бить в колокол или нет. Пора? Значит к оружию!
Предварительно все адепты веры нашего отдела зарегистрировались в сервисе talennsy, выбрали метод получения уведомлений (кто-то через мыло, кто-то твиттером), затем я создал группу, в которой будут рассылаться уведомления и на неё же подписался каждый. Дело оставалось за малым — добавить в скрипт создание уведомления и его отправку. Вышло всего три строки.
* Инициализируемся в сервисе и получаем идентификатор сессии.
http://service.talennsy.org/cgi-bin/users?action=login&login=cloud_test&password=oops
* Создаём уведомление для отправки. В ответ нам прилетит его id.
http://service.talennsy.org/cgi-bin/notes?action=create&header=ALARM&text=$ticket_id&group=122&sessionid=3YRKQOcsBRRLWOuqBOzS4SCmshE4lzAn
* Отправляем кричалку.
http://service.talennsy.org/cgi-bin/notes?action=send&sessionid=3YRKQOcsBRRLWOuqBOzS4SCmshE4lzAn¬e=$note_id
Естественно все логины/пароли/явки в примере ложные.
В конце месяца отпраздновали первую премию 8 литрами виски с коллой, а также парой репортов администрации сервиса о найденных багах и благодарностями.
Шляпа, поклон, занавес.
Автор: Alanir