что означает функция не реализованный ответ

Я пытаюсь отправить собственный IQ на сервер ejabberd из приложения для Android, и у меня есть следующий класс

public class IQCustom extends IQ {


    public final static String childElementName = "query";
    public final static String childElementNamespace = "jabber:iq:conversations";





    public IQCustom(String userFrom, String server)
    {

        super( childElementName, childElementNamespace );
        this.setType(Type.get);


        setTo( server );
        setFrom( userFrom );
    }


    @Override
    protected IQChildElementXmlStringBuilder getIQChildElementBuilder(IQChildElementXmlStringBuilder xml) {




        xml.rightAngleBracket();

        xml.halfOpenElement("abc");
        xml.attribute("op","sum");
        xml.rightAngleBracket();
        xml.closeElement("abc");



        return xml;
    }
}

и это журналы IQ, которые я получаю:

    D/SMACK: SENT (1): <iq to=‘example.com' id='BQ8wt-16' type='get'><query xmlns='jabber:iq:conversations'><abc op='sum'></abc></query></iq>
 D/SMACK: RECV (1): <iq to='[email protected]/Smack' from='example.com' type='get' id='BQ8wt-16'><query xmlns='jabber:iq:conversations'><abc op='sum'/></query></iq>
 D/SMACK: RECV (1): <r xmlns='urn:xmpp:sm:3'/>
 D/SMACK: SENT (1): <iq to='example.com' id='BQ8wt-16' type='error'><error type='cancel'><feature-not-implemented xmlns='urn:ietf:params:xml:ns:xmpp-stanzas'/></error></iq>
 D/SMACK: SENT (1): <r xmlns='urn:xmpp:sm:3'/>
 D/SMACK: SENT (1): <a xmlns='urn:xmpp:sm:3' h='4'/>
 D/SMACK: RECV (1): <a h='5' xmlns='urn:xmpp:sm:3'/>

Я понял причину первого получения iq, но не понял причины iq:

D/SMACK: SENT (1): <iq to='example.com' id='BQ8wt-16' type='error'><error type='cancel'><feature-not-implemented xmlns='urn:ietf:params:xml:ns:xmpp-stanzas'/></error></iq>

ИЗМЕНИТЬ

Это модуль, который должен действовать, когда я отправляю вышеуказанный запрос:

-module(mod_conversations).
-behaviour(gen_mod).
%% ====================================================================
%% API functions
%% ====================================================================
-export([start/2, stop/1, process_local_iq/3]).
-include("ejabberd.hrl").
-include("logger.hrl").
-include("xmpp.hrl").
-define(NS_IQ_CUSTOM, <<"jabber:iq:conversations">>).
start(Host, _) ->
    gen_iq_handler:add_iq_handler(ejabberd_local, Host, ?NS_IQ_CUSTOM, ?MODULE, process_local_iq, one_queue),
    ?INFO_MSG("Inside mod_conversation",[]),
ok.
stop(Host) ->
    gen_iq_handler:remove_iq_handler(ejabberd_local, Host, ?NS_IQ_CUSTOM),
ok.
process_local_iq(From,_ ,IQ) ->
    From,
    ?INFO_MSG("Inside mod_conversation, IQ is ~p~n ",[IQ]),
    Sum = 2+2,
    IQ.

И внутри gen_iq_handler() я увидел, что обработчик уже зарегистрирован, поэтому теперь я не понимаю, что означает реализация этой функции.

Я только хочу отправить клиенту значение Sum в ответном iq, для этого как именно мне зарегистрировать эту функцию и как я могу отправить iq-ответ от этого модуля клиенту/пользователю без каких-либо ошибок iq?


person abhishek ranjan    schedule 07.05.2018    source источник


Ответы (1)


Вы реализовали эту функцию с помощью ns xmpp-stanzas?

person Andrea Zedda    schedule 07.05.2018
comment
Вы имеете в виду, что на стороне сервера у меня есть плагин для обработки jabber:iq:бесед? - person abhishek ranjan; 07.05.2018
comment
Итак, ваш комментарий дал мне новое измерение мысли, и я нашел это xmpp.org/extensions/ xep-0020.html, где пример 4 основного потока объясняет мои сомнения. Это связано с функциями, предоставляемыми сервером, а не клиентом. Спасибо. - person abhishek ranjan; 07.05.2018
comment
привет @AndreaZedda, после долгих усилий и чтения мне все еще почему-то не ясно, что означает реализация этой функции. Я отредактировал свой вопрос, включив в него модуль на стороне сервера. Пожалуйста, посмотрите, если у вас есть шанс. - person abhishek ranjan; 08.05.2018