Я хочу добавить пользовательский XML в входящий пакет сообщений. Чтобы сделать это как часть реализации плагина, я написал PacketInterceptor
, который перехватывает сообщение и добавляет расширение. До этого момента все нормально, но когда это сообщение принимается приемником, информация, хранящаяся в пользовательском xml, отключена. Отображается только элемент xml с пространствами имен.Как добавить пользовательский XML-элемент в Message с помощью PacketInterceptor в плагин Openfire с помощью XMPP
Входящие сообщения являются регулярные текстовые сообщения, как показано
ценам ниже<message to='[email protected]/SomeResource' from='[email protected]/testbot2' id='63S0G-27' type='groupchat'>
<body>Hi</body>
</message>
При добавлении пользовательских XML в этом теле сообщения, она выглядит, как показано ниже, после добавления XML в PacketInterceptor
ЖУРНАЛЫ РЕГИСТРАЦИИ-
<message to='[email protected]/SomeResource' from='[email protected]/testbot2' id='63S0G-27' type='groupchat'>
<body>Hi</body>
<data value="imgURL1"/>
</message>
Но когда это сообщение принимается приемником, атрибут value
в данных отключен и ниже сообщение принимается участником -
<message to='[email protected]/SomeResource' from='[email protected]/testbot2' id='63S0G-27' type='groupchat'>
<body>Hi</body>
<data xmlns='jabber:client'></data>
</message>
Обратите внимание, что текст и атрибуты удаляются с узла XML данных.
Ниже Java кода для справки
public void interceptPacket(Packet packet, Session session, boolean incoming, boolean processed) throws PacketRejectedException {
// Some code
Message messagePacket = (Message) packet;
Document document = DocumentHelper.createDocument();
Element root = document.addElement("data");
Element root1 = root.addAttribute("value", "imgURL1");
PacketExtension pe = new PacketExtension(root1);
messagePacket.addExtension(pe);
}