2016-03-31 13 views
0

ejabberd'de basit bir eko bot oluşturmaya çalışıyorum. Ben mod_echo çalışma Tamam olsun ve oldukça eminim kendi sürümü bir noktada çalışıyordum (hata ayıklama başım ile hileler oynadı). Aşağıdaki hatayı alıyorum ama hata ayıklamak için ne yapacağımı anlayamıyorum. Bir yönlendirme sorunu var gibi görünüyor, ancak neden emin değilim. Herhangi bir ipucu?ejabberd_router: ejabberd modülünde yol hatası

2016-03-31 16:49:38.350 [debug] <0.448.0>@ejabberd_router:do_route:324 route 
    from {jid,<<"user1">>,<<"alchemy.local">>,<<"alchemy">>,<<"user1">>,<<"alchemy.local">>,<<"alchemy">>} 
    to {jid,<<>>,<<"echo.alchemy.local">>,<<>>,<<>>,<<"echo.alchemy.local">>,<<>>} 
    packet {xmlel,<<"message">>,[{<<"xml:lang">>,<<"en">>},{<<"to">>,<<"echo.alchemy.local">>},{<<"id">>,<<"aacca">>}],[{xmlcdata,<<"\n">>},{xmlel,<<"subject">>,[],[]},{xmlcdata,<<"\n">>},{xmlel,<<"body">>,[],[{xmlcdata,<<"testme">>}]},{xmlcdata,<<"\n">>},{xmlel,<<"nick">>,[{<<"xmlns">>,<<"http://jabber.org/protocol/nick">>}],[{xmlcdata,<<"user1">>}]},{xmlcdata,<<"\n">>}]} 
2016-03-31 16:49:38.351 [error] <0.448.0>@ejabberd_router:route:77 {function_clause,[{mod_echobot,route,[{jid,<<"user1">>,<<"alchemy.local">>,<<"alchemy">>,<<"user1">>,<<"alchemy.local">>,<<"alchemy">>},{jid,<<>>,<<"echo.alchemy.local">>,<<>>,<<>>,<<"echo.alchemy.local">>,<<>>},{xmlel,<<"message">>,[{<<"xml:lang">>,<<"en">>},{<<"to">>,<<"echo.alchemy.local">>},{<<"id">>,<<"aacca">>}],[{xmlcdata,<<"\n">>},{xmlel,<<"subject">>,[],[]},{xmlcdata,<<"\n">>},{xmlel,<<"body">>,[],[{xmlcdata,<<"testme">>}]},{xmlcdata,<<"\n">>},{xmlel,<<"nick">>,[{<<"xmlns">>,<<"http://jabber.org/protocol/nick">>}],[{xmlcdata,<<"user1">>}]},{xmlcdata,<<"\n">>}]}],[{file,"mod_echobot.erl"},{line,86}]},{ejabberd_router,route,3,[{file,"src/ejabberd_router.erl"},{line,75}]},{ejabberd_c2s,check_privacy_route,5,[{file,"src/ejabberd_c2s.erl"},{line,2121}]},{ejabberd_c2s,session_established2,2,[{file,"src/ejabberd_c2s.erl"},{line,1288}]},{p1_fsm,handle_msg,10,[{file,"src/p1_fsm.erl"},{line,582}]},{proc_lib,init_p_do_apply,3,[{file,"proc_lib.erl"},{line,237}]}]} 
when processing: {{jid,<<"user1">>,<<"alchemy.local">>,<<"alchemy">>,<<"user1">>,<<"alchemy.local">>,<<"alchemy">>},{jid,<<>>,<<"echo.alchemy.local">>,<<>>,<<>>,<<"echo.alchemy.local">>,<<>>},{xmlel,<<"message">>,[{<<"xml:lang">>,<<"en">>},{<<"to">>,<<"echo.alchemy.local">>},{<<"id">>,<<"aacca">>}],[{xmlcdata,<<"\n">>},{xmlel,<<"subject">>,[],[]},{xmlcdata,<<"\n">>},{xmlel,<<"body">>,[],[{xmlcdata,<<"testme">>}]},{xmlcdata,<<"\n">>},{xmlel,<<"nick">>,[{<<"xmlns">>,<<"http://jabber.org/protocol/nick">>}],[{xmlcdata,<<"user1">>}]},{xmlcdata,<<"\n">>}]}} 
2016-03-31 16:50:16.356 [debug] <0.447.0>@ejabberd_receiver:process_data:282 Received XML on stream = <<"\n">> 
+0

Bu, 'mod_echobot: route' işlevindeki' function_clause' hatasıdır. Bu, bu işlevin hata iletisinde gösterilen argümanlar ile çağrıldığı anlamına gelir, ancak bu argümanlar, bağımsız değişkenler listesiyle bu işlevin tümcelerinde eşleşemez. 'Mod_echobot: route' kaynağını görmek, hatayı tespit etmeyi basitleştirmelidir. – legoscia

+0

Teşekkürler @legoscia - Burada bir gist oluşturdum https://gist.github.com/stevenlivz/d666200595a23c42b2a662fef87bf281 – stevenlivz

+0

Hmm, sanki gerçekten eşleşecek cümlelerde <<"message">> kodunu kullanmam gerekiyor. Sadece "mesaj" ve benzeri kullanarak, bunu kullanmamıştı - bu dile eklenmiş bir şey miydi yoksa [Ari] için yeni bir şey eksik mi? Şimdi çalışıyor. Ayrıca, xmlelement'in şimdi xmlel olduğunu da not etmeye değer. – stevenlivz

cevap

0

O i aslında maç için maddelerinde < < "mesaj" >> kullanmak gerekir https://gist.github.com/stevenlivz/d666200595a23c42b2a662fef87bf281 kod örneğinde (eski örnekten oldu ben çevrimiçi bulundu) görünüyor i kullanılan örnek kod oysa sadece "mesaj" ve benzeri kullanarak yapmadı. Ayrıca, xmlelement'in şimdi xmlel olduğunu ve bu nedenle de maddelerin güncellenmesi gerektiğini de belirtmek gerekir. Örneğin.

route(From, To, {xmlel, <<"message">>, _, _} = Packet) -> 
İlgili konular