IMO, that is not a realistic goal, because Wi-Fi at (for example) schools, hotels and hospitals often blocks all ports except those needed for web access. A VPN is a possible solution (if the VPN port is open), but you would not want it always enabled, because it greatly increases battery usage.
If it’s essential that a user can connect from “anywhere”, you could instruct them to turn off Wi-Fi when on an incompatible service. When that’s not feasible, you could forward incoming as regular mobile voice calls, using DISA for outbound.
For your immediate problem, you could try using a non-standard SIP port, or doing SIP over TCP or TLS instead of UDP. Or, do some logging and packet captures to see what is actually going wrong.