Outside of network, hold and transfer options disconnect caller

I have noticed that when I use either my windows soft phone (3cxphone), or my android softphone (3cxphone, Zoiper, Linphone), if I am talking to someone and I hit the hold button, it disconnects the call. The Android app Zoiper actually displays “Call/Transaction does not exist. Error (481)”.

When I connect my android phone to my local network where freepbx is connected to, the hold option works fine on any client. I assume this has something to do with NAT and the router somehow. I searched all over these forums and google but have not come up with anything solid.

Anybody?

Turn RPID to off, that should fix it.