Как я интегрировался с сервисом talennsy и спас свою премию

в 12:33, , рубрики: Песочница, премия, Программирование, сервис уведомлений, управление проектами, метки: ,

Не то чтобы часто, но всё-таки иногда у программистов/тестеров/сетевых инженеров/саппорта и других диаспр 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&note=$note_id

Естественно все логины/пароли/явки в примере ложные.

В конце месяца отпраздновали первую премию 8 литрами виски с коллой, а также парой репортов администрации сервиса о найденных багах и благодарностями.

Шляпа, поклон, занавес.

Автор: Alanir


* - обязательные к заполнению поля


https://ajax.googleapis.com/ajax/libs/jquery/3.4.1/jquery.min.js