在eJabberd中删除XMPP消息

时间:2014-07-28 10:08:32

标签: erlang xmpp ejabberd

我正在尝试过滤eJabberd中的消息。我收到带有类型服务的消息,处理它,然后放弃它。

我的方法:我只是将返回数据包设置为<query xmlns="urn:xmpp:receipts"><query>。是否有更好的方法来丢弃数据包?

on_filter_packet({From, To, XML} = Packet) ->
    ?INFO_MSG("on_beanstalkd ~p~n", [Packet]),
    Type = xml:get_tag_attr_s(<<"type">>, XML),
    DataTag = xml:get_subtag(XML, <<"data">>), 

    case Type =:= <<"service">> of
    true -> 
        JSON = xml:get_tag_cdata(xml:get_subtag(XML, <<"body">>)),
        {inserted, ID} = beanstalk:put(BeanstalkdPid, JSON),
        Return = #xmlel{name = <<"query">>, attrs = [{<<"xmlns">>, <<"urn:xmpp:receipts">>}]};
    false ->
        Return = Packet
    end,   
    Return.

1 个答案:

答案 0 :(得分:4)

您只需返回原子drop,ejabberd就会丢弃该数据包。