2012-04-25 2 views
0

Я пытаюсь отправить html-сообщение с помощью Strophe в комнату muc. Я также попытался отправить следующий xml через консоль XML в Psi, но он не работает, отображается только Hello World. Что-то не так с строкой сообщения?Отправка сообщений XHTML с помощью Strophe в комнате muc

<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> 

Спасибо!

Edit1: disco # info room query. Я использую клиент Vacuum-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: ответ на muC# запрос трафика

<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: ответ Psi клиенту (функции) дискотека # информация (XHTML-им является последним)

<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 принимающего клиента, чтобы увидеть, есть ли дочерний элемент <html> после того, как MUC передал сообщение.

+0

На самом деле Psi должен поддерживать xhtml-im (xep-0071) http://psi-im.org/wiki/Supported_Protocols. В ответе есть html-тело. См. Edit2 в вопросе. Благодаря! – user1054134

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

+1

@MattJ http://xmpp.org/extensions/xep-0045.html#impl-service-traffic – ggozad

+0

Имейте в виду, что существует множество серверов, которые не реализовали эту конкретную функцию, включая некоторые, которые блокируют XHTML. Нам нужно знать, какой сервер @ user1054134 используется, если ваше предложение не работает. –

Смежные вопросы