Компиляция.erl файла для сборки пользовательского модуля ejabberd
Я установил ejabbered-18.09 в каталоге Applications на Mac (Macintosh HD ▸ Applications) и он работает нормально. Я создал новый mod_http_offline.erl, который является обычным модулем ejabberd для вызова внешнего API.
я понимаю, что мне нужно скомпилировать вышеуказанный файл, чтобы сгенерировать файл.beam, чтобы запустить его с ejabberd .
Как я могу скомпилировать этот файл и сгенерировать файл.beam?
Я попробовал некоторые команды, начинающиеся с erlc, но они не работали, и я не вижу ошибок и не выводил. что такое точная команда erlc и что означает каждый аргумент?
Я установил erlang, используя brew install. вот файл.erl
%% name of module must match file name
-module(mod_http_offline).
-behaviour(gen_mod).
-export([start/2, stop/1, create_message/3]).
-include("ejabberd.hrl").
-include("jlib.hrl").
-include("logger.hrl").
start(_Host, _Opt) ->
?INFO_MSG("mod_http_offline loading", []),
inets:start(),
?INFO_MSG("HTTP client started", []),
ejabberd_hooks:add(offline_message_hook, _Host, ?MODULE, create_message, 50).
stop (_Host) ->
?INFO_MSG("stopping mod_http_offline", []),
ejabberd_hooks:delete(offline_message_hook, _Host, ?MODULE, create_message, 50).
create_message(_From, _To, Packet) ->
%% read config options
MessageId = xml:get_tag_attr_s(list_to_binary("id"), Packet),
Type = xml:get_tag_attr_s(list_to_binary("type"), Packet),
FromS = _From#jid.luser,
ToS = _To#jid.luser,
Body = xml:get_path_s(Packet, [{elem, list_to_binary("body")}, cdata]),
Token = gen_mod:get_module_opt(To#jid.lserver, ?MODULE, auth_token, fun(S) -> iolist_to_binary(S) end, list_to_binary("")),
PostUrl = gen_mod:get_module_opt(To#jid.lserver, ?MODULE, post_url, fun(S) -> iolist_to_binary(S) end, list_to_binary("")),
if (Type == <<"chat">>) and (Body /= <<"">>) ->
post_offline_message(FromS, ToS, Body, SubType, MessageId,Token,PostUrl)
end.
post_offline_message(From, To, Body, SubType, MessageId,Token,PostUrl) ->
?INFO_MSG("Posting From ~p To ~p Body ~p SubType ~p ID ~p~n",[From, To, Body, SubType, MessageId]),
Sep = "&",
Post = [
"from=", From, Sep,
"to=", To, Sep,
"body=", binary_to_list(Body), Sep,
"message_id=", binary_to_list(MessageId), Sep,
"access_token=",Token
],
httpc:request(post, {binary_to_list(PostUrl), [], "application/x-www-form-urlencoded", list_to_binary(Post)},[],[]),
?INFO_MSG("post request sent", []).