First just want to clarify that this isn’t a voicemail problem, this is a call handling problem. You think it’s only happening with voicemail but that is baloney since you said the line is only for voicemail and the user is not onsite - so without onsite users you can’t say the problem is voicemail. If you were to spend a couple days at the church office answering calls on a real phone I would bet this would happen a lot, there.
Secondly none of the transmit silence stuff applies since you said some voicemails indicate the caller was cut off in the middle of saying something.
I had EXACTLY the same issue just recently.
FreePBX 17 system setup with around 80 deskphones and several trunks registered into it.
Latest FreePBX17 loaded from updates.
Calls from deskphone to deskphone or deskphone to trunk worked no problem.
Calls from both the Linphone and MicroSIP softphones either outgoing to other deskphones or PSTN or incoming from deskphones or PSTN to the softphone - disconnected after 20 seconds.
Tried all kinds of nonsense with Settings→Asterisk SIP settings with rtp timeout values - no fix.
Finally discovered blanking out the IP address in Settings→Asterisk SIP Settings →External Address, fixed the problem.
This problem DOES NOT happen on my test FreePBX system that’s running an un-updated version of Asterisk.
It’s clearly a bug introduced in the latest Asterisk update. What is going on here is the softphones are basically establishing a call with turning on some sort of config in SIP that helps with SIP going through a NAT. Your SIP trunk/trunks are likely doing the same. With the deskphones, there’s a knob in the configuration (I’m running Cisco 3PCC and Cisco Enterprise desk phones) to turn off NAT - with the softphones, there is not and you probably don’t have much control over what your trunk provider does, either. The PBX is smart enough to look at the source IP from the softphone, see that it’s in the list of local networks, and know the softphone is not behind a translator. The free Linphone and Microsip phones are KISS software so you don’t get this - KISS stuff often makes wrong assumptions - and it is screwing something up.
I can’t be producing packet traces and filing bug reports by breaking my production system to make them so I have not put time into investigating this yet.
My suggestion is you try the following:
apt-update everything at the commandline
test and see if it is still breaking
If still breaking, backrev to an older Asterisk version at the command line and test again.
asterisk-version-switch