private TransferObjectLuis LookForNames(TransferObjectLuis transfer, JArray entities) { List <string> names = new List <string>(); foreach (JObject parsedObject in entities.Children <JObject>()) { foreach (JProperty parsedProperty in parsedObject.Properties()) { string propertyName = parsedProperty.Name; if ((string)parsedProperty.Value == "Name") { names.Add(parsedObject.Value <string>("entity")); } } } if (names.Count == 2) { transfer.Name_0 = names[0]; transfer.Name_1 = names[1]; return(transfer); } else if (names.Count == 1) { transfer.Name_0 = names[0]; transfer.Name_1 = ""; return(transfer); } else { transfer.Name_0 = ""; transfer.Name_1 = ""; return(transfer); } }
public override string DoMergeAndCreateAnswer(TransferObjectLuis processedLuisResult, JObject starwarsAnswer, JObject starwarsAnswer2) { string Name = processedLuisResult.Name_0; string result = starwarsAnswer.Value <string>(processedLuisResult.Intent); return("The eyes of " + Name + " are " + result); }
public override string DoMergeAndCreateAnswer(TransferObjectLuis processedLuisResult, JObject starwarsAnswer) { string Name = processedLuisResult.Name_0; string result = starwarsAnswer.Value <string>(processedLuisResult.Intent); if ((String.IsNullOrEmpty(result) != true) && (result != "unknown")) { return("The eyes of " + Name + " are " + result); } else { return($"I am sorry! The force within me is not strong enough to know the eye color of {Name}"); } }
public override string DoMergeAndCreateAnswer(TransferObjectLuis processedLuisResult, JObject starwarsAnswer) { string Name = processedLuisResult.Name_0; string result = starwarsAnswer.Value <string>(processedLuisResult.Intent); if ((String.IsNullOrEmpty(result) != true) && (result != "unknown")) { return(Name + " is " + result + " centimeters tall."); } else { return($"I am sorry! The force within me is not strong enough to know how tall {Name} is"); } }
public async Task <TransferObjectLuis> DoProcessingComplex(IDialogContext context, JObject luisResult) { string topScoring = luisResult.Value <JObject>("topScoringIntent").Value <string>("intent"); double score = luisResult.Value <JObject>("topScoringIntent").Value <double>("score"); if (topScoring == "None" || score < 0.4) { await context.PostAsync("I am sorry I could not understand your request."); return(new TransferObjectLuis() { Intent = "", Name_0 = "", Name_1 = "", Score = 0 }); } else { string[] Split = topScoring.Split('.'); if (Split[0] == "single") { return(await DoProcessing(context, luisResult)); } JArray Entities = luisResult.Value <JArray>("entities"); TransferObjectLuis Transfer = new TransferObjectLuis { Intent = Split[1], Score = score, Type = Split[0] }; if (Entities.HasValues == false) { await context.PostAsync("I am sorry I could not understand whos " + Split[1] + " your looking for."); return(Transfer); } Transfer = LookForNames(Transfer, Entities); return(Transfer); } }
private async Task ProcessAndPostToUser(IDialogContext context, TransferObjectLuis processedLuisResult, JObject starwarsAnswer) { IMergeAndCreateAnswer merge; string ReturnString = String.Empty; switch (processedLuisResult.Intent) { case "birth_year": { merge = new SingleProcessYear(); ReturnString = merge.DoMergeAndCreateAnswer(processedLuisResult, starwarsAnswer); break; } case "height": { merge = new SingleProcessHeight(); ReturnString = merge.DoMergeAndCreateAnswer(processedLuisResult, starwarsAnswer); break; } case "mass": { merge = new SingleProcessMass(); ReturnString = merge.DoMergeAndCreateAnswer(processedLuisResult, starwarsAnswer); break; } case "eye_color": { merge = new SingleProcessEyeColor(); ReturnString = merge.DoMergeAndCreateAnswer(processedLuisResult, starwarsAnswer); break; } default: { await context.PostAsync("I am sorry i couldn't understand your question"); } break; } await context.PostAsync(ReturnString); }
private async Task MessageReceivedAsync(IDialogContext context, IAwaitable <object> result) { var activity = await result as Activity; ILuisRequest LuisAPI = new LuisRequest(); ILuisProcessing LuisAPIProcessing = new LuisProcessing(); JObject LuisResult = await MakeLuisCall(context, activity.Text, LuisAPI); TransferObjectLuis ProcessedLuisResult = await LuisAPIProcessing.DoProcessing(context, LuisResult); if (String.IsNullOrEmpty(ProcessedLuisResult.Name_0)) { await context.PostAsync("There is no droid you are looking for."); context.Wait(MessageReceivedAsync); } else { var QnAAnswer = await MakeQnAMakerCallforConversion(context, ProcessedLuisResult.Name_0); if (QnAAnswer.Score < 0.2) { await context.PostAsync($"I am sorry I could not find the name {ProcessedLuisResult.Name_0} in my Database"); context.Wait(MessageReceivedAsync); } else { JObject StarwarsAnswer = await CallStarWarsApi(context, QnAAnswer.Answer); await ProcessAndPostToUser(context, ProcessedLuisResult, StarwarsAnswer); context.Wait(MessageReceivedAsync); } } }
private async Task <List <TransferObjectQnA> > MakeNameQnAMakerCall(IDialogContext context, TransferObjectLuis QueryString) { IQnAMakerRequests QnAMaker = new QnAMakerRequests(); IQnAMakerMatchHandler qnAMakerMatchHandler = new QnAMakerMatchHandler(); List <TransferObjectQnA> TransferList = new List <TransferObjectQnA>(); string KnowledgeBaseId = KeysAndRessourceStrings.KnowledgeBaseIdConvert; string SubscriptionKey = KeysAndRessourceStrings.SubscriptionKeyQnAMaker; QnAMakerResult QnAMakerResultObject = await QnAMaker.GetQnAMakerResponse(QueryString.Name_0, KnowledgeBaseId, SubscriptionKey); TransferList.Add(await qnAMakerMatchHandler.QnAMakerResultProcessingWithReturn(context, QueryString.Name_0, QnAMakerResultObject)); QnAMakerResult QnAMakerResultObject2 = await QnAMaker.GetQnAMakerResponse(QueryString.Name_1, KnowledgeBaseId, SubscriptionKey); TransferList.Add(await qnAMakerMatchHandler.QnAMakerResultProcessingWithReturn(context, QueryString.Name_1, QnAMakerResultObject)); return(TransferList); }
public override string DoMergeAndCreateAnswer(TransferObjectLuis processedLuisResult, JObject starwarsAnswer, JObject StarwarsAnswer2) { throw new NotImplementedException(); }
public abstract string DoMergeAndCreateAnswer(TransferObjectLuis processedLuisResult, JObject starwarsAnswer, JObject StarwarsAnswer2);