#june29jp

Windows上のSkypeをRubyから操作する

2008-04-23

Skype って API があったんですねぃ.IRC や IM (Jabber) と違って,ボットを作ったりできないものだと思っていましたが,ただボクが実例を見たことがなかっただけでした.Ruby4Skype を使うと Ruby から簡単に操作できました.ただしこれは Windows 上の Skype しか操作できないようです.

社内のエンジニアチームでは Skype のグループチャットを常用することになったので,何かあったらそこに通知する Skype ボットを作りました.用意するものは「自分用の Skype アカウント」「ボット用のアカウント」「Windows 機1台」です.もちろん Ruby の実行環境も必要です.

ボット用アカウントから自分の Skype アカウントに話しかけるシンプルなプログラムはこんな感じ.Skype を起動してボット用アカウントでサインインした状態で実行する.

require 'rubygems'
require 'skypeapi'

SkypeAPI.init
SkypeAPI.attachWait

SkypeAPI.searchFriends.each do |user|
  if user.getHandle == 'june29'
    chat = SkypeAPI::Chat.create(user)
    SkypeAPI::ChatMessage.create(chat, "Hello, World!")
  end
end

社内チャットのように,決まった場所に通知する場合はチャットをブックマークしておくとアクセスしやすくなります.

chat = SkypeAPI.searchBookMarkedChats[0]

最後に,エコーボットのサンプルです.チャットメッセージの受信時に,そのメッセージの内容をそのまま返す処理をします.

# chat を適当に用意して

SkypeAPI::ChatMessage.setNotify :Status, 'RECEIVED' do |chatmessage|
  SkypeAPI::ChatMessage.create(chat, chatmessage.getBody)
end

loop do
  SkypeAPI.polling
  sleep 0.123
end

受信したメッセージの内容に応じて発言内容を変える処理を実装すれば,簡単な検索ボットなんかがすぐに作れちゃいますね.色々と遊んでみよう!

おもしろかったら、シェアやブックマークや送金などぜひぜひお願いします。サイト運営の励みになります!

シェアや送金などお待ちしています!