Calls from Teams to Exchange Server 2016 Unified Messaging voice mail fail

Applies to: Exchange Server 2016

Symptoms


In a Microsoft Skype for Business Server and Exchange Server 2016 Unified Messaging (UM) integrated environment, unanswered calls from Microsoft Teams users to on-premises Skype for Business users are dropped instead of rolling to voice mail. During the dropped call, an event is logged in the Application event log of the Exchange Server UM:
 
Time:     DateTime
ID:         1079
Level:     Warning
Source: MSExchange Unified Messaging
Machine:  <Exchange Server FQDN>
Message:  The VoIP platform encountered an exception FailureReason = 0
Microsoft.Rtc.Collaboration.CallOperationFailureException:An internal media error occurred ---> Microsoft.Rtc.Collaboration.OfferAnswerException:An internal media error occurred ---> Microsoft.Rtc.Internal.Media.EndpointException: Cannot set the transport parameter.
   at Microsoft.Rtc.Internal.Media.RtpEndpoint.EngineSetTransportParameter(CTransportHandle TransportHandle, UInt32 ulParamName, Void* pParamValue)
   at Microsoft.Rtc.Internal.Media.RtpEndpoint.UpdateRemoteEndpoints(RtpIceImplementationType RemoteIceType)
   at Microsoft.Rtc.Collaboration.AudioVideo.MediaSessionAgent.ProcessInstantiateNewMediaWorkitem(InstantiateNewMediaWorkitemAsyncResult prepareNewMediaWorkitem) Inner hr : 0xC0044003
   
--- End of inner exception stack trace ---
   at Microsoft.Rtc.Signaling.SipAsyncResult`1.ThrowIfFailed()
   at Microsoft.Rtc.Signaling.Helper.EndAsyncOperation[T](Object owner, IAsyncResult result)
   at Microsoft.Rtc.Collaboration.Call.EstablishCoreAsyncResult.OfferAnswerRequestCompleted(IAsyncResult result)
Detected at System.Environment.GetStackTrace(Exception e, Boolean needFileInfo)
   at System.Environment.get_StackTrace()
   at Microsoft.Rtc.Collaboration.OfferAnswerException..ctor(OfferAnswerFailureReason reason, String message, Exception innerException, IEnumerable`1 signalingHeaders, DiagnosticsInformation diagnosticsInformation)
   at Microsoft.Rtc.Collaboration.AudioVideo.MediaSessionAgent.CreateOfferAnswerException(OfferAnswerFailureReason type, Exception e, UInt32 errorCode, RtpEndpoint endpointForDiagBlob)
   at Microsoft.Rtc.Collaboration.AudioVideo.MediaSessionAgent.ProcessInstantiateNewMediaWorkitem(InstantiateNewMediaWorkitemAsyncResult prepareNewMediaWorkitem)
   at Microsoft.Rtc.Signaling.WorkitemQueue.ProcessItems()
   at Microsoft.Rtc.Signaling.QueueWorkItemState.ExecuteWrappedMethod(WaitCallback method, Object state)
   at System.Threading.ExecutionContext.RunInternal(ExecutionContext executionContext, ContextCallback callback, Object state, Boolean preserveSyncCtx)
   at System.Threading.ExecutionContext.Run(ExecutionContext executionContext, ContextCallback callback, Object state, Boolean preserveSyncCtx)
   at System.Threading.QueueUserWorkItemCallback.System.Threading.IThreadPoolWorkItem.ExecuteWorkItem()
   at System.Threading.ThreadPoolWorkQueue.Dispatch()
   
--- End of inner exception stack trace ---
   at Microsoft.Rtc.Signaling.SipAsyncResult`1.ThrowIfFailed()
   at Microsoft.Rtc.Signaling.Helper.EndAsyncOperation[T](Object owner, IAsyncResult result)
   at Microsoft.Rtc.Collaboration.Call.EndAcceptCore(IAsyncResult result)
   at Microsoft.Exchange.UM.UcmaPlatform.UcmaCallSession.AcceptCallSessionState.Call_AcceptCompleted(IAsyncResult r)
   at Microsoft.Exchange.UM.UcmaPlatform.UcmaCallSession.SubscriptionHelper.<>c__DisplayClass20_1`1.<WrapCallback>b__1()
   at Microsoft.Exchange.UM.UcmaPlatform.UcmaCallSession.<>c__DisplayClass192_0.<CatchAndFireOnError>b__0()
Detected at System.Environment.GetStackTrace(Exception e, Boolean needFileInfo)
   at System.Environment.get_StackTrace()
   at Microsoft.Rtc.Collaboration.CallOperationFailureException..ctor(String message, Exception innerException, CallOperationFailureReason reason)
   at Microsoft.Rtc.Collaboration.Call.EstablishCoreAsyncResult.OfferAnswerRequestCompleted(IAsyncResult result)
   at Microsoft.Rtc.Signaling.SipAsyncResult`1.MakeCallback(Object state)
   at Microsoft.Rtc.Signaling.SipAsyncResult`1.Complete(TEx ex, Boolean synchronousCompletion)
   at Microsoft.Rtc.Collaboration.ComponentModel.MediaProvider.AnswerAsyncResult.GetAnswerCompleted(IAsyncResult result)
   at Microsoft.Rtc.Signaling.WorkitemQueue.ProcessItems()
   at Microsoft.Rtc.Signaling.QueueWorkItemState.ExecuteWrappedMethod(WaitCallback method, Object state)
   at System.Threading.ExecutionContext.RunInternal(ExecutionContext executionContext, ContextCallback callback, Object state, Boolean preserveSyncCtx)
   at System.Threading.ExecutionContext.Run(ExecutionContext executionContext, ContextCallback callbac during the call with ID "<unique call ID here>". This exception occurred at the Microsoft Exchange Speech Engine VoIP platform during an event-based asynchronous operation submitted by the server. The server will attempt to recover from this exception. If this warning occurs frequently, contact Microsoft Product Support.
In addition, you receive the following 500 error message in SIPstack logs:
A SIP/2.0 500 Internal Server Error will be found in SIPstack logs with the following diagnostic information:
ms-diagnostics: 24014;Component="RTCC/5.0.0.0_MSExchangeUM/<IP address>";Reason="An internal media error occurred";Source="<fqdn of Exchange UM server>"

Cause


Exchange Server 2016 UM uses the Unified Communications Managed API (UCMA) 4.0 to parse Session Description Protocol (SDP) information. However, Microsoft Teams uses a new MTURNID parameter in SDP that was introduced after the release of UCMA 4.0.

Resolution


To fix this issue, update UCMA 4.0 to version 5.0.8308.1091 for Exchange Server 2016 UM by using the Lync Server 2013 Cumulative Update installer.