Sessions expire after 30 minutes and drop the calls

Asterisk provides support for SIP Session Timers (RFC 4028) through parameters in sip.conf. To set them in FreePBX you can use the advanced SIP settings. SST’s are supposed to provide a keep-alive mechanism, not a timer to end the call at a pre-defined duration! However, they quite often don’t work properly and cause calls to drop. The simplest fix is to disable them with “session-timers=refuse”. You may find my article here of interest:
http://kb.smartvox.co.uk/voip-sip/top-reasons-voip-calls-drop/