LinuxのcrontabやserviceからSkype APIが使えるようになった
https://github.com/shokai/skype-ruby
問題
Skype gemで使っているruby-dbusは環境変数DBUS_SESSION_BUS_ADDRESSを使ってSkypeアプリと通信させてくれるのだが、GUIから起動したTerminalでないとDBUS_SESSION_BUS_ADDRESSが設定されていない。つまりcronやserviceから起動したプロセスはDBUSが使えなかった
解決方法
~/.dbus/session-bus/ にテキストファイルでDBUS_SESSION_BUS_ADDRESSが書いてあったkde – Run a dbus program in crontab , how to know about the SESSION id? – Unix & Linux Stack Exchange
DBUSに接続する前に環境変数DBUS_SESSION_BUS_ADDRESSが無かったらファイルから読んで設定するようにした。
Virtual Box
Skype APIは起動済みのSkypeアプリと通信するものなので、Skype botを作るにはSkypeを常に起動しておかなければならない。家のMacMiniにVirtual BoxにUbuntu12.04入れてその中でSkype起動して運用している。