Статьи

Skype-бот с UNIX-скриптингом и HTTP Webhooks

Skype  является самым популярным IM-клиентом с более чем 200 миллионами пользователей в месяц. Это просто и надежно: любой может использовать его где угодно, даже на мобильном телефоне. Когда вы работаете с виртуальными командами, групповые чаты Skype становятся жизненно важным инструментом общения.

В Skype отсутствует хорошая встроенная поддержка внешних сервисных сообщений или роботов, отправляющих и получающих автоматические сообщения. Sevabot, дружественный Skypebot , решает эту проблему , позволяя легко и даже удаленно создавать сценарии Skype через простой HTTP-интерфейс и с любым языком сценариев UNIX. Вы даже можете отправлять сообщения Skype в групповой чат прямо из веб-браузера Javascript.

Севабот любит тебя.

1. Варианты использования

Sevabot предназначен для поддержки искусственного интеллекта в группах виртуальной разработки и эксплуатации.

  • Получать информацию о состоянии разработки в чате Skype (непрерывная интеграция, например коммиты Jenkins, Travis, Github и Subversion)
  • Получайте оперативные оповещения, такие как перегруженные серверы, отключение сервиса (например, оповещения о мониторинге Zabbix)
  • Добавьте свои собственные команды группового чата, чтобы Sevabot выполнял для вас автоматизированные задачи (вы можете писать скрипты на * любом * поддерживаемом UNIX языке программирования)

Область применения Sevabot не обязательно должна быть ограничена разработкой программного обеспечения: вы можете, например, заставить Sevabot взаимодействовать с Google Docs или Salesforce.

2. Установка

Sevabot может работать на сервере Linux, рабочем столе Linux и рабочем столе OSX. Из-за того, как построен Skype, вам необходимо запустить клиент Skype с графическим интерфейсом внутри виртуального X-сервера, чтобы развернуть Skype на рабочем сервере. Автоматизированная конфигурация сервера Vagrant поддерживается для автоматического создания и развертывания виртуальной машины под управлением Sevabot .

Sevabot может работать под Windows, теоретически, но авторы не имели вдохновения для изучения этого хитрого варианта.

3. Программирование

Севабот написан на Python . Сценариям Sevabot, однако, не нужны знания Python, так как

  • Модули Sevabot — это обычные сценарии UNIX, которые вы можете написать на Bash, Python, Perl, Ruby, Javascript, Haskel или на любом другом ежедневном препарате.
  • Внешние сервисы вызывают Sevabot через HTTP webhooks, и любой язык программирования может выполнять HTTP-запросы

Вы даже можете создавать сценарии Sevabot без знания программирования,  поскольку существуют HTTP-сервисы-посредники, такие как Zapier , которые позволяют подключать источники событий (например, Github API) и приемники (интерфейс Sevabot HTTP).

Фактически Sevabot является посредником между  инфраструктурой веб-сервера Flask  (включает HTTP-интерфейс) и  Skype4Py API  (управлять клиентом Skype GUI с помощью Python).

Вот простой пример того, как отправить сообщение в чат Skype из сценария оболочки Bash. Это перехват Subversion после фиксации, который отображает сообщение фиксации в определенном групповом чате Skype ( полный пример ):

#!/bin/bash

repo="$1"

rev="$2"

svnlook="/usr/bin/svnlook"

# Get last commit author
author=`$svnlook author $repo`

# Get last commit message
commit_message=`$svnlook log $repo`

# List of changed files
changed=`$svnlook changed $repo`

# Chat id
chat="YOUR-CHAT-ID-HERE"

# Sevabot endpoint informaiton
# Shared secret
secret="YOUR-SHARED-SECRET-HERE"
msgaddress="http://YOURSERVER.COM:5000/msg/"

# Create chat message
msg="★ $author - $commit_message $changed"

# Sign the message with MD5
md5=`echo -n "$chat$msg$secret" | md5sum`

#md5sum command prints a '-' to the end. Let's get rid of that.
for m in $md5; do
  break
done

# Call Sevabot's HTTP interface
curl $msgaddress --data-urlencode chat="$chat" --data-urlencode msg="$msg" --data-urlencode md5="$m"

exit 0

4. Хочешь — приходи к нам

Перейдите на страницу проекта Sevabot Github для получения дополнительной информации . Также проверьте  информацию сообщества ; в настоящее время у нас около пяти активных участников.