2017-01-06 4 views
0

Я создал простой модуль. вот кодejabberd - пользовательские обработчики iq

-module(mod_conversations). 
-behaviour(gen_mod). 
-export([start/2, stop/1, process_local_iq/3]). 
-include("ejabberd.hrl"). 
-include("logger.hrl"). 
-include("jlib.hrl"). 
-define(IQ_CUSTOM, <<"jabber:iq:conversations">>). 
start(Host, _) -> 
    gen_iq_handler:add_iq_handler(ejabberd_local, Host, ?IQ_CUSTOM, ?MODULE, process_local_iq, one_queue), 
ok. 
stop(Host) -> 
    gen_iq_handler:remove_iq_handler(ejabberd_local, Host, ?IQ_CUSTOM), 
ok. 
process_local_iq(From,_ ,IQ) -> 
IQ#iq{type = result, sub_el = [{xmlelement, <<"value">>, [], [{xmlcdata, <<"Testing...">>}]}]}. 

Когда я сделать запрос с strophe.js var iq = $iq({type: 'get', to: 'some host'}).c('query', {xmlns: 'jabber:iq:conversations'}); connection.sendIQ(iq);

сервер разъединяет me.I пытались найти проблемы, но всего напоминает некоторые из них было более проблематичным. Пожалуйста, помогите мне решить эту проблему

ответ

0

Вы не должны использовать XMLElement кортежи в последних версиях ejabberd, правильный код должен выглядеть следующим образом:

IQ#iq{type = result, 
     sub_el = [#xmlel{name = <<"value">>, 
         children = [{xmlcdata, <<"Testing...">>}]}]}. 
Смежные вопросы