Hold Times & Dropped Calls in Lync 2010
Depending on how the carrier is setup to respond to RTCP packets, even with a caller being on hold it still counts down against the session timer. There are some features in the trunk configuration that are enabled/disabled by default that by switching them from True to False fixes the issue.
To make these changes to the trunk configuration, we need to understand where they reside in the Set-CSTrunkConfiguration cmdlet:
Here is what a default configuration looks like:
Identity                            : Global
OutboundTranslationRulesList        : {}
SipResponseCodeTranslationRulesList : {}
Description                         :
ConcentratedTopology                : True
EnableBypass                        : True
EnableMobileTrunkSupport            : False
EnableReferSupport                  : True
EnableSessionTimer                  : False
EnableSignalBoost                   : False
MaxEarlyDialogs                     : 20
RemovePlusFromUri                   : False
RTCPActiveCalls                     : True
RTCPCallsOnHold                     : True
SRTPMode                            : Optional
EnablePIDFLOSupport                 : False
The 3 settings we want to change are:
EnableSessionTimer = $True
Specifies whether the session timer is enabled. Session timers are used to determine whether a particular session is still active.
Note that even if this parameter is set to False, session timers can be applicable if the remote connection has session timer enabled. In such a case, the Mediation Server will reply to session timer probes from the remote entity.

RTCPActiveCalls = $False
This parameter determines whether RTCP packets are sent from the PSTN gateway, IP-PBX, or SBC at the service provider for active calls. An active call in this context is a call where media is allowed to flow in at least one direction. If RTCPActiveCalls is set to True, the Mediation Server or Lync Server client can terminate a call if it does not receive RTCP packets for a period exceeding 30 seconds.
Note that disabling the checks for received RTCP media for active calls in Lync Server elements removes an important safeguard for detecting a dropped peer and should be done only if necessary.

RTCPCallsOnHold = $False
This parameter determines whether RTCP packets continue to be sent across the trunk for calls that have been placed on hold and no media packets are expected to flow in either direction. If Music on Hold is enabled at either the Lync Server client or the trunk, the call will be considered to be active and this property will be ignored. In these circumstances use the RTCPActiveCalls parameter.
Note that disabling the checks for received RTCP media for active calls in Lync Server elements removes an important safeguard for detecting a dropped peer and should be done only if necessary.
Now that we know how these effect our environment, if we go over to the shell and issue the following commands:
 set-cstrunkconfiguration -identity “global” -enablesessiontimer $True
set-cstrunkconfiguration -identity “global” -rtcpactivecalls $False -rtc
pcallsonhold $False
Then call our DDI from an outside number and place it on hold, it should sit there as long as the calls bears to hear the default Lync hold music loop.
Advertisement