private async Task <ParsedCallingRequest> ProcessRequestAsync()
        {
            try
            {
                if (Request.Content == null)
                {
                    Trace.TraceError("No content in the request");
                    return(CallingContext.GenerateParsedResults(HttpStatusCode.BadRequest));
                }

                var content = await Request.Content.ReadAsStringAsync().ConfigureAwait(false);

                return(CallingContext.GenerateParsedResults(HttpStatusCode.OK, content));
            }
            catch (Exception e)
            {
                Trace.TraceError($"Failed to process the notification request, exception: {e}");
                return(CallingContext.GenerateParsedResults(HttpStatusCode.InternalServerError, e.ToString()));
            }
        }
        /// <summary>
        /// Process the calling request and returns <see cref="ParsedCallingRequest"/>.
        /// </summary>
        /// <param name="callType"> The type of request.</param>
        /// <returns> The parsed request.</returns>
        public virtual async Task <ParsedCallingRequest> ProcessRequest(RealTimeMediaCallRequestType callType)
        {
            ParsedCallingRequest parsedRequest;

            switch (callType)
            {
            case RealTimeMediaCallRequestType.IncomingCall:
            case RealTimeMediaCallRequestType.CallingEvent:
            case RealTimeMediaCallRequestType.NotificationEvent:
                parsedRequest = await ProcessRequestAsync();

                break;

            default:
                parsedRequest = CallingContext.GenerateParsedResults(HttpStatusCode.BadRequest, $"{callType} not accepted");
                break;
            }
            parsedRequest.SkypeChainId = CallingContext.ExtractSkypeChainId(this.Request);
            return(parsedRequest);
        }