Вероятно, некоторые помнят сервис Skype Casts — публичные голосовые конференции, где каждый мог создать конференцию, которая анонсировалась на сайте skype.com. В 2008 году сервис был закрыт.
Сегодня единственная возможность хостить конференцию — держать запущенным Skype-клиент.
Это не удобно, потому как человек, который «держит» конференц-звонок не может принять входящий вызов, иначе конференция будет поставлена на удержание и никто в ней не сможет общаться. Если у хоста проблемы с интернетом — связь портится у всех.
К тому же хостить звонок в котором 10-15 участников существенно нагружает компьютер.
Мы пытались решить эту задачу держа запущенным Skype на Windows-сервере. Чтобы звонок не обрывался когда все участники кладут трубку — приходилось запускать две копии клиента и держать второго как участника конференции.
Но такая схема не очень стабильна, через 3-5 дней один из клиентов вылетает и звонок обрывается. Приходилось каждый переподнимать его вручную.
И вот наконец удалось найти стабльное и просто решение на основе skypekit позволяющие:
Постоянно держать звонок с помощью одной копии skypekit.
Если все участники конференции положили трубки, звонок перезапускается как /golive
Хостить бота на Linux-сервере без X-ов.
Десктопный клиент требует для запуска X-сервер. Skypekit можно запускать без него, даже на
Доступен под все платформы Windows/Linux/Mac
Управлять ботом через комманды в чате
Бот умеет разграничивать права доступа, различать комманды отправленные из основного чата конференции и из других чатов.
При желании можно написать аналог irc-шного eggdrop.
1) Качаем skypekit
Он стоит 5$. Если денег жалко я могу поделиться своим.
Компилируем заглушки для видео и звука. это немного неочевидный процесс, поэтому можно спрашивать по ходу).
2) Берем skypebot.py отсюда github.com/zhovner/skypebot
и кладем его в {skypekit_dir}/examples/python/tutorial/
3) Правим skypebot.py
Предпологается, что у вас уже есть созданная конференций в которую будет добавлен бот.
Нельзя чтобы аккаунт бота был создателем конференции. Команда /get creator введенная чате конференции вернет логин создателя.
В строке 38 необходимо вставить ID конференции. Чтобы его получить нужно ввести /get name в чате конференции.
Команда возвращает такую строку name=#skypename1/$skypename2;c7cddqc19522bab3
В скрипт строку необходимо добавлять в таком виде:
conferenceID = '#skypename1/$skypename2;c7cddqc19522bab3'
В списке Admins (строка 43) можно перечислить логины тех кто сможет управлять ботом.
4) Запускаем всю конструкцию
# заглушка видео (в моем случае)
{skypekit_dir}/skypekit/reference/videortphost-loopback/build/videortphost-loopback
# сам skypekit
{skypekit_dir}/bin/linux-x86/linux-x86-skypekit-videortp
# бот (логин пароль от аккаунта передается через аргументы при запуске)
{skypekit_dir}/examples/python/tutorial/skypebot.py botskypename password
Теперь бот будет держать звонок постоянно.
Команды в чате:
!down — прекратить держать звонок
!up — возобновить звонок
Внимание!
Молодой парень срочно познакомится с более опытным Python-программистом для серьезных отношений в контексте совершенствования бота, потому как моих навыков явно недостаточно. В перспективе можно сделать полноценный аналог бота eggdrop или аналог сервиса SkypeCast.
Автор: zhovner