2013-05-05 3 views
0

사용자 정의 offline_message_hook 모듈을 사용하여 ejabberd 서버가 오프라인 푸시 알림을 보내려고합니다. 문제는 결코 전화가 걸리지 않는 것입니다. 나는 후크의 우선 순위를 0, 49 및 50으로 설정하려고했지만 여전히 작동하지 않습니다. ejabberd offline_message_hook이 호출되지 않았습니다.

은 모듈의 코드입니다 : 당신이 mod_offline_odbc 같은 훅을 호출 한 후 중지 발행하는 활성화

% name of module must match file name 
-module(mod_offline_push). 

%% Every ejabberd module implements the gen_mod behavior 
%% The gen_mod behavior requires two functions: start/2 and stop/1 
-behaviour(gen_mod). 

%% public methods for this module 
-export([start/2, stop/1, create_message/3]). 

%% included for writing to ejabberd log file 
-include("ejabberd.hrl"). 

%% ejabberd functions for JID manipulation called jlib. 
-include("jlib.hrl"). 

start(_Host, _Opt) -> 
    ?INFO_MSG("mod_offline_push loading", []), 
    inets:start(), 
    ?INFO_MSG("HTTP client started", []), 
    ejabberd_hooks:add(offline_message_hook, _Host, ?MODULE, create_message, 0). 

stop (_Host) -> 
    ?INFO_MSG("stopping mod_offline_push", []), 
    ejabberd_hooks:delete(offline_message_hook, _Host, ?MODULE, create_message, 0). 

create_message(_From, _To, Packet) -> 
    ?INFO_MSG("creting offline message", []), 
    Type = xml:get_tag_attr_s("type", Packet), 
    FromS = xml:get_tag_attr_s("from", Packet), 
    ToS = xml:get_tag_attr_s("to", Packet), 
    if (Type == "chat") -> 
     post_offline_message(FromS, ToS) 
    end. 

post_offline_message(From, To) -> 
    ?INFO_MSG("Posting From ~p To ~p~n",[From, To]), 
    httpc:request(post, {"http://host.com/push.php",[], 
    "application/x-www-form-urlencoded", 
    lists:concat(["From=", From,"&To=", To])}, [], []), 
    ?INFO_MSG("post request sent", []). 

답변

0

가능성이 높습니다.

왜 우선 순위를 50보다 높게 늘리려고합니까? mod_offline_ *의 구현을 변경할 수도 있지만 ejabberd_sm의 다른 후크와 동기화됩니다.

작은 구문 조언 - _Host에서 밑줄을 제거하십시오. 나중에 사용하기 위해 한정되지 않는 변수를 위해 예약되어 있습니다.

+0

맞음, mod_offline_odbc를 활성화했습니다. 나는 우선 순위가 엇갈린 것처럼 보이고 낮은 가치는 더 높은 우선 순위를 의미한다고 생각했다. 나는 파기를하고 우선 순위 mod_offline_ *가 멈추고 내 훅을 그보다 높게 놓는 것을 발견 할 것이다. 나는 계속 너를 게시 할 것이다. – Firefly

+0

80의 우선 순위를 시도했지만 여전히 운이 없음 : / – Firefly

1

_Host 대신 호스트 또는 전역을 후크에 전달하십시오. 후크는 특정 호스트 또는 전역 후크로 등록해야합니다.

관련 문제