Trước đây tôi đã sử dụng xml: get_tag_attr_s ("loại", Gói) cho dòng gỡ lỗi đó trong ejabberd 2.1.10, nhưng điều đó không hoạt động nữa trong ejabberd 13.03. Có lẽ bởi vì nó không được chấp nhận theo các tài liệu (http://www.process-one.net/docs/exmpp/devdoc/trunk/xml.html#get_attr_s-2), vì vậy tôi đã thử sử dụng một hàm từ thư viện exmpp.Lỗi điều khoản chức năng khi sử dụng chức năng exmpp
Tôi gặp lỗi trên dòng DEBUG thứ hai (Dòng gỡ lỗi đầu tiên hoạt động tốt). Và ý tưởng làm thế nào để có được giá trị từ thuộc tính?
Mã đoạn trích:
on_user_send_packet(From, To, Packet) ->
?DEBUG("Sent packet (1): ~p", [Packet]),
Type = exmpp_xml:get_attribute(Packet, <<"type">>, <<"unknown">>),
?DEBUG("Sent packet from (2): ~p", [From]),
Log:
=INFO REPORT==== 2013-05-25 09:58:50 ===
D(<0.1625.0>:mod_stanza_ack:59) : Sent packet (1): {xmlel,<<"message">>,
[{<<"to">>,
<<"[email protected]_dev">>},
{<<"from">>,
<<"[email protected]_dev/webapp">>},
{<<"type">>,<<"chat">>},
{<<"id">>,<<"4834">>}],
[{xmlel,<<"body">>,[],
[{xmlcdata,
<<"SHOOOOOT">>}]},
{xmlel,<<"request">>,
[{<<"xmlns">>,
<<"urn:xmpp:receipts">>}],
[]}]}
=ERROR REPORT==== 2013-05-25 09:58:50 ===
E(<0.1625.0>:ejabberd_hooks:315) : {function_clause,
[{exmpp_xml,get_attribute,
[{xmlel,<<"message">>,
[{<<"to">>,
<<"[email protected]_dev">>},
{<<"from">>,
<<"[email protected]_dev/webapp">>},
{<<"type">>,<<"chat">>},
{<<"id">>,<<"4834">>}],
[{xmlel,<<"body">>,[],
[{xmlcdata,<<"SHOOOOOT">>}]},
{xmlel,<<"request">>,
[{<<"xmlns">>,
<<"urn:xmpp:receipts">>}],
[]}]},
<<"from">>,<<"unknown">>],
[{file,"./core/exmpp_xml.erl"},
{line,1173}]},
{mod_stanza_ack,on_user_send_packet,3,
[{file,"mod_stanza_ack.erl"},{line,60}]},
{ejabberd_hooks,run1,3,
[{file,"ejabberd_hooks.erl"},
{line,311}]},
{ejabberd_c2s,session_established2,2,
[{file,"ejabberd_c2s.erl"},{line,1136}]},
{p1_fsm,handle_msg,10,
[{file,"p1_fsm.erl"},{line,578}]},
{proc_lib,init_p_do_apply,3,
[{file,"proc_lib.erl"},{line,239}]}]}
Bạn nói đúng. xml: get_tag_attr_s ("type", Packet) bây giờ sẽ là xml: get_tag_attr_s (<<"type">>, Packet) để làm việc cho ejabberd 13.XX –