2017-06-30 21 views
0

JavaクライアントアプリケーションでESL(async full)を使用するフリーズスイッチを使用しています。 インバウンドコールが到着すると、アプリケーションはフィルタチャネルコール-UUID aLegUuidでフィルタリングし、このインバウンドは通常bLeg(bridgeコマンドwith park_after_bridge)にブリッジされます。 したがって、私たちは両方の脚から同じNettyチャンネルハンドラのイベントを受け取ります。Freeswitch ESLクライアント:アプリケーションがbLegからイベントを受信しない

私の知る限りでは、同じネッティーチャンネルハンドラに我々は異なる足からイベントを受け取ることができます:https://freeswitch.org/confluence/display/FREESWITCH/mod_event_socket

filter plain all 
filter plain CUSTOM conference::maintenance 
filter Unique-ID $participantB 
filter Unique-ID $participantA 
filter Unique-ID $participantC 

DTMFを押してbLeg、転送は(ランサーXML場合がありますデフォルト)aLeg to 'fifo with MOH'と入力し、別の番号をダイヤルします。この時点で駐車している(park_after_bridge)。 unbridge aLegとbLeg前

、我々はユニーク-ID bLeg AとB フィルタユニーク-ID aLegフィルタからイベントをリッスンする別のフィルタを適用しますが、我々はesporadically Bからイベントを受信します。いくつかのテストはうまく、いくつかはうまくいきませ

Instedでは、FSへの受信接続を作成して同じフィルタを適用すると、ブリッジの前後にあるA、Bのイベントを受信します。

したがって、フィルタが適用されていても、ブリッジが壊れた後に、NettyチャネルハンドラのBからイベントを受信しないのはなぜですか? Nettyチャネルは、Aのイベントにのみバインドされていますか?そのHipChat上Freeswitchセッションの後にあなたの助け

答えて

0

を事前に

おかげで、マイクJerrisは、私が期待するよう、これが動作しない理由を説明piece of codeを指摘:

if (send && switch_test_flag(l, LFLAG_MYEVENTS)) { 
     char *uuid = switch_event_get_header(event, "unique-id"); 
     if (!uuid || (l->session && strcmp(uuid, switch_core_session_get_uuid(l->session)))) { 
      send = 0; 
     } 
    } 

あなただけの意志アウトバウンドソケット接続でソケットアプリケーションを呼び出したコールレッグのイベントを参照してください

「Matthew Vale @マフー)」も同様