RubyでGoogleTalk

実はあまり良く分ってないんだけど。

を見て作ってみたら動いた,という話。

環境

XMPP/Jabber Library for Rubyインストール

  1. XMPP4Rサイトにアクセスhttp://home.gna.org/xmpp4r/
  2. xmpp4r-0.3.2.tgzをダウンロード
  3. 解凍
  4. 「xmpp4r-0.3.2\lib」以下を「D:\usr\ruby-1.8\lib\ruby\site_ruby\1.8」にコピー

「D:\usr\ruby-1.8\lib\ruby\site_ruby\1.8\xmpp4r.rb」が存在すればOK

GTalk.rb

取りあえず相手の発言をエコーするプログラム.人工無能などにサクッと使える?

require 'xmpp4r'

user = 'user@gmail.com'
pass = 'pass'

client = Jabber::Client.new(Jabber::JID.new("#{user}/bot"))
client.connect('talk.google.com', 5222)
client.auth(pass)
client.send(Jabber::Presence.new.set_show(:chat))
puts "Connected ! send messages to #{user}."

mainthread = Thread.current
  client.add_message_callback { |msg|
    if msg.body
      puts "from:#{msg.from} body:#{msg.body}"
      
      m2 = Jabber::Message.new(msg.from, "ECHO:#{msg.body}")
      m2.type = msg.type;
      client.send(m2)
  
      # Exit
      if msg.body == 'exit'
        m2 = Jabber::Message.new(msg.from, "Exiting ...")
        m2.type = msg.type;
        client.send(m2)
        mainthread.wakeup
      end
    end
  }
Thread.stop;
client.close;
puts("Done.");

備考