Asterisk under nat?

One way audio is almost always NAT or codec.

For testing turn off all codecs except ulaw or alaw. Try an echo test from each extension and see if you can hear your own voice.

For testing set everything to NAT=yes or force_rport,comedia. Not just in general but for each extension as well. If you do not have nat=yes or force_rport,comedia for each extension you will hear what you are describing.

Also disable SIP ALG on your router(s) if enabled.

Don’t get hung up on the confusing force_rport, comedia thing trying one or the other. Just use nat=yes for testing. It still works, it’s just deprecated. Don’t try make it overly complicated. One way audio is a well understood and documented problem.

Also make sure you have the following configured. I don’t see the externip= in your config