Так сложилось что в нашей корпоративной среде разработчики используют групповые чаты skype для общения. Возникла необходимость уведомлять присутствующих о выполняющемся развертывании кода на productiontesting сервера.
Для этого был написан простенький python скрипт на Flask + SkypeKit и настроено окружение бесплатного в таких масштабах облачного сервиса dotCloud. Сервис вынесен за пределы нашей инфраструктуры для того, чтобы 1) иметь возможность получать уведомления об ошибках вне зависимости от состояния наших серверов, и 2) не ставить на свои сервера всякую проприетарную закрытую пакость (улыбка)
SkypeKit — это консольный демон skype, позволяющий управлять собой через pythonc++java, о нём уже писали на хабре (инструкция может немного устареть, но ничего сложного в процессе регистрации нет). Сразу оговорюсь, что для использования придётся заплатить целых $5 за доступ к SkypeKit for Desktop.
Итак, после того как вы вошли на developer.skype.com своим skype-аккаунтом и зарегистрировались как разработчик, а также зарегистрировали своё «приложение» и получили сгенерированные для вас и вашей платформы (в нашем случае это linux-x86-skypekit-novideo) исполняемые файлы и python SDK версий 3.7.0 (по крайней мере это то, что использую я) — можно приступать к настройке skyms.
- Скачиваем zipball
- В директорию skypekit/ копируем:
- Сгенерированный Distribution keypair (*.pem-файл) под именем dev.pem (это можно отредактировать в файле settings.py, если есть такое желание)
- Полученный бинарник linux-x86-skypekit-novideo
- Из архива SkypeKit SDK файлы: /ipc/python/skypekit.py и /interfaces/skype/python/Skype.py
- Редактируем в файле skyms/settings.py значения переменных skypeLogin и skypePassword в соответствии с аккаунтом, с которого будем слать уведомления
Теперь, имея настроенный аккаунт dotCloud (об этом можно почитать тут), выполняем в директории приложения:
dotcloud create -f sandbox skyms
dotcloud push skyms
- Ждём пока поставятся нужные пакеты и развернётся код
После этого переходим по ссылке, которую выводит в конце выполнения push (первый раз страница открывается довольно долго, потому что проходит подключение и авторизация)
Если что-то не работает (404 на главной, 499 или ещё какая беда) — смотрим логи сервиса командой
dotcloud logs skyms.www
На главной странице вашего свежеразвернутого сервиса вы увидите скромненькую формочку с двумя полями. В первое нужно вводить ChatBLOB, а во второе — сообщение, которое нужно отправить в чат.
ChatBLOB можно получить, введя команду /get uri в любом чате skype. В ответ вы (но не остальные участники беседы) получите сообщение от System вида:
skype:?chat&blob=ХХХ
, где ХХХ и будет идентификатором чата.
В следующей статье (буде такой интерес), я расскажу о том, как внедрить использование шлюза уведомлений в рецепт capistrano или в страницу ошибки
P.S: Использовать dotCloud конечно же не обязательно, если хочется — можно настроить всё по-другому, но для dotCloud у меня в репозитории уже лежат необходимые файлы конфигурации
P.P.S: По умолчанию, никакого ограничения доступа к шлюзу нет, так что на всякий случай стоит настроить http авторизацию средствами nginx, благо dotCloud это позволяет.
Автор: synchrone