【发布时间】:2017-06-30 14:39:29
【问题描述】:
我们有 Freeswitch 使用 ESL(异步完全)和 Java 客户端应用程序。 当呼入呼叫到达时,应用程序通过 filter Channel-Call-UUID aLegUuid 进行过滤,并且此呼入通常桥接到 bLeg(带有 park_after_bridge 的桥接命令)。 所以我们在同一个 Netty Channel Handler 中接收来自两条腿的事件。
据我所知,在同一个 Netty Channel Handler 中,我们可以接收来自不同分支的事件: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
有一种情况,bLeg 通过按 DTMF,将(transer XML 默认)aLeg 转移到“fifo with MOH”,然后 bLeg 拨打另一个号码。 bLeg 在此时停放 (park_after_bridge)。
在解除 aLeg 和 bLeg 的桥接之前,我们应用另一个过滤器来监听来自 A 和 B 的事件过滤 Unique-ID aLeg 和 过滤 Unique-ID bLeg 但我们从B 偶尔。有些测试很好,有些则不行。
Insted,如果我们创建一个到 FS 的入站连接并应用相同的过滤器,我们会在桥接之前和之后接收来自 A、B 的事件。
那么,为什么在桥被破坏后,我们在主 Netty 通道处理程序 中没有收到来自 B 的事件,即使应用了过滤器? Netty 频道 是如何与来自 A 的事件绑定的?
提前感谢您的帮助
【问题讨论】:
标签: java netty freeswitch