rubyでskypebotを作る

環境はUbuntu10.04

skype apiを使うためにvncサーバーを起動する
tightvncを使ってたんだけどキーボード配列がおかしい。adgjを押すとasdfと出る。真ん中の段はズレがわかるけど他の段はメチャクチャ
vnc4serverに換えたらokだった

sudo apt-get remove tightvncserver
sudo apt-get install vnc4server
which vncserver
vncserver


これでmacのScreen Shareing.appから接続できる。192.168.1.9:5901とか。
そこでskypeをインストールして、bot用アカウントを作って起動する。


linuxRubyからskypeを使うのはSkypeRとRuby4Skypeの2つがあるので両方いれてみる

sudo apt-get install libdbus-ruby
sudo gem install rbus yaparc SkypeR Ruby4Skype

skypeを起動しているvncの中でterminalを起動して試す。

ruby4skypeから。webで調べてでてくる解説は過去のバージョンで、パッケージ名からして違う。gemについてたREADMEの解説も古いのでソースを読んで使い方を調べた

require 'rubygems'
require 'skype'
Skype.init('test_app')

ArgumentErrorが出る。linux/mac/windowsで使えるようにしているところの、os/linux.rbのinitializeで引数が足りないというエラー。

で、skype/os/linux.rbを修正。initialize methodのsuperにapp_nameを渡す。
これでSkype.initできた。
でもSkype::Message.createとかSkype::Call.createとか試したけど動かなかった。エラーの内容は忘れた。



SkypeRを試す。READMEにライブラリとしての使い方が書いていなくて、iskype.rbの使い方だけが書いてある。これは対話式にSkype APIのコマンドが試せる物で、起動したらuninitialize constant SKypeR::REPL::FileUtilsとのことだった。
しょうがないのでソースを読んだ。

s = SkypeR::Service::Application.new('test_app')
cmd =  SkypeR::Service::CommandMessage('SEARCH FRIENDS')
s.invoke(cmd)
s.invoke SkypeR::Service::CommandMessage('CALL shokaishokai')
s.invoke SkypeR::Service::CommandMessage('MESSAGE shokaishokai hellohello')

search frinedsとcallはできる。MESSAGEとか、SEARCH ACTIVECHATSとかSEARCH CHATSを使うとParse Errorになる。テキストメッセージを扱う系が動かない。


結論:MacWindowsでやろう!!