problema con módulo mod_offile_prowl

Hola,

Estoy empezando a hacer mis pinitos en ésto del ejabberd, y me ha surgido una necesidad complicada.

Necesito mandar alertas offline/push a un teléfono IPhone.

He visto que existe un módulo que te permite utilizar el servicio de "PROWL" para mandar las alertas (mod_offline_prowl http://www.unsleeping.com/2010/07/31/prowl-module-for-ejabberd/),
Compilarlo es sencillo, y la configuración es muy simple, sim embargo, al arrancar el servidor, me aperece el siguiente error:

=INFO REPORT==== 2012-04-18 12:36:31 ===
I(<0.37.0>:mod_offline_prowl:44) : Starting mod_offline_prowl

=INFO REPORT==== 2012-04-18 12:36:31 ===
I(<0.37.0>:mod_offline_prowl:44) : Starting mod_offline_prowl

=ERROR REPORT==== 2012-04-18 12:36:31 ===
E(<0.37.0>:gen_mod:73) : {badarg,
                             [{erlang,register,[mod_offline_prowl,<0.466.0>]},
                              {mod_offline_prowl,start,2},
                              {gen_mod,start_module,3},
                              {lists,foreach,2},
                              {ejabberd_app,start,2},
                              {application_master,start_it_old,4}]}

Ni que decir tiene que estoy pez en eso del "erlang", pero.....

Fijaros en la sección "start(Host,opts)"

¿No faltaría algo del tipooooo?:

register(gen_mod:get_module_proc(Host, Opts, ?PROCNAME),......

¿Puede alguien echarme una manita?
(he intentado contactar con el autor, pero no parece estar muy receptivo :-( )
Os pongo todo el código, que es muy cortito ;-)
Saludos.......

-module(mod_offline_prowl).
-author('rgeorge@midnightweb.net').

-behaviour(gen_mod).

-export([start/2,
init/2,
stop/1,
send_notice/3]).

-define(PROCNAME, ?MODULE).

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

start(Host, Opts) ->
    ?INFO_MSG("Starting mod_offline_prowl", [] ),
    register(gen_mod:get_module_proc(Host, Opts, ?PROCNAME),
    spawn(?MODULE, init, [Host, Opts])), 
    ok.

init(Host, _Opts) ->
    inets:start(),
    ssl:start(),
    ejabberd_hooks:add(offline_message_hook, Host, ?MODULE, send_notice, 10),
    ok.

stop(Host) ->
    ?INFO_MSG("Stopping mod_offline_prowl", [] ),
    ejabberd_hooks:delete(offline_message_hook, Host,
  ?MODULE, send_notice, 10),
    ok.

send_notice(_From, To, Packet) ->
    Type = xml:get_tag_attr_s("type", Packet),
    FromS = xml:get_tag_attr_s("from", Packet),
    ToS   = xml:get_tag_attr_s("to", Packet),
    Body = xml:get_path_s(Packet, [{elem, "body"}, cdata]),
    APIKeys = gen_mod:get_module_opt(To#jid.lserver, ?MODULE, apikeys, [] ),
    APIKey = lists:keyfind(string:sub_word(ToS,1,$/), 1, APIKeys),
    if
(Type == "chat") and (Body /= "") and (APIKey /= false) ->
      ?INFO_MSG("Found API Key for ~s. Will post message to Prowl.~n", [element(1,APIKey)] ),
  Sep = "&",
  Post = [
    "apikey=", element(2,APIKey), Sep,
    "application=XMPP", Sep,
    "event=New%20Chat", Sep,
    "description=", string:sub_word(FromS,1,$/), "%0A", Body, Sep,
    "priority=-1", Sep,
    "url=xmpp:", string:sub_word(FromS,1,$/) ],
  httpc:request(post, {"https://api.prowlapp.com/publicapi/add", [], "application/x-www-form-urlencoded", list_to_binary(Post)},[],[]),
  ok;
true ->
  ok
    end.
   

Problema solventado! Ésta era

Problema solventado!

Ésta era la solución:

start(Host, Opts) ->
    ?INFO_MSG("Starting mod_offline_prowl", [] ),
   
    register(gen_mod:get_module_proc(Host, ?PROCNAME),  
      spawn(?MODULE, init, [Host, Opts])), 
    ok.

Por si alguien lo necesita.....

Syndicate content