XMPP订阅Stanza Google Talk

时间:2013-11-29 15:18:21

标签: python xmpp google-talk

我正在尝试将订阅节从(a@gmail.com)发送到b(b@gmail.com),但Google Talk XMPP服务器未转发该节(即b从未接收过该节)

如果我使用a@gmail.com登录Gmail并邀请b@gmail.com,b @ gmail.com会收到IQ节,它看起来像这样:

<presence xmlns='jabber:client' from='a@gmail.com' type='subscribe' to='b@gmail.com'><sub:invitation xmlns:sub='google:subscribe'><sub:body/></sub:invitation></presence>  

[请注意,from和to都只是用户名而不是指定特定聊天资源的完整JID,如a@gmail.com/ABC145D]

如果我尝试构建一个存在节,就像b通过gmail做的那样接收,我从GTalk XMPP服务器收到一个'bad-request'错误说:

If set, the 'from' attribute must be set to the user's full JID.    

但是,如果我尝试a)指定完整的“from”JID,b)完全离开“from”,或者c)指定“from”和“to”的完整JID,它们都不起作用。 GTalk XMPP服务器不会将在线订阅请求从a@gmail.com发送到b@gmail.com

1 个答案:

答案 0 :(得分:1)

我让它使用以下形式的节,并在请求订阅之前将项目添加到名单(好友列表)

<presence xmlns='jabber:client' from='a@gmail.com' type='subscribe' to='b@gmail.com'><sub:invitation xmlns:sub='google:subscribe'><sub:body/></sub:invitation></presence>