2016-03-31 7 views
0

ejabberdで簡単なエコーボットを作成しようとしています。私はmod_echoがうまく動作するようにカメラを取得します。私は自分のバージョンが一点で動作していたことをかなり確信しています(デバッグは自分の頭でトリックを演奏しています)。私は以下のエラーが表示されますが、私はそれをデバッグするために次に何をするのか分かりません。ルーティングの問題があるようですが、なぜそれほど確かではありません。任意のヒント?ejabberd_router:ejabberdモジュールのルートエラー

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

これは、関数 'mod_echobot:route'の' function_clause'エラーです。つまり、この関数はエラーメッセージに示されている引数で呼び出されていますが、これらの引数はこの関数のいずれかの句の引数リストと一致しません。 'mod_echobot:route'のソースを見れば、エラーを見つけやすくなります。 – legoscia

+0

ありがとう@legoscia - 私はここに要点を作成しましたhttps://gist.github.com/stevenlivz/d666200595a23c42b2a662fef87bf281 – stevenlivz

+0

うーん、私のコードでは、実際に一致する句で<<"message">を使用する必要があるようですが、サンプルコードi使用していない、単に "メッセージ"などを使用して - これは言語に追加された何か、または私は何か明白な[erlangに新しい]が欠けている?今働いている。また、xmlelementがxmlelになったことにも注目してください。 – stevenlivz

答えて

0

私が使用するサンプルコードのに対し、実際に一致する句で>>(私はオンラインで見つける古いサンプルからだった)のサンプルコードhttps://gist.github.com/stevenlivz/d666200595a23c42b2a662fef87bf281に私は< <「メッセージ」を使用する必要があると思われます単に "メッセージ"などを使用して、それをしませんでした。また、xmlelementがxmlelであることに注意する価値があるので、句も更新する必要があります。例えば。

route(From, To, {xmlel, <<"message">>, _, _} = Packet) -> 
関連する問題