Skip to content

Instantly share code, notes, and snippets.

@aita
Last active December 18, 2015 18:59
Show Gist options
  • Save aita/5829050 to your computer and use it in GitHub Desktop.
Save aita/5829050 to your computer and use it in GitHub Desktop.
Skype botの構築

Skype botの構築

  • 対象はUbuntu 12.04 LTS
  • python, distriute, pip, virtualenv, virtualenvwrapperがインストールされてる前提

参考URL

xvfb, x11vnc, fluxboxのインストール

必須ではないが、fluxboxはUIを使いやすくするために入れておく。

sudo aptitude install xvfb
sudo aptitude install x11vnc
sudo aptitude install fluxbox

それぞれ起動する

Xvfb :0 -screen 0 800x600x8
x11vnc -display :0
fluxbox

skypeのインストール

依存パッケージのインストール

sudo aptitude install lib32stdc++6 lib32asound2 ia32-libs libc6-i386 lib32gcc1 fontconfig-config libqt4-gui ttf-vlgothic

本家からパッケージをダウンロードしてインストール

curl -O http://download.skype.com/linux/skype-ubuntu-precise_4.2.0.11-1_i386.deb
sudo dpkg -i skype-ubuntu-precise_4.2.0.11-1_i386.deb

DISPLAYを指定して起動

env DISPLAY=:0 skype

VNCクライアントで5900番ポートに接続して、skypeでログインしておく

Skype4Pyのインストール

python-dbusとpython-gobjectを、pipではインストール出来ないのでaptでインストール

sudo aptitude install python-dbus python-gobject

systemのパッケージを触れるvirtualenv環境を作成して、Skype4Pyをインストール

mkvirtualenv skype --system-site-packages
pip install Skype4Py

サンプルの起動

moriyoshiさんのサンプルスクリプトを起動してみる

# encoding: utf-8

import Skype4Py
import time

def handler(msg, event):
    if event == u"RECEIVED":
        if msg.Body == u"やっぱり":
            msg.Chat.SendMessage(u"猫が好き")

def main():
    skype = Skype4Py.Skype()
    skype.OnMessageStatus = handler
    skype.Attach()
    # イベントハンドラは別スレッドにて実行されるので、
    # 本スレッドではひたすらsleepしてスクリプトが終了しないようにしておく。
    while True:
        time.sleep(1)

if __name__ == "__main__":
    main()

環境変数DISPLAYを指定して起動

env DISPLAY=:0 python testbot.py

起動すると、Skypeで認証欲求のダイアログが出るので、Skype4Pyを許可するとbotが動く

django-skypehub

ドキュメントを参照してください

URL:http://tokibito.bitbucket.org/django-skypehub/tutorial.html

runskypebotコマンドの実行時に、環境変数DISPLAYにXvfbに指定したdisplay番号を設定する必要があります。

再起動手順

以下の順で再起動が必要

  1. xvfb
  2. x11vnc
  3. fluxbox
  4. skype
  5. django-skypehub

xvfb

ここで指定したdisplay番号をx11vnc, skype, django-skypehubに渡す必要があります。 skype, django-skypehubにはDISPLAY環境変数に入れて渡してください。

Xvfb :0 -screen 0 800x600x8

x11vnc

x11vnc -display :0

fluxbox

fluxbox

skype

env DISPLAY=:0 skype

skypeを起動したら、VNCクライアントでskypeのログインしてください。 aitaは VNC Viewer を使っています。

VNC Viewer:http://www.realvnc.com/download/viewer/

x11vncに指定してなければ、ポートはデフォルトの5900です。

django-skypehub

. virtualenvwrapper.sh
workon skype
env DISPLAY=:0 python manage.py runskypebot

起動後、botが実行されない場合は、 VNCクライアントで、Skype4PyがSkypeのクライアントに認証されているか確認してください。

TODO

  • supervisordによるプロセス監視
  • httpによる外部連携
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment