- PVSM.RU - https://www.pvsm.ru -

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

Разворачиваем шлюз Skype оповещений в облаке
Так сложилось что в нашей корпоративной среде разработчики используют групповые чаты skype для общения. Возникла необходимость уведомлять присутствующих о выполняющемся развертывании кода на productiontesting сервера.

Для этого был написан простенький python скрипт на Flask + SkypeKit и настроено окружение бесплатного в таких масштабах облачного сервиса dotCloud [1]. Сервис вынесен за пределы нашей инфраструктуры для того, чтобы 1) иметь возможность получать уведомления об ошибках вне зависимости от состояния наших серверов, и 2) не ставить на свои сервера всякую проприетарную закрытую пакость (улыбка)

SkypeKit — это консольный демон skype, позволяющий управлять собой через pythonc++java, о нём уже писали [2] на хабре (инструкция может немного устареть, но ничего сложного в процессе регистрации [3] нет). Сразу оговорюсь, что для использования придётся заплатить целых $5 за доступ к SkypeKit for Desktop.

Итак, после того как вы вошли на developer.skype.com [3] своим skype-аккаунтом и зарегистрировались как разработчик, а также зарегистрировали своё «приложение» и получили сгенерированные для вас и вашей платформы (в нашем случае это linux-x86-skypekit-novideo) исполняемые файлы и python SDK версий 3.7.0 (по крайней мере это то, что использую я) — можно приступать к настройке skyms [4].

  1. Скачиваем zipball [5]
  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 (об этом можно почитать тут [6]), выполняем в директории приложения:

  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 это позволяет [7].

Автор: synchrone


Сайт-источник PVSM.RU: https://www.pvsm.ru

Путь до страницы источника: https://www.pvsm.ru/python/11174

Ссылки в тексте:

[1] dotCloud: https://www.dotcloud.com/

[2] писали: http://habrahabr.ru/post/124321/

[3] регистрации: http://developer.skype.com/

[4] skyms: https://github.com/synchrone/skyms

[5] zipball: https://github.com/synchrone/skyms/zipball/master

[6] тут: http://docs.dotcloud.com/firststeps/install/

[7] dotCloud это позволяет: http://docs.dotcloud.com/guides/nginx/