Syo-Takasakiの日記 このページをアンテナに追加 RSSフィード Twitter

November 21(Wed), 2007

[][]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.");

備考

  • 日本語の文字コード変換はしていないのでコマンドプロンプトでは文字化けが発生する
  • ちゃんとrequireすれば"Jabber::"を省略できてスッキリ

スパム対策のためのダミーです。もし見えても何も入力しないでください
ゲスト


画像認証