/dev/null

(◞‸◟)

CentOS6.4にSkypeを入れてbotでお話させる

CUICentOSSkype入れて適当にお話させる。

ちなみにCentOS minimalで動かそうとすると面倒

デプロイシェルとかに仕込めば楽しいねって話

まずはライブラリ

sudo yum install -y glibc.i686 nss-softokn-freebl.i686 alsa-lib.i686 libXv.i686 libXScrnSaver.i686 libtiff.i686 glib2.i
686 libSM.i686 libXrender.i686 fontconfig.i686 pulseaudio-libs.i686 alsa-plugins-pulseaudio.i686

Skype本体をDL解凍

cd /tmp/

curl -L -O http://download.skype.com/linux/skype_static-4.0.0.8.tar.bz2


cd /opt/

sudo tar xjvf /tmp/skype_static-4.0.0.8.tar.bz2

便利なようにシンボリックリンクを各種に貼る

sudo ln -s /opt/skype /usr/share/skype

sudo ln -s /usr/lib/libtiff.so.3 /usr/lib/libtiff.so.4

sudo ln -s /opt/skype/skype /usr/bin/skype

ちなみに2つ目のやつは32bit版ライブラリを64bitだとごまかして動かすアレな

で、必要なディレクトリを作る

sudo mkdir /var/db/skype /var/run/skype /var/log/skype


sudo chown /var/db/skype /var/run/skype /var/log/skype

で、Skypeを動かすためのユーザを一応作っておく

sudo useradd skype

各種ディレクトリの所有権をこいつに

sudo chown skype:skype /var/db/skype /var/run/skype /var/log/skype

あとで使うものも今入れときます

sudo yum install -y sudo xorg-x11-xauth xorg-x11-server-Xvfb

これらは仮想フレームバッファってやつですね。

Skypeの起動スクリプトを持ってくる

curl -L -O https://raw.github.com/gist/557242/9c5b74769969efcf4e982949c0470561ed6c096c/launch-skype.sh

で編集

vi launch-skype,sh

ユーザーネームとパスワードを自分のbot用に変更

USERNAME=echo123
PASSWORD=blah

DBPATHの部分を変更

DBPATH=/srv/skype/conf

↓


DBPATH=/var/db/skype

でviを保存終了

実行権限つけて

chmod +x launch-skype.sh

ここまでやったらとりあえず起動するはず

sudo ./launch-skype.sh start

生きてるかを見るには

user[~]$ ps wwwaux | grep skype
skype    11704  1.1  0.5  52680  5424 pts/1    S    22:12   0:00 Xvfb :20 -screen 0 800x600x8 -nolisten tcp
skype    11710 33.7  8.4 175228 85732 pts/1    Sl   22:12   0:04 /opt/skype/skype --dbpath=/var/db/skype --pipelogin

ただこのままではCUI環境なのでどうしようもありません。

特にbotが話すには外部プログラムがSkypeAPIを使うかのダイアログが出るためにGUI操作が必須です。

そのためにさっきいれた仮想フレームバッファが必要です、

ちなみにgrepで見た

skype 11704 1.1 0.5 52680 5424 pts/1 S 22:12 0:00 Xvfb :20 -screen 0 800x600x8 -nolisten tcp

が仮想フレームバッファというやつ。

これが一時的にGUIレンダリングしてくれているイメージ

これを表示させるためにVNCサーバーを立てて、クライアントPCから接続します。

Windowsから今回は接続するので、クライアントPC側には適当なVNCソフトウェア(今回はUltraVNC)を入れます

UltraVNCを適当に入れて、ViewからサーバーのIP入れて接続します。

その前にサーバーにVNCサーバーを入れましょう

今回はx11VNCです。

標準のyum Repositoryには入っていないので追加でepelを入れます

yum install -y --nogpgcheck http://packages.sw.be/rpmforge-release/rpmforge-release-0.5.2-2.el6.rf.i686.rpm

環境に合わせたものにしましょうね↑

で、必要なものをインストール。VNCサーバーとレンダリング用のフォント

sudo yum install -y x11vnc ipa-gothic-fonts

操作に便利なものを入れる

sudo yum install -y fluxbox

Skypeをインストールしてる状態で

x11vnc -display :20

とやってクライアントPCからVNCで鯖につなげると

おはようSkype

で、あとは

Skypeをプログラムからお話させるコードをちょこっと

で俗に言うd-busを起動させる

sudo service messagebus start

pythonSkypeモジュールをインストール

sudo easy_install Skype4Py

Skypeでお話させるコードを作成

vi test.py

import Skype4Py
skype = Skype4Py.Skype(Transport='x11')
skype.Attach()
chat = skype.CreateChatWith("話しかける相手")
chat.SendMessage(u"テストだよ")

これで保存して

環境変数にちょっと入れる必要があればzshとかに書いても良い

export DISPLAY=:20

で実行

python test.py

f:id:gitpub:20130713223924j:plain

クライアントからVNCで見て許可します。ちなみにここで

Remember this selectionにチェックを入れておかないと、毎回チェック必要なので悲しみ。

はい、来ました

f:id:gitpub:20130713224216j:plain

次回からはx11vncとか入らないので、Skype起動して適当にpythonスクリプト動かせばおk

あとは指定したグループチャットに発言させたり、常駐して何かのワードに反応させたりと夢が広がりますね

しかし、ローカルVMCentOS minimal でやったら死ぬほど時間かかった