Skype-бот для голосовых конференций

в 19:21, , рубрики: python, skype, skypekit, метки: , ,

Skype бот для голосовых конференций

Вероятно, некоторые помнят сервис Skype Casts — публичные голосовые конференции, где каждый мог создать конференцию, которая анонсировалась на сайте skype.com. В 2008 году сервис был закрыт.

Сегодня единственная возможность хостить конференцию — держать запущенным Skype-клиент.
Это не удобно, потому как человек, который «держит» конференц-звонок не может принять входящий вызов, иначе конференция будет поставлена на удержание и никто в ней не сможет общаться. Если у хоста проблемы с интернетом — связь портится у всех.
К тому же хостить звонок в котором 10-15 участников существенно нагружает компьютер.

Мы пытались решить эту задачу держа запущенным Skype на Windows-сервере. Чтобы звонок не обрывался когда все участники кладут трубку — приходилось запускать две копии клиента и держать второго как участника конференции.
Но такая схема не очень стабильна, через 3-5 дней один из клиентов вылетает и звонок обрывается. Приходилось каждый переподнимать его вручную.

И вот наконец удалось найти стабльное и просто решение на основе skypekit позволяющие:

Постоянно держать звонок с помощью одной копии skypekit.
Если все участники конференции положили трубки, звонок перезапускается как /golive

Хостить бота на Linux-сервере без X-ов.
Десктопный клиент требует для запуска X-сервер. Skypekit можно запускать без него, даже на VPS.
Доступен под все платформы Windows/Linux/Mac

Управлять ботом через комманды в чате
Бот умеет разграничивать права доступа, различать комманды отправленные из основного чата конференции и из других чатов.
При желании можно написать аналог irc-шного eggdrop.

1) Качаем skypekit

developer.skype.com/

Он стоит 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.
Skype бот для голосовых конференцийSkype бот для голосовых конференцийSkype бот для голосовых конференцийSkype бот для голосовых конференцийSkype бот для голосовых конференций

Автор: zhovner

Источник


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


https://ajax.googleapis.com/ajax/libs/jquery/3.4.1/jquery.min.js