Компиляция.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", []).

0 ответов

Другие вопросы по тегам