// Token: 0x06001D3B RID: 7483 RVA: 0x000747E4 File Offset: 0x000729E4 private static string ExtractResultsFromXML(string results, MobileSpeechRecoResultType resultType) { string result = string.Format("<MobileReco {0}=\"{1}\"/>", "ResultType", resultType.ToString()); if (!string.IsNullOrEmpty(results)) { using (XmlReader xmlReader = XmlReader.Create(new StringReader(results))) { if (xmlReader.IsStartElement("MobileReco")) { result = xmlReader.ReadOuterXml(); } } } return(result); }
// Token: 0x06001D3A RID: 7482 RVA: 0x0007478C File Offset: 0x0007298C private static string CombineGALandPersonalContactXMLResults(string galResults, string personalContactsResults, MobileSpeechRecoResultType resultType) { string text = SpeechRecognitionUtils.ExtractResultsFromXML(galResults, resultType); string text2 = SpeechRecognitionUtils.ExtractResultsFromXML(personalContactsResults, resultType); return(string.Format("<?xml version=\"1.0\" encoding=\"utf-8\"?><MobileReco ResultType=\"{4}\"><{0}>{1}</{0}><{2}>{3}</{2}></MobileReco>", new object[] { "GALSearch", text, "PersonalContactSearch", text2, resultType.ToString() })); }
// Token: 0x06001D38 RID: 7480 RVA: 0x00074628 File Offset: 0x00072828 internal static SpeechRecognitionProcessor.SpeechProcessorAsyncCompletedArgs GetCombinedPeopleSearchResult(SpeechRecognition galRecoHelper, SpeechRecognition personalContactsRecoHelper, MobileSpeechRecoResultType highestRecoResultType) { ExTraceGlobals.SpeechRecognitionTracer.TraceDebug <string>(0L, "Gal Result response text:'{0}'", galRecoHelper.Results.ResponseText); ExTraceGlobals.SpeechRecognitionTracer.TraceDebug <string>(0L, "Personal Contacts Result response text:'{0}'", personalContactsRecoHelper.Results.ResponseText); string galResults = string.Empty; string personalContactsResults = string.Empty; if (galRecoHelper.Results.HttpStatus == SpeechRecognitionProcessor.SpeechHttpStatus.Success && galRecoHelper.ResultType == highestRecoResultType) { galResults = galRecoHelper.Results.ResponseText; } if (personalContactsRecoHelper.Results.HttpStatus == SpeechRecognitionProcessor.SpeechHttpStatus.Success && personalContactsRecoHelper.ResultType == highestRecoResultType) { personalContactsResults = personalContactsRecoHelper.Results.ResponseText; } string text = SpeechRecognitionUtils.CombineGALandPersonalContactXMLResults(galResults, personalContactsResults, highestRecoResultType); ExTraceGlobals.SpeechRecognitionTracer.TraceDebug <string>(0L, "Response Text to send to ResultHandler:'{0}'", text); SpeechRecognitionProcessor.SpeechHttpStatus httpStatus = SpeechRecognitionProcessor.SpeechHttpStatus.Success; if (galRecoHelper.Results.HttpStatus != SpeechRecognitionProcessor.SpeechHttpStatus.Success && personalContactsRecoHelper.Results.HttpStatus != SpeechRecognitionProcessor.SpeechHttpStatus.Success) { httpStatus = personalContactsRecoHelper.Results.HttpStatus; text = string.Empty; } return(new SpeechRecognitionProcessor.SpeechProcessorAsyncCompletedArgs(text, httpStatus)); }
public void ProcessAndFormatSpeechRecognitionResults(string result, out string jsonResponse, out SpeechRecognitionProcessor.SpeechHttpStatus httpStatus) { ExTraceGlobals.SpeechRecognitionTracer.TraceDebug <string>((long)this.GetHashCode(), "Entering CombinedScenariosRecognitionResultHandler.ProcessAndFormatSpeechRecognitionResults with results '{0}'", result); jsonResponse = null; httpStatus = SpeechRecognitionProcessor.SpeechHttpStatus.Success; MobileSpeechRecoResultType mobileSpeechRecoResultType = SpeechRecognitionUtils.ParseMobileScenarioXML(result); IMobileSpeechRecognitionResultHandler mobileSpeechRecognitionResultHandler = null; switch (mobileSpeechRecoResultType) { case MobileSpeechRecoResultType.DaySearch: mobileSpeechRecognitionResultHandler = new DaySearchRecognitionResultHandler(this.parameters.TimeZone); break; case MobileSpeechRecoResultType.AppointmentCreation: mobileSpeechRecognitionResultHandler = new DateTimeandDurationRecognitionResultHandler(this.parameters.TimeZone); break; case MobileSpeechRecoResultType.FindPeople: mobileSpeechRecognitionResultHandler = new FindPeopleSpeechRecognitionResultHandler(this.parameters, this.userContext, this.httpContext); break; case MobileSpeechRecoResultType.EmailPeople: mobileSpeechRecognitionResultHandler = new EmailPeopleSpeechRecognitionResultHandler(this.parameters, this.userContext, this.httpContext); break; case MobileSpeechRecoResultType.None: mobileSpeechRecognitionResultHandler = null; break; default: ExAssert.RetailAssert(false, "Invalid result type '{0}'", new object[] { mobileSpeechRecoResultType.ToString() }); break; } string text = string.Empty; CombinedScenarioRecoResult[] obj; if (mobileSpeechRecoResultType == MobileSpeechRecoResultType.None) { obj = new CombinedScenarioRecoResult[0]; } else { mobileSpeechRecognitionResultHandler.ProcessAndFormatSpeechRecognitionResults(result, out jsonResponse, out httpStatus); if (httpStatus != SpeechRecognitionProcessor.SpeechHttpStatus.Success) { return; } CombinedScenarioRecoResult combinedScenarioRecoResult = new CombinedScenarioRecoResult(); combinedScenarioRecoResult.RequestId = this.parameters.RequestId.ToString("N", CultureInfo.InvariantCulture); text = this.GetResultTextForLogging(result); combinedScenarioRecoResult.Text = text; combinedScenarioRecoResult.JsonResponse = jsonResponse; combinedScenarioRecoResult.ResultType = CombinedScenarioRecoResult.MapSpeechRecoResultTypeToCombinedRecoResultType(mobileSpeechRecoResultType); obj = new CombinedScenarioRecoResult[] { combinedScenarioRecoResult }; } jsonResponse = CombinedScenarioRecoResult.JsonSerialize(obj); this.CollectAndLogStatisticsInformation(mobileSpeechRecoResultType, text); ExTraceGlobals.SpeechRecognitionTracer.TraceDebug <string>((long)this.GetHashCode(), "Return json from CombinedScenarioResult: '{0}'", jsonResponse); }
private SpeechProcessorStatisticsLogger.SpeechProcessorStatisticsLogRow CollectStatisticsLog(MobileSpeechRecoResultType resultType, string resultText) { return(new SpeechProcessorStatisticsLogger.SpeechProcessorStatisticsLogRow { RequestId = this.parameters.RequestId, StartTime = ExDateTime.UtcNow, ProcessType = new SpeechLoggerProcessType?(SpeechLoggerProcessType.HandleRecoResults), Culture = this.parameters.Culture, Tag = this.parameters.Tag, TenantGuid = new Guid?(this.parameters.TenantGuid), UserObjectGuid = new Guid?(this.parameters.UserObjectGuid), TimeZone = this.parameters.TimeZone.ToString(), AudioLength = -1, MobileSpeechRecoResultType = new MobileSpeechRecoResultType?(resultType), ResultText = resultText }); }
private void CollectAndLogStatisticsInformation(MobileSpeechRecoResultType mobileScenarioResultType, string resultText) { SpeechProcessorStatisticsLogger.SpeechProcessorStatisticsLogRow row = this.CollectStatisticsLog(mobileScenarioResultType, resultText); SpeechRecognitionHandler.SpeechProcessorStatisticsLogger.Append(row); }
// Token: 0x06001C96 RID: 7318 RVA: 0x0007229C File Offset: 0x0007049C internal static CombinedScenarioResultType MapSpeechRecoResultTypeToCombinedRecoResultType(MobileSpeechRecoResultType resultType) { switch (resultType) { case MobileSpeechRecoResultType.DaySearch: return(CombinedScenarioResultType.DaySearch); case MobileSpeechRecoResultType.AppointmentCreation: return(CombinedScenarioResultType.AppointmentCreation); case MobileSpeechRecoResultType.FindPeople: return(CombinedScenarioResultType.FindPeople); case MobileSpeechRecoResultType.EmailPeople: return(CombinedScenarioResultType.EmailPeople); case MobileSpeechRecoResultType.None: return(CombinedScenarioResultType.None); default: throw new ArgumentOutOfRangeException("ResultType", resultType, "ResultType does not have a mapping"); } }