Exemplo n.º 1
0
        protected virtual async Task AfterBirthdayEntry(IDialogContext context, IAwaitable <IMessageActivity> result)
        {
            var message = await result;

            context.ConversationData.SetValue <string>("INSURANCE-BIRTHDAY", message.Text);

            LuisResponse luisInfo = await ServiceProxies.GetEntityFromLUIS(message.Text);

            if (luisInfo.intents != null && luisInfo.intents.Length > 0 && luisInfo.intents[0].score > 0.6 && luisInfo.intents[0].intent == "Abort")
            {
                await context.PostAsync("Ok, sorry, wir hören jetzt auf. Vielleicht ein anderes mal!");

                context.Done <string>(null);
            }
            else
            {
                string birthday        = message.Text;
                string insuranceNumber = context.ConversationData.GetValue <string>("INSURANCE-NUMBER");
                string insuranceName   = context.ConversationData.GetValue <string>("INSURANCE-NAME");
                System.Diagnostics.Trace.TraceInformation($"KREDITABL {insuranceNumber} - {insuranceName} - {birthday}");
                await context.PostAsync($"Vielen Dank, Ihre Kreditablöseinformation ist unterwegs!");

                context.Done <string>(null);
            }
        }
Exemplo n.º 2
0
        protected virtual async Task StartKreditAblöseDialog(IDialogContext context, IAwaitable <IMessageActivity> result)
        {
            var input = await result;

            LuisResponse luisInfo = await ServiceProxies.GetEntityFromLUIS(input.Text);

            if (luisInfo.intents.Length > 0 && luisInfo.intents[0].intent == "Ja")
            {
                // Yes start kreditablösedialog
                IDialog <string> kreditDialog = (IDialog <string>) new KreditAblöseDialog();
                context.Call(kreditDialog, AfterKreditDialog);
            }
            else
            {
                context.Wait(MessageReceivedAsync);
            }
        }
Exemplo n.º 3
0
        protected virtual async Task AfterInsuranceNumberEntry(IDialogContext context, IAwaitable <IMessageActivity> result)
        {
            var          message  = await result;
            LuisResponse luisInfo = await ServiceProxies.GetEntityFromLUIS(message.Text);

            if (luisInfo.intents != null && luisInfo.intents.Length > 0 && luisInfo.intents[0].score > 0.6 && luisInfo.intents[0].intent == "Abort")
            {
                await context.PostAsync("Ok, sorry, wir hören jetzt auf. Vielleicht ein anderes mal!");

                context.Done <string>(null);
            }
            else
            {
                string insuranceNumber = message.Text;
                context.ConversationData.SetValue <string>("INSURANCE-NUMBER", insuranceNumber);
                await context.PostAsync($"Ihre Versicherungsnummer lautet {String.Join(" ", insuranceNumber.ToCharArray())}. Ist das richtig?");

                context.Wait(this.ConfirmInsuranceNumberEntry);
            }
        }
Exemplo n.º 4
0
        protected virtual async Task AfterNameEntry(IDialogContext context, IAwaitable <IMessageActivity> result)
        {
            var message = await result;

            context.ConversationData.SetValue <string>("INSURANCE-NAME", message.Text);
            LuisResponse luisInfo = await ServiceProxies.GetEntityFromLUIS(message.Text);

            if (luisInfo.intents != null && luisInfo.intents.Length > 0 && luisInfo.intents[0].score > 0.6 && luisInfo.intents[0].intent == "Abort")
            {
                await context.PostAsync("Ok, sorry, wir hören jetzt auf. Vielleicht ein anderes mal!");

                context.Done <string>(null);
            }
            else
            {
                string name = message.Text;
                await context.PostAsync($"Bitte sagen Sie jetzt Ihr Geburtsdatum laut vor");

                context.Wait(this.AfterBirthdayEntry);
            }
        }
Exemplo n.º 5
0
        protected virtual async Task ConfirmInsuranceNumberEntry(IDialogContext context, IAwaitable <IMessageActivity> result)
        {
            var          message  = await result;
            LuisResponse luisInfo = await ServiceProxies.GetEntityFromLUIS(message.Text);

            if (luisInfo.intents != null && luisInfo.intents.Length > 0 && luisInfo.intents[0].score > 0.8 && luisInfo.intents[0].intent == "Ja")
            {
                await context.PostAsync($"Bitte sagen Sie jetzt Ihren Vor und Nach Namen laut vor");

                context.Wait(this.AfterNameEntry);
            }
            else if (luisInfo.intents != null && luisInfo.intents.Length > 0 && luisInfo.intents[0].score > 0.6 && luisInfo.intents[0].intent == "Abort")
            {
                await context.PostAsync("Ok, sorry, wir hören jetzt auf. Vielleicht ein anderes mal!");

                context.Done <string>(null);
            }
            else
            {
                await MessageReceivedAsync(context, result);
            }
        }
Exemplo n.º 6
0
        public async Task MessageReceivedAsync(IDialogContext context, IAwaitable <IMessageActivity> argument)
        {
            var message = await argument;
            // First send typing
            var typingActivity = ((Activity)message).CreateReply();

            typingActivity.Type = ActivityTypes.Typing;
            await context.PostAsync(typingActivity);

            LuisResponse luisInfo = await ServiceProxies.GetEntityFromLUIS(message.Text);

            if (luisInfo.intents != null && luisInfo.intents.Length > 0 && luisInfo.intents[0].score > 0.8 && luisInfo.intents[0].intent == "Kreditablösen")
            {
                // Kredit
                await context.PostAsync("Wollen Sie die Kreditablösesumme jetzt anfordern?");

                context.Wait(this.StartKreditAblöseDialog);
            }
            //else if (luisInfo.intents != null && luisInfo.intents.Length > 0 && luisInfo.intents[0].score > 0.8 && luisInfo.intents[0].intent == "Wikipedia")
            //{
            //    // Wikipedia
            //    string answer = "Das weiß ich nicht, ich lerne noch..";
            //    string wikiResult = await ServiceProxies.SearchWikipedia(luisInfo.entities[0].entity);

            //    Newtonsoft.Json.Linq.JArray jsonResult = JArray.Parse(wikiResult);
            //    JArray titleArray = (JArray)jsonResult[1];
            //    JArray descriptionArray = (JArray)jsonResult[2];
            //    JArray linkArray = (JArray)jsonResult[3];

            //    if (titleArray.Count > 0)
            //    {
            //        answer = "Ich kenne mich nicht so aus, aber hier sind Infos von Wikipedia: " + titleArray[0].ToString() + ". " + descriptionArray[0].ToString();
            //    }

            //    await context.PostAsync(answer);
            //    context.Wait(MessageReceivedAsync);
            //}
            else
            {
                // Fall back on QnAMaker
                QnAResponse response = await ServiceProxies.GetQnAResponse(message.Text);

                string answer = "Das weiß ich nicht, ich lerne noch..";

                if (response.answers.Length > 0 && response.answers[0].score > 0.7)
                {
                    if (smalltalkData[response.answers[0].answer] != null)
                    {
                        // Get random answer from array
                        int index = randomGen.Next(0, ((JArray)smalltalkData[response.answers[0].answer]).Count - 1);
                        answer = smalltalkData[response.answers[0].answer][index].ToString();
                    }
                    else if (!response.answers[0].answer.Contains(".agent."))
                    {
                        answer = response.answers[0].answer;
                    }
                    else
                    {
                        System.Diagnostics.Trace.TraceError("MISSING-ANSWER: " + message.Text);
                    }
                }
                else
                {
                    System.Diagnostics.Trace.TraceError("MISSING-ANSWER: " + message.Text);
                }

                await context.PostAsync(answer);

                context.Wait(MessageReceivedAsync);
            }
        }