我尝试在 perl 上实现简单的代码,它应该只从 gtalk 帐户获取/发送消息。我使用 Net::XMPP::*
模块。对于我的朋友(在我的“好友”列表中)的用户来说,一切都很好。但我无法向未知用户发送消息。我知道,对于这种情况,我必须先发送邀请,但是
Net::XMPP::* 不提供这种可能性。邀请人只有一种方式——根据自己构建xml
到“XEP-0155 Stanza Session Negotiation”协议。但这不正确。当我将 xml 发送到服务器时,它
返回错误“服务不可用”。
我发送:
<message to='TEST@gmail.com'>
<sxde xmlns='http://jabber.org/protocol/sxde'
xmlns:sxde='http://jabber.org/protocol/sxde#metadata'
session='0AEF4278DC4B6577'
id='b'>
<negotiation>
<invitation>
<feature var='http://jabber.org/protocol/whiteboard' />
</invitation>
</negotiation>
</sxde>
</message>
在我的信息之前。
回答:
<message from='' to='ME@gmail.com/TALKCDDCCE63' type='error'>
<sxde id='b' session='0AEF4278DC4B6577' xmlns='http://jabber.org/protocol/sxde' xmlns:sxde='http://jabber.org/protocol/sxde#metadata'>
<negotiation>
<invitation>
<feature var='http://jabber.org/protocol/whiteboard'/>
</invitation>
</negotiation>
</sxde>
<nos:x value='disabled' xmlns:nos='google:nosave'/>
<arc:record otr='false' xmlns:arc='http://jabber.org/protocol/archive'/>
<error code='503' type='cancel'>
<service-unavailable xmlns='urn:ietf:params:xml:ns:xmpp-stanzas'/>
</error>
</message>
也许我丢失了smth或者应该在之前(或之后..)发送另一个信息?
或者也许还有另一种无需任何邀请即可发送消息的方式?
提前致谢