Пользователь
0,0
рейтинг
22 декабря 2012 в 23:21

Разработка → 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.
Павел Жовнер @zhovner
карма
172,0
рейтинг 0,0
Реклама помогает поддерживать и развивать наши сервисы

Подробнее
Реклама

Самое читаемое Разработка

Комментарии (53)

  • +5
    Я еще не понял для чего мне это понадобится, но мозг активно перебирает варианты:)
    • 0
      У нас есть конференция которая существует уже несколько лет, в ней ~20 активных участников.
      Постоянно возникает ситуация, когда вечером подключается много участников и у «хоста», того кто держит звонок, нехватает канала. Приходится пересоздавать звонок.

      Чтобы работало групповое видео в конференции нужно чтобы в звонке был участник с проплаченным skype premium, а так можно оплатить премиум боту и всегда будет доступно групповое видео.

      Можно сделать аналог сервиса Skype Casts, или вот этого liberalparty.ru/scast/
      Бот мог бы анонсировать активные конференции на сайте, и любые желающие могли бы к ним подключаться.

      Много чего можно придумать, просто у меня не хватает времени и умения питонировать.
      • 0
        Все это конечно хорошо и удобно, но есть один нюанс: вы используете инфраструктуру СТОРОННЕГО сервиса, который вам не подконтролен. Мало того, что вы фактически расширяете сторонний сервис, ничего в замен не получая, еще это черевато тем, что могут начаться гонения наподобие тех, что были со сломанным скайпкитом, т.е. когда сервис будет хоть немного популярным, начнется война неравных. Воевать можно, но не лень ли будет?

        В качестве альтернативы можно посмотреть в сторону Mumble, который полностью открыт, ни от кого не зависит, использует celt+speex в качестве кодеков, имеет средства интеграции в полноэкранные приложения. В качестве киллер-фичи могу привести очень качественный шумодав, позволяющий с говянных микрофонов получать вполне качественный звук, по сравнению с ним даже скайповский шумодав проигрывает. Я был просто поражен, насколько зашумленный сигнал на входе и чистый на выходе.

        Если не нравится мамбл — всегда можно построить свое решение, даже на основе браузера. В общем, не вижу причин интегрироваться в закрытое и проприетарное решение с неясными перспективами.
        • 0
          Ой, да ладно тебе.

          Во первых это все реализовано на чистом не кряканом скайпките. Да, лицензия запрещает делать серверные приложения, и в теории за это могут отозвать ключ. Но все эти мамблы, ветриллы и jitsi проигрывают скайпу в том что ими никто не пользуется. Может когда-то допилят нормальные расширения для XMPP и все будут звонить друг другу через джаббер, но пока этого не произошло, приходится подстраиваться под сегодняшнии реалии.

          Кстати в хроме уже работает WebRTC, все опенсорсно и круто, скоро даже программы никакие не будут нужны. Подожем.
          • 0
            Если так думать, то xmpp тоже никогда бы не родился, ибо есть ICQ, которым все и так пользуются. Однако же я похоронил ICQ очень давно и полностью перешел на xmpp.

            Сейчас аналогичная ситуация со скайпом — с каждым релизом все хуже и хуже, mumble выглядит просто идеалом юзабилити по сравнению с ним, хотя сам по себе достаточно кривой.
            • 0
              Ладно, уболтал, попробую. Он даже под iphone есть.
            • +1
              Поставил. Но кому теперь звонить?
              • 0
                Как и в случае XMPP тем, у кого оно уже есть.
                К примеру, несколько лет существует bookfags.ru — анонимусы по ночам читают художественную литературу.
    • +2
      Я вот такое настроил для быстрого деплоя билдов. Вместо CI у нас бот в чате, который делает деплой когда ктонибуть попросит. Я только другую связку использовал, SevaBot + Skype4Py. Не «без иксов», зато геморроя меньше — для скайпкита нужно обновлять лицензию каждые два месяца и денег стоит
      • 0
        для скайпкита нужно обновлять лицензию каждые два месяца и денег стоит


        Уже нет, distribution (бессрочный) ключ дают просто так.
        • 0
          ключ то дают просто так, но он у них дается на приложение и вроде истекает через 2 месяца, или вы об этом и говорите, что уже нет?
          • 0
            image
            image
            • 0
              Что то я не нашел на developer.skype.com где скачать SkypeKit.

              Ни скачать ни купить, ничего нет, хотя я участвую в 2 девелоперских программах
              • 0
              • 0
                Пишут что теперь нужно ждать инвайта пока позволят скачать. Выслал ссылки в личку.
                • 0
                  Ага, у меня там написано:

                  What you can do with SkypeKit

                  Thanks for your interest — you’ll receive an email when we are ready to invite you into the program.

                  Сколько ждать — непонятно :(
                  • 0
                    Интересно, дождались Вы доступа к SkypeKit или пока еще нет?
    • 0
      у меня текстовый бот в скайпе живёт уже лет пять
      • 0
        Очень ценная информация, спасибо.
  • +1
    А не легче использовать специальное решение для видео-конференций?
    • 0
      Какое?
      • 0
        Несколько раз использовал Mumble в такихподобных случаях. Клиент весит копейки, да и сервер разворачивается за минуты, имея всё необходимое. Бесплатно и опенсорцно.

        Что в «интерпрайзе» пользуют я не знаю, к сожалению.
        • 0
          Качество звука намного хуже. Плюс нужно всех заставить что-то устанавливать, а скайп есть на десктопах/планшетах/мобилках.
          • 0
            Качество звука намного ЛУЧШЕ, уже хотя бы за счет более качественного шумодава, который я упоминал выше. Кодек и битрейт выбирается руками и не превращается в пиликанье в течении разговора по желанию какого-то алгоритма. Можно выбрать транспорт TCP или UDP.

            И вот к примеру, на win платформе для меня мамбл гораздо привлекательнее — в нем нету кучи рекламы, он не гоняет левый трафик, он не пользуется IE для подгрузки своих файлов (я очень удивился, что оказывается я пользуюсь IE — на самом деле им пользовался скайп)
      • 0
        Vidyo не пробовали?
        • 0
          Много ваших знакомых им пользуются?
      • 0
        Если требуется виртуальное присутствие, то можно попробовать Second Life.
  • 0
    Ну и подпись в конце поста…
  • +9
    Молодой парень срочно познакомится с более опытным Python-программистом для серьезных отношений в контексте совершенствования бота, потому как моих навыков явно недостаточно. В перспективе можно сделать полноценный аналог бота eggdrop или аналог сервиса SkypeCast.
    

    Я всегда догадывался о твоих наклонностях :(
    • +11
      Я думал у нас это взаимно image
  • 0
    А возможно таким способом организовать бота, который бы записывал голосовые сообщения?
    • 0
      Да, если брать рантайм с voicepcm можно выводить звук в файл.
  • 0
    Гитхаб сломался.
  • 0
    Хм. Последние несколько лет внутри тех компаний, что я работаю, для групповых конференций используется банальный Asterisk, благо sip телефонов как платных, так бесплатных, так и аппаратных, в том числе с поддержкой видео, хватает на любой вкус и цвет.
    В свое время активно с ним работал во времена выхода FreeBSD 6, как раз пилил видеотелефонию между аппаратными и программными телефонами на тестовом сервере *.

    Единственное что не знаю, но думаю, что прогресс в этом тоже есть — групповые видеозвонки, при желании могу уточнить у знакомых с очень большим стажем внедрения VoIP.
    • 0
      Это все хорошо когда есть быстрые каналы и прямые айпишник, а за десятью NAT-ами качество связи у скайпа будет получше.

      Какие софтофоны умеют групповое видео?
      • 0
        Asterisk групповое видео таки не умеет, мне уже объяснил товарищ.
        >> нет, но можешь глянуть OpenVC, OpenMCU, OpenMeeting, BigBlueButton.
        >> видео в * передаётся без изменений от абонента к абоненту.

        Да софтофоны, вобщем врядли есть проблема дописать — подумаешь, вместо одного окошка с видео будет несколько.
        ну или ремик нескольких видео как на видеогеристраторах в режиме отображение 4/9/16 камер на одном мониторе.
        нагрузка на сеть, правда вырастет — видео гонять.

        10 NAT… Это вы загнули. За 10 натами обычно скайп наглухо закрыт, если требуется такой уровень блокировки траффика.
        Хотя такие сети обычно даже не пересекаются.
        • 0
          >дописать

          Почему-то такая простая и насущная функция как звонки и видеосвязь приходится до сих пор реализовывать какими-то костыялми.

          >можешь глянуть OpenVC, OpenMCU, OpenMeeting, BigBlueButton

          Что это вообще такое? Как рассказать всем что им это нужно? А на айфоны/андройды это есть?
          • 0
            Если не допилили групповые видеозвонки в * до сих пор, то понятно что во времена FreeBSD6 их тоже не было.
            Не знаю, это цитата от знакомого. Мне тоже надо читать что это за проекты, я вообще безработный админ сейчас, мне оно пока не надо.
            Рассказать — наверное так же, как обычно голосом/в почту, со ссылками на установочные пакеты/гугль/плей/аппстор, если пакеты соответствующие уже сделали под платформу.

            • 0
              Но зачем если у всех уже есть скайп и там все работает?
              • 0
                Ну то уже другой вопрос.
                У некоторых политика безопасности запрещает скайп и внешние мессенжеры, например.
                А тот же jabber с привязкой к домену разворачивается меньше чем за полчаса. или Lync какой, если финансы позволяют.
                • +1
                  Вот когда допилят видео в джаббере, будет прекрасно. Чтобы так же круто как WebRTC было, а пока это все несовместимые костыли.
                  • 0
                    Как сталкивался я с конференциями для * три года назад, так воз и ныне там. BigBlueButton(проект хороший на самом деле то) и многие другие были с отвратным качеством видео, о многоточке речь и не шла естессно. Внутри для них юзался Red5phone кажется, и было куча «умников», которые советовали от подкрутить Red5 до написать свое. Но как видим это не просто делается, и поликомы и прочие на своих железках похоже не зря киллобаксы запрашивают за многточки и HD. А жаль.
  • +1
    Я настраивал как-то вебинар http://en.wikipedia.org/wiki/Web_conferencing. Там вроде все есть из перечисленного, и конференц звонки и групповое видео. Клиентом был браузер. Ставил http://www.bigbluebutton.org/ прям берётся готовый образ разворачивается в виртуалке. Рекомендую посмотреть много дополнительных плюшек, например, показ презентации с возможностью интерактивно что либо подсветить, поправить…
  • 0
    Здесь ведется разработка еще одного бота для скайпа:
    * можно поставить на виртуалку
    * автоматическая установка через vagrant+puppet
    * используется python
    * возможность писать свои модули
    * есть веб интерфейс
    * бесплатно
    • 0
      > бесплатно

      А на сайте написано, что лицензия BSD. Как же я вас «бесплатных» ненавижу.
      • 0
        Ну и в чем проблема?
        • 0
          Крайне неприятно, когда люди готовы считать «бесплатность» эквивалентом свободы. Вполне допускаю, что они никогда не напишут ни строчки кода, не отпостят ни одного багрепорта, не будут вообще заметны для разработки / жизни продукта, ограничив себя одним потреблением. Если так, то «жри чо дают» и «свободное ПО» для них действительно будут равнозначными. Однако мне очень неприятно, когда меня заставляют «жрать чо дают».
          • 0
            Я думаю он имел ввиду бесплатно в отличии от скайпкита который стоит пять баксов.

            Разве BSD не более свободное чем GNU-тое? Не борьба ли это с ветряными мельницами?

          • +1
            Мне кажется, вас укусил Столлман вы перегибаете. Человек считает BSD бесплатным (очевидно в сравнении с skypekit), он в своем праве.
            • 0
              А мне показалось «жри чо дают» в спецификациях, что мне крайне не понравилось.
  • 0
    .
  • 0
    Компилируем заглушки для видео и звука. это немного неочевидный процесс, поэтому можно спрашивать по ходу)

    Если каждый будет спрашивать — вам может стать нехорошо.
    Написали бы сразу в статье, тем более раз оно неочевидно.
  • 0
    Не присылают инвайт на скачку. Может что-то дополнительно нужно сделать?

Только зарегистрированные пользователи могут оставлять комментарии. Войдите, пожалуйста.