2012-04-25 34 views
0

我试图使用Strophe发送html消息到muc房间。我也尝试通过Psi中的XML控制台发送以下xml,但它不起作用,只显示Hello World。信息节有什么问题吗?使用Strophe在muc房间发送XHTML消息

<message to="[email protected]" type="groupchat"><body>Hello World </body><html xmlns="http://jabber.org/protocols/xhtml-im"><body xmlns="http://www.w3.org/1999/xhtml"><p style="color : red">Hello HTML World</p></body></html></message> 

谢谢!

编辑1:迪斯科#信息房间查询。我使用的是真空IM,Psi和客户端现在,但幽应该支持XHTML-IM(http://psi-im.org/wiki/Supported_Protocols

<iq xmlns="jabber:client" from="[email protected]" type="result" id="foo" to="[email protected]/Vacuum-IM"> 
<query xmlns="http://jabber.org/protocol/disco#info"> 
    <identity xmlns="http://jabber.org/protocol/disco#info" category="conference" type="text" name="room"/> 
    <feature xmlns="http://jabber.org/protocol/disco#info" var="http://jabber.org/protocol/muc"/> 
    <feature xmlns="http://jabber.org/protocol/disco#info" var="muc_public"/> 
    <feature xmlns="http://jabber.org/protocol/disco#info" var="muc_open"/> 
    <feature xmlns="http://jabber.org/protocol/disco#info" var="muc_moderated"/> 
    <feature xmlns="http://jabber.org/protocol/disco#info" var="muc_semianonymous"/> 
    <feature xmlns="http://jabber.org/protocol/disco#info" var="muc_unsecured"/> 
    <feature xmlns="http://jabber.org/protocol/disco#info" var="muc_persistent"/> 
    <feature xmlns="http://jabber.org/protocol/disco#info" var="http://jabber.org/protocol/disco#info"/> 
    <x xmlns="jabber:x:data" type="result"> 
    <field xmlns="jabber:x:data" type="hidden" var="FORM_TYPE"> 
     <value xmlns="jabber:x:data">http://jabber.org/protocol/muc#roominfo</value> 
    </field> 
    <field xmlns="jabber:x:data" label="Description" var="muc#roominfo_description"> 
     <value xmlns="jabber:x:data">asdf</value> 
    </field> 
    <field xmlns="jabber:x:data" label="Subject" var="muc#roominfo_subject"> 
     <value xmlns="jabber:x:data"/> 
    </field> 
    <field xmlns="jabber:x:data" label="Number of occupants" var="muc#roominfo_occupants"> 
     <value xmlns="jabber:x:data">1</value> 
    </field> 
    <field xmlns="jabber:x:data" label="Creation date" var="x-muc#roominfo_creationdate"> 
     <value xmlns="jabber:x:data">20120423T17:31:49</value> 
    </field> 
    </x> 
</query> 

EDIT2:响应消息节

<message xmlns="jabber:client" from="[email protected]/ad" type="groupchat" to="[email protected]/Vacuum-IM"> 
<body xmlns="jabber:client">Hello World </body> 
<html xmlns="http://jabber.org/protocols/xhtml-im"> 
    <body xmlns="http://www.w3.org/1999/xhtml"> 
    <p xmlns="http://www.w3.org/1999/xhtml" style="color : red">Hello HTML World</p> 
    </body> 
</html> 

编辑3:对mu#流量查询的回应

<iq xmlns="jabber:client" from="[email protected]" type="error" id="foo" to="[email protected]/Vacuum-IM"> 
<query xmlns="http://jabber.org/protocol/disco#info" node="http://jabber.org/protocol/muc#traffic"/> 
<error xmlns="jabber:client" type="cancel" code="404"> 
    <item-not-found xmlns="urn:ietf:params:xml:ns:xmpp-stanzas"/> 
</error> 

Edit4:幽响应客户端(功能)的disco#info(XHTML-IM是最后一个)

<iq xmlns="jabber:client" from="[email protected]/Kostyas-MacBook-Pro" type="result" to="[email protected]/Vacuum-IM" id="foo"> 
<query xmlns="http://jabber.org/protocol/disco#info"> 
    <identity xmlns="http://jabber.org/protocol/disco#info" category="client" type="pc" name="Psi"/> 
    <feature xmlns="http://jabber.org/protocol/disco#info" var="http://jabber.org/protocol/bytestreams"/> 
    <feature xmlns="http://jabber.org/protocol/disco#info" var="http://jabber.org/protocol/si"/> 
    <feature xmlns="http://jabber.org/protocol/disco#info" var="http://jabber.org/protocol/si/profile/file-transfer"/> 
    <feature xmlns="http://jabber.org/protocol/disco#info" var="http://jabber.org/protocol/disco#info"/> 
    <feature xmlns="http://jabber.org/protocol/disco#info" var="http://jabber.org/protocol/commands"/> 
    <feature xmlns="http://jabber.org/protocol/disco#info" var="http://jabber.org/protocol/rosterx"/> 
    <feature xmlns="http://jabber.org/protocol/disco#info" var="http://jabber.org/protocol/muc"/> 
    <feature xmlns="http://jabber.org/protocol/disco#info" var="jabber:x:data"/> 
    <feature xmlns="http://jabber.org/protocol/disco#info" var="urn:xmpp:jingle:1"/> 
    <feature xmlns="http://jabber.org/protocol/disco#info" var="urn:xmpp:jingle:transports:ice-udp:1"/> 
    <feature xmlns="http://jabber.org/protocol/disco#info" var="urn:xmpp:jingle:apps:rtp:1"/> 
    <feature xmlns="http://jabber.org/protocol/disco#info" var="urn:xmpp:jingle:apps:rtp:audio"/> 
    <feature xmlns="http://jabber.org/protocol/disco#info" var="http://jabber.org/protocol/chatstates"/> 
    <feature xmlns="http://jabber.org/protocol/disco#info" var="http://jabber.org/protocol/mood+notify"/> 
    <feature xmlns="http://jabber.org/protocol/disco#info" var="http://jabber.org/protocol/tune+notify"/> 
    <feature xmlns="http://jabber.org/protocol/disco#info" var="http://jabber.org/protocol/physloc+notify"/> 
    <feature xmlns="http://jabber.org/protocol/disco#info" var="http://jabber.org/protocol/geoloc+notify"/> 
    <feature xmlns="http://jabber.org/protocol/disco#info" var="http://www.xmpp.org/extensions/xep-0084.html#ns-metadata+notify"/> 
    <feature xmlns="http://jabber.org/protocol/disco#info" var="http://jabber.org/protocol/xhtml-im"/> 
</query> 

Edit5:解决方法:获取的iChat和Adium :-) Adium以不同的颜色和字体发送xhtml消息,但它不显示它自己做了什么。只有iChat正确呈现xhtml。所以组合起作用。也不要使用p标签,颜色应该是十六进制格式。例如:

<message xmlns="jabber:client" type="groupchat" to="[email protected]"> 
<body xmlns="jabber:client">Hello World</body> 
<html xmlns="http://jabber.org/protocol/xhtml-im"> 
    <body xmlns="http://www.w3.org/1999/xhtml"> 
    <span xmlns="http://www.w3.org/1999/xhtml" style="font-family: Times New Roman; font-size: large; color: #FF0000;">Red text</span> 
    </body> 
</html> 

回答

0

据我所知,Psi并不支持XHTML-IM。这些客户端只会显示正常的<body>内容。

虽然你的示例节是正确的,所以它或者是ggozad所建议的,服务器将其删除(某些服务器可以配置为这样做),或者它仅仅是客户端不呈现它。

尝试检查接收客户端的XML控制台,以查看在MUC广播该消息之后<html>子元素是否仍然存在。

+0

其实Psi应该支持xhtml-im(xep-0071)http://psi-im.org/wiki/Supported_Protocols。响应中有一个html体。请参阅问题中的Edit2。谢谢! – user1054134 2012-04-26 09:52:13

0

这是可能的房间不允许xhtml-im。 您可以通过查询房间找出:

<iq to='[email protected]' 
    id='foo' 
    type='get'> 
    <query xmlns='http://jabber.org/protocol/disco#info' 
     node='http://jabber.org/protocol/muc#traffic'/> 
</iq> 

,并检查http://jabber.org/protocol/xhtml-im是支持的功能之一。

+0

房间永远不需要支持该功能 - 它只是中继它收到的东西。它不必宣传它剥离XHTML-IM的事实。 – MattJ 2012-04-25 21:43:58

+1

@MattJ http://xmpp.org/extensions/xep-0045.html#impl-service-traffic – ggozad 2012-04-25 21:56:07

+0

请记住,有很多服务器尚未实现该特定功能,包括一些阻止XHTML的服务器。如果您的建议不起作用,我们需要知道@ user1054134正在使用哪个服务器。 – 2012-04-26 01:26:09