XMMPボットサンプル
たいぶ古いけど、以下を参考にXMPPのボットのサンプルを試してみました。
http://d.hatena.ne.jp/Syo-Takasaki/20071121/1195644386
- 環境
- OpenFire version 3.8.1
- ruby 1.9.3
OpenFireに対してTLSで接続しようとすると、なんかうまくいかないようです。
Jabber::Client.new した後に、インスタンスの中のスコープで
@allow_tlsをfalseにするとうまくいきました。
require 'xmpp4r' user = "USER@DOMAIN" pass = "PASS" client = Jabber::Client.new(Jabber::JID.new("#{user}/bot")) client.instance_eval do @allow_tls = false end client.connect('HOST', PORT) 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.");