Allowing Voicemails Longer than 60 Seconds to be Left from External Callers
The Session Border Controller (SBC) settings for SIP Trunks from some Internet Telephony Service Providers (ITSP) prevents an external caller from leaving voicemails longer than 60 seconds to sipXcom users. When a voicemail is left from an external caller, the RTP packets are sent from the ITSP to sipXcom. The ITSP SBC checks for packets coming back from sipXcom under the assumption that this is a two-way voice conversation. If the ITSP SBC sees no RTP packets from sipXcom in 60 seconds, the SBC assumes that there is something wrong at the far end (e.g. IP Phone has lost power) and issues a SIP BYE to terminate the call. Special arrangements with these ITSPs are then required to increase the time interval that a call can run when there are no packets received from sipXcom in order to allow voicemails longer than 60 seconds to be left.
sipXcom uses the Freeswitch media server for recording voicemail - by default the variable record_waste_resources is set to false https://wiki.freeswitch.org/wiki/Variable_record_waste_resources, which means that the media server does not send RTP packets when recording a call. Setting the Freeswitch record_waste_resources variable to true or a numeric value instructs the media server to send RTP packets with 'white noise' when recording a call. If a numeric value is used with a lower value (e.g. 10), the caller leaving voicemail hears a distinct hiss, while higher values lowers the sound to a comfort noise. When the record_waste_resources is set to true, the variable defaults to a value of 1400 and the caller hears no background noise when leaving a voicemail.
The following steps enables the Freeswitch record_waste_resources capability in sipXcom and allows external callers to leave voicemails longer than 60 seconds from some ITSPs without making special arrangements.
Step 1 - Edit the /etc/sipxpbx/freeswitch/default_context.xml.vm file
Step 2 - Locate the following Section
Step 3 - Set the record_waste_resources variable to true
<action application="set" data="record_waste_resources=true"/>
The reach_default_context.xml.vm file should look like this after adding the record_waste_resources statement.
Step 4 - Restart sixpconfig with service sipxconfig restart command and resend the sipXcom Server Profiles
Go to System -> Server, click on the appropriate server, and hit the Send Profiles radio button. This rebuilds the Freeswitch configuration files, and applies them to the in-memory Mongo database - the new record_waste_resources value will take effect for new calls after about 30 seconds.