为什么 XMPP 服务器忽略我的昵称订阅请求?

Why does the XMPP server ignore my subscribe with nickname request?

我正在尝试通过 Strophe.js (1.2.0) 向 XMPP 服务器 (OpenFire 3.9.3) 发送订阅请求。

<presence type="subscribe" from="agent@localhost" to="agent3@localhost" xmlns="jabber:client">
<nick xmls="http://jabber.org/protocol/nick">agent3</nick>
</presence>

花名册项目已创建,但没有昵称。

Openfire 调试日志:

2015.04.22 11:57:43 XMPPServlet - 447b9ca3ad42f7bc78e09d35b882dfb3 : onMessage : Received : <presence type='subscribe' from='agent@localhost' to='agent3@localhost' xmlns='jabber:client'><nick xmls='http://jabber.org/protocol/nick'>agent3</nick></presence> 
2015.04.22 11:57:43 XMPPServlet - 447b9ca3ad42f7bc78e09d35b882dfb3 : Delivered : <iq type="set" id="232-173" to="agent@localhost/f0ddfe38-7bdd-fc6b-04a7-e63a7e30bf89"><query xmlns="jabber:iq:roster"><item jid="agent3@localhost" ask="subscribe" subscription="none"/></query></iq>

在订阅请求中包含昵称只是为了向收件人 ("who is this person who wants to add me?") 提供额外信息,而不是在花名册中设置昵称。设置名册项的昵称需要发送名册设置请求,发送订阅请求之前或之后均可:

<iq type='set' id='roster_3'>
  <query xmlns='jabber:iq:roster'>
    <item jid='agent3@localhost' name='agent3'/>
  </query>
</iq>