Ruby XMPP到ICQ的传输

Ruby XMPP到ICQ的传输,ruby,xmpp,transport,xmpp4r,icq,Ruby,Xmpp,Transport,Xmpp4r,Icq,我尝试通过jabber传输向icq发送消息。我试图使用这个答案中的代码 ,但我得到了这个信息: DEBUG -- : SENDING: <message to='12345@icq.jabber.blahblah.ru' xmlns='jabber:client'><body>test message from robot</body></message> => nil DEBUG -- : RECEIVED: <me

我尝试通过jabber传输向icq发送消息。我试图使用这个答案中的代码 ,但我得到了这个信息:

DEBUG -- : SENDING:
    <message to='12345@icq.jabber.blahblah.ru' xmlns='jabber:client'><body>test
 message from robot</body></message>
=> nil
DEBUG -- : RECEIVED:
    <message from='12345@icq.jabber.blahblah.ru' to='myjit@blahblah.ru/83076
14161416233482839674' type='error'><error code='401' type='auth'><not-authorized
 xmlns='urn:ietf:params:xml:ns:xmpp-stanzas'/><text xmlns='urn:ietf:params:xml:n
s:xmpp-stanzas'>Error. You must log into the transport before sending messages.<
/text></error><body>test message from robot</body></message>
更新代码:

cl.connect(server,port)
cl.auth(pass)

# sending initial presence
p = Jabber::Presence.new
cl.send p

mes = Message::new(user,text)
mes.type = :chat

cl.send(mes)
cl.close()
返回:

D, [2014-11-18T19:01:35.986182 #8084] DEBUG -- : SENDING:
    <presence xmlns='jabber:client'/>
=> nil
irb(main):027:0> D, [2014-11-18T19:01:36.048980 #8084] DEBUG -- : RECEIVED:
    <presence from='icq.jabber.blahblah.ru' to='myjit@blahblah.ru' type='subscri
be'><status/></presence>

而且仍然不起作用

您只需要第一次注册传输,然后您需要在会话创建后发送。

您能写一封信吗,在我的情况下,最初的状态应该是怎样的?例如,在XMLTransport向您发送订阅请求中,您应该批准该请求,transport将能够看到您的状态,并且,如果需要,从每个icq联系人发送状态订阅,您也需要批准。事实上,您只应该第一次这样做,并且可以使用任何现有的xmpp客户机。
D, [2014-11-18T19:01:35.986182 #8084] DEBUG -- : SENDING:
    <presence xmlns='jabber:client'/>
=> nil
irb(main):027:0> D, [2014-11-18T19:01:36.048980 #8084] DEBUG -- : RECEIVED:
    <presence from='icq.jabber.blahblah.ru' to='myjit@blahblah.ru' type='subscri
be'><status/></presence>