如何在我的ejabberd模块中使用“ejabberd”?

时间:2015-02-18 13:43:09

标签: module erlang ejabberd

我尝试编写ejabber模块。我尝试使用ejabber_sm,但我找不到例子。 我试试:

-module(mod_auto_muc).

-behavior(gen_mod).

-include("ejabberd.hrl").
-include("logger.hrl").

-export([start/2, stop/1, on_user_available/1]).

start(Host, _Opts) ->
    ?INFO_MSG("mod_auto_muc starting on Host: ~p", [Host]),
    ejabberd_hooks:add(user_available_hook, Host, ?MODULE, on_user_available, 50),
    ok.

stop(Host) ->
    ?INFO_MSG("mod_auto_muc stopping on Host: ~p", [Host]),
    ejabberd_hooks:delete(user_available_hook, Host, ?MODULE, on_user_available, 50),
    ok.

on_user_available(Jid) ->
    ConnectedUsers = ejabber_sm:connected_users(),
    ?INFO_MSG("Connected users ~p", [ConnectedUsers]),
    ok.

跑完后我得到了:

  

[error] {undef,[{ejabber_sm,get_user_resources,[<<" atterratio">>,<<" localhost">>] ,[]}

我认为需要连接其他模块但不知道是什么。 在这种情况下谁能说出来。或者更好的是链接到为ejabberd编写不同模块的示例。除了this

1 个答案:

答案 0 :(得分:1)

项目最后称为ejabberdd,模块也是如此:它应该是ejabberd_sm,而不是ejabber_sm