#erlang #ejabberd
#erlang #ejabberd
Вопрос:
Мне нужно получить атрибут body из входного xmpp-пакета с помощью Erlang / xmpp.
Я получаю пакет:
Record = #received_packet{packet_type=message,
raw_packet=Packet,
from=From,
type_attr=Type} when Type =/= "error
Как я могу извлечь текст сообщения из Packet
?
Спасибо.
Ответ №1:
если вы используете exmpp, вы можете использовать модуль exmpp_message:get_body/1
http://www.process-one.net/docs/exmpp/devdoc/trunk/exmpp_message.html
Ответ №2:
Не уверен, что вы уже просматривали примеры exmpp. Вот фрагмент из примера echo_client.erl:
%% Send the same packet back for each message received
echo_packet(MySession, Packet) ->
From = exmpp_xml:get_attribute(Packet, <<"from">>, <<"unknown">>),
To = exmpp_xml:get_attribute(Packet, <<"to">>, <<"unknown">>),
TmpPacket = exmpp_xml:set_attribute(Packet, <<"from">>, To),
TmpPacket2 = exmpp_xml:set_attribute(TmpPacket, <<"to">>, From),
NewPacket = exmpp_xml:remove_attribute(TmpPacket2, <<"id">>),
exmpp_session:send_packet(MySession, NewPacket).