예제 #1
0
        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);
            }
        }
예제 #2
0
        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);
        }
예제 #3
0
        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}");
            }
        }
예제 #4
0
        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");
            }
        }
예제 #5
0
        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);
        }
예제 #7
0
        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);
                }
            }
        }
예제 #8
0
        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);
        }
예제 #9
0
 public override string DoMergeAndCreateAnswer(TransferObjectLuis processedLuisResult, JObject starwarsAnswer, JObject StarwarsAnswer2)
 {
     throw new NotImplementedException();
 }
예제 #10
0
 public abstract string DoMergeAndCreateAnswer(TransferObjectLuis processedLuisResult, JObject starwarsAnswer, JObject StarwarsAnswer2);