InnovateAsterisk / Browser-Phone

A fully featured browser based WebRTC SIP phone for Asterisk
https://www.innovateasterisk.com
GNU Affero General Public License v3.0
470 stars 239 forks source link

Softphone with browser phone #529

Open adrehmanforunity opened 3 months ago

adrehmanforunity commented 3 months ago

I am following the guidelines from S2E2. Browser phones seem to be working well. Next, I have enabled Asterisk to receive softphone connections on port 8060 as well. For your information, it's deployed on AWS. Ports are enabled, and the softphone is registered.

However, softphones have no voice at all. When calling with music on hold, the call disconnects after some time.

Meanwhile, browser phones are working fine even after the port change.

Mainly, I need to receive calls from the softphone to the browser phone and vice versa.

please suggest what to check.

InnovateAsterisk commented 3 months ago

Remember the signalling and the DTLS(media stream) do not flow over the same channels or use the same protocols. The signaling uses the websocket connection (TLS/TCP 8060 in your case), but audio and video media (in a DTLS stream) uses UDP ports negotiated at the time of the call setup. Start by opening the UDP ports 0-65000.

adrehmanforunity commented 3 months ago

UDP port range is already enabled, don't know what to change to use UDP ports negotiated at the time of the call setup.

InnovateAsterisk commented 2 months ago

Then you need to check the RTP packet flow. In Asterisk CLI, enable RTP debug. > rtp set debug on and then also rtp set debug off to turn off.

You will want to make sure there are no other calls going on, there is an extreme amount of data logged to the screen. But what you are seeing is each RTP packet. In a typical flow between A and B you should have A send and receive, and B send and receive. This way you can see the IP and port.

It's possible that you have not set the local to live port mapping in rtp.conf https://github.com/asterisk/asterisk/blob/master/configs/samples/rtp.conf.sample