Разворачиваем шлюз Skype-оповещений в облаке

в 17:10, , рубрики: dotcloud, python, skype, skypekit, метки: , ,

Разворачиваем шлюз Skype оповещений в облаке
Так сложилось что в нашей корпоративной среде разработчики используют групповые чаты 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.

  1. Скачиваем zipball
  2. В директорию skypekit/ копируем:
    • Сгенерированный Distribution keypair (*.pem-файл) под именем dev.pem (это можно отредактировать в файле settings.py, если есть такое желание)
    • Полученный бинарник linux-x86-skypekit-novideo
    • Из архива SkypeKit SDK файлы: /ipc/python/skypekit.py и /interfaces/skype/python/Skype.py
  3. Редактируем в файле skyms/settings.py значения переменных skypeLogin и skypePassword в соответствии с аккаунтом, с которого будем слать уведомления

Теперь, имея настроенный аккаунт dotCloud (об этом можно почитать тут), выполняем в директории приложения:

  1. dotcloud create -f sandbox skyms
  2. dotcloud push skyms
  3. Ждём пока поставятся нужные пакеты и развернётся код

После этого переходим по ссылке, которую выводит в конце выполнения 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

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