2011-02-01 2 views
1
私は、次のインバンド登録を行うにはxmpp4rを使用して問題を抱えてきた

SOここにスレッド:xmpp4rとIq.new_registerインバンド登録

XMPP transport to another protocol

を問題は私が得ることに降りてきますnew_registerためNoMethodError例外エラー、私は次のコードを実行します。

:私はのように定義new_register方法を見ることができますiq.rbファイルにxmpp4r宝石で

require "xmpp4r" 
require "xmpp4r/client" 
require "xmpp4r/iq" 

def in_band_reg 

    chat_name = 'testChatName' 
    password = 'pword' 

    reg = Jabber::Iq.new_register(chat_name, password) 

end 

NoMethodError Exception: undefined method `new_register' for Jabber::Iq:Class 

def Iq.new_register(username=nil, password=nil) 
     ... 
end 

しかし、私がクラスのメソッドを調べると、私はnew_registerメソッドを見ることができません。 I.

Jabber::Iq.singleton_methods(false) 
["new_authset", "new_rosterget", "new_vcard", "new_rosterset", "import", "new_authset_digest", "new_query", "add_elementclass", "new_browseget"] 

Jabber::Iq.public_instance_methods(false) 
["query=", "queryns", "set_type", "type", "typed_add", "type=", "query", "vcard"] 

Jabber::Iq.respond_to?("new_register") 
false 

「xmpp4r/iq」のnew_registerメソッドにアクセスできない理由は何ですか?

答えて

2

私はこれを自分でコーディングしています。

iqr = Iq.new(:set) 
qr = IqQuery.new 
qr.add_namespace('jabber:iq:register') 
username = 'new_user' 
password = 'new_user_password' 
qr.add(REXML::Element.new('username').add_text(username)) 
qr.add(REXML::Element.new('password').add_text(password)) 
iqr.add(qr) 
client.send iqr 
+0

このソリューションは非常に便利ですが、私はあなたの出力を理解していないので、説明できますか? –

0

xmpp4rのどのバージョンをお使いですか?あなたはGitHubバージョンを試しましたか?

gem sources -a http://gems.github.com (you only need to do this once!) 
gem install ln-xmpp4r 
+0

私は私が思うバージョン0.5を使用している帯域内のメッセージを送信することにより、

jid = JID::new('[email protected]/res') client = Client::new(jid, false) client.connect client.auth("admin_password") 

は、そのクライアントが新しいユーザーを登録します:まず、帯域内の新しいユーザーを登録することができ、クライアントを接続最新です。 –

関連する問題