ejabberd-2.1.2サーバーを使用しています。既存のejabberdサーバーに新しい名前空間を追加するにはどうすればよいですか。 ネームスペース( 'http://jabber.org/protocol/rosterx')XEP-0144のロスターアイテム交換を追加したいと思います。ejabberdサーバーに名前空間を追加する
ありがとう、 sathi。
ejabberd-2.1.2サーバーを使用しています。既存のejabberdサーバーに新しい名前空間を追加するにはどうすればよいですか。 ネームスペース( 'http://jabber.org/protocol/rosterx')XEP-0144のロスターアイテム交換を追加したいと思います。ejabberdサーバーに名前空間を追加する
ありがとう、 sathi。
モジュールを作成するには、mod_rosterx.erl
のような名前を付けます。それをejabberd.cfg
ファイルに追加してください。
このファイルの内容は次のようになります。実際にコードをprocess_local_iq
関数で記述する必要があります。また、これは、他のクライアント宛ではなく、サーバー宛のISスタンザを処理します。必要に応じて調整してください!
-module(mod_rosterx).
-behavior(gen_mod).
-export([start/2, stop/1, process_local_iq/3]).
-include("ejabberd/src/ejabberd.hrl").
-include("ejabberd/src/jlib.hrl").
-define(NS_ROSTERX, "http://jabber.org/protocol/rosterx").
start(Host, Opts) ->
IQDisc = gen_mod:get_opt(iqdisc, Opts, one_queue),
mod_disco:register_feature(Host, ?NS_ROSTERX),
gen_iq_handler:add_iq_handler(ejabberd_local, Host, ?NS_ROSTERX, ?MODULE, process_local_iq, IQDisc).
stop(Host) ->
gen_iq_handler:remove_iq_handler(ejabberd_local, Host, ?NS_ROSTERX).
process_local_iq(From, To, {iq, ID, set, NS, Language, SubElement}) ->
{iq, ID, error, NS, Language, []};
process_local_iq(_, _, {iq, ID, get, NS, Language, SubElement}) ->
{iq, ID, error, NS, Language, []}.
あなたは「これはサーバーに宛てられたISスタンザを扱い、他のクライアントには送信されません。 – GJain
何をしようとしていますか?カスタムXスタンザがこのトリックを行うでしょうか?サーバー側でカスタム・スタンザ処理を追加しようとしていますか? – DashK