Я написал код JavaScript, чтобы соединить две конечные точки. Senes похожи на следующее:
A (web + sip.js + wrtc) <---> Freeswitch <---> Twilio sip Trunking <---> B (pstn phone)
Я попробовал два метода в javascript Freeswitch для вызова от A до B:
создайте новый сеанс B, затем соедините A с B:
(1) sessionA.answer () и перезвонить на A,
(2) создать новый сеанс к B через SIP-мост, затем разорвать обратный вызов сеанса A и парковать сеанс B,
(3) мост (сессия A, сессия B)
напрямую соединить мост A с B без создания сеанса B:
(1) sessionA.answer (),
(2) sessionA.execute ('bridge', 'sofia / gateway / 32d1440c-d13c-44b3-94da-1589daf6e81b /' + sessionA.getVariable ('callee_id_number')));
Второй работает хорошо, но в первом A всегда проигрывает аудио из B.
Я использую tcpdump на своем сервере Freeswitch, чтобы проверить соединение и обнаружить, что некоторые UDP-пакеты от Freeswitch до A потеряны, но пакеты от Twillo до Freeswitch не потеряны.
Кажется, что некоторый пакет UDP потерян, в то время как Freeswitch ретранслирует пакеты UDP к A.
Итак, в чем разница между двумя методами и как я могу решить эту проблему? Мне нужно использовать первый метод, чтобы сделать вызов.
Спасибо!