Attualmente sto sviluppando un'applicazione di chat per iPhone e finora è così utile per la configurazione regolare del server ejabberd. Voglio implementare la notifica Push quando l'utente è "offline" e per farlo ho solo bisogno di eseguire uno script PHP che ottiene un dispositivo Token e il messaggio di testo da consegnare via SSL ai server Apple (la parte Apple è fatta), il mio il problema inizia è che non ho idea di come implementare questa azione sul mio server ejabberd? fondamentalmente ho solo bisogno di creare un'azione su un messaggio offline ricevuto, ciò è possibile. Qualcuno può indicarmi la giusta direzione. Sono riuscito a iniziare a scrivere del codice per un nuovo modulo ma ottengo lo stesso errore per tutto il tempo in cui questo modulo viene chiamato dai messaggi offline, ecco il codice e l'errore.ejabberd mod_offline iphone ha spinto le notifiche
module.erl
-module(mod_offline_push).
-behaviour(gen_mod).
-include("ejabberd.hrl").
-export([start/2, stop/1, send_notice/1]).
start(VHost,_Opts) ->
?INFO_MSG("Starting mod_offline_push Host: ~p", [VHost]),
inets:start(),
ssl:start(),
ejabberd_hooks:add(offline_message_hook, VHost, ?MODULE,send_notice, 50),
ok.
stop(VHost) ->
?INFO_MSG("mod_offline_push stopping Host: ~p", [VHost]),
ejabberd_hooks:delete(offline_message_hook, VHost, ?MODULE, send_notice, 50),
ok.
send_notice(Packet) ->
?INFO_MSG("after http:",[]),
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]),
if
(Type == "chat") and (Body /= "") ->
Sep = "&",
Post = [
"application=",ToS, Sep,
"event=", FromS,Type, Sep,
"description=", Body, Sep,
"priority=-1" ],
httpc:request(post, {"http://pushNotification/push", [], "application/x-www-form-urlencoded", list_to_binary(Post)},[],[]),
ok;
true ->
ok
end.
ERRORE
=ERROR REPORT==== 2010-08-26 16:53:19 ===
E(<0.370.0>:ejabberd_hooks:190) : {undef,
[{mod_offline_push,send_notice,
[{jid,"userA","198.165.211.1",
"2121731711282852044419503",
"userA","198.165.211.206",
"2121731711282852044419503"},
{jid,"userB","198.165.211.1",
[],"userB","198.165.211.1",[]},
{xmlelement,"message",
[{"type","chat"},
{"to","[email protected]"}],
[{xmlelement,"body",[],
[{xmlcdata,<<"Hello">>}]}]}]},
{ejabberd_hooks,run1,3},
{ejabberd_sm,route,3},
{ejabberd_local,route,3},
{ejabberd_router,route,3},
{ejabberd_c2s,session_established,2},
{p1_fsm,handle_msg,10},
{proc_lib,init_p,5}]}
running hook: {offline_message_hook,
[{jid,"userA","198.165.211.1",
"2121731711282852044419503","userA",
"userA","2121731711282852044419503"},
{jid,"userB","198.165.211.1",[],"userB",
"198.165.211.1",[]},
{xmlelement,"message",
[{"type","chat"},{"to","[email protected]"}],
[{xmlelement,"body",[],[{xmlcdata,<<"Hello">>}]}]}]}
Hai risolto questo? Sto lavorando alla stessa cosa. –