我写了一个JavaScript代码来桥接两个端点。感觉如下:
A(web + sip.js + wrtc)<---> Freeswitch <---> Twilio sip中继<---> B(pstn电话)
我尝试了Freeswitch javascript中从A到B调用的两种方法:
创建新的sessionB,然后将A桥接到B: (1)sessionA.answer()并回铃给A, (2)通过Sip桥接器创建到B的新会话,然后中断sessionA回铃并驻留会话B, (3)网桥(sessionA,sessionB)
直接将A桥接到B,而无需创建sessionB: (1)sessionA.answer(), (2)sessionA.execute('bridge','sofia / gateway / 32d1440c-d13c-44b3-94da-1589daf6e81b /'+ sessionA.getVariable('callee_id_number'));
第二个效果很好,但是在第一个中,A总是会丢失B的一些音频。 我在Freeswitch服务器上使用tcpdump检查连接,发现从Freeswitch到A的一些UDP数据包丢失了,但是从Twillo到Freeswitch的数据包没有丢失。 在Freeswitch将UDP数据包中继到A时,似乎有些UDP数据包丢失了。
那么,这两种方法有什么区别,我该如何解决?我需要使用第一种方法进行通话。
谢谢!