public async override Task <SpeechletResponse> OnIntentAsync(IntentRequest request, Session session) { // Get intent from the request object. AlexaSkillsKit.Slu.Intent intent = request.Intent; string intentName = (intent != null) ? intent.Name : null; // Get user phrase var userPhrase = string.Empty; if (request != null) { if (request.Intent.Name == Helpers.Constants.Intents.AmazonHelpIntent) { userPhrase = Helpers.Constants.Messages.Help; } else { AlexaSkillsKit.Slu.Slot slotValue; if (request.Intent.Slots.TryGetValue(Constants.Slots.Phrase, out slotValue)) { userPhrase = slotValue.Value; } } } EnsureServiceCreated(session.User.Id); // Ensure conversation is already started if (!_botFrameworkService.IsConversationStarted) { if (!await _botFrameworkService.StartConversationAsync()) { return(BuildSpeechletResponse(intent.Name, Constants.Messages.ConversationFailed, false)); } } // Send activity and receive response var shouldEndSession = false; var response = string.Empty; var success = await _botFrameworkService.SendActivityAsync(userPhrase); if (success) { var directLineActivity = (await _botFrameworkService.ReceiveActivityAsync()).First(); shouldEndSession = directLineActivity.EndConversation; if (shouldEndSession) { await _botFrameworkService.EndConversationAsync(); } response = directLineActivity.Message; } else { response = Constants.Messages.ActivityFailed; } return(BuildSpeechletResponse(intent.Name, response, shouldEndSession)); }
public override SpeechletResponse OnIntent(IntentRequest request, Session session) { AlexaSkillsKit.Slu.Intent intent = request.Intent; string intentName = (intent != null) ? intent.Name : null; switch (intentName) { case "Exit": return(BuildSpeechletResponse("Peter Ludwig", "Dann machs gut", true, null, request, session)); case "PeterWhoLove": return(BuildSpeechletResponse("Peter Ludwig", "Natürlich Caro, die schönste und tollste Frau auf der ganzen Welt", true, null, request, session)); case "PeterWhenMarried": return(BuildSpeechletResponse("Peter Ludwig", "Ich habe am 16.08.2016 geheiratet. Das war der schönste Tag in meinem Leben.", true, null, request, session)); case "SkillStatus": string skillStatus = ""; using (AlexaSkillEntities db = new AlexaSkillEntities()) { List <Context.Skill> skills = db.Skills.ToList(); skillStatus = "Ich habe aktuell " + skills.Count() + " Skills.,,,,,"; List <Context.RequestLog> logs = db.RequestLogs.ToList(); skillStatus = skillStatus + "Alle Skills zusammen, wurden insgesamt, " + logs.Count() + " mal, von " + logs.Select(x => x.UserId).Distinct().Count() + " verschiedenen User, aufgerufen., Nun zu den einzelnen Skills.,,,,,"; foreach (Context.Skill skill in skills) { List <Context.RequestLog> skillLog = logs.Where(x => x.ApplicationId == skill.ApplicationID).ToList(); skillStatus = skillStatus + " Der Skill " + skill.Name + " wurde insgesamt " + skillLog.Count() + " mal, von " + skillLog.Select(x => x.UserId).Distinct().Count() + " verschiedenen Usern, aufgerufen.,,,,,"; } } return(BuildSpeechletResponse("Peter Ludwig", skillStatus, true, null, request, session)); } return(BuildSpeechletResponse("Peter Ludwig", "Ich weis nicht was du meinst.", true, null, request, session)); }
public override SpeechletResponse OnIntent(IntentRequest request, Session session) { string speechOutput = null; AlexaSkillsKit.Slu.Intent intent = request.Intent; string intentName = (intent != null) ? intent.Name : null; switch (intentName) { case "GetTemperature": string meatSearchTerm = request.Intent.Slots.First().Value.Value; if (String.IsNullOrWhiteSpace(meatSearchTerm)) { return(BuildSpeechletResponse("Kerntemperaturen", "Das habe ich leider nicht verstanden", true, null, request, session)); } switch (meatSearchTerm.ToLower()) { case "stopp": case "abbrechen": return(BuildSpeechletResponse("Kerntemperaturen", "", true, null, request, session)); } switch (meatSearchTerm.ToLower()) { case "hilfe": return(BuildSpeechletResponse("Kerntemperaturen", "Du kannst hier nach Kerntemperaturen für Fleisch und Fisch fragen, sage jetzt z.B. Rinderfilet", false, null, request, session)); } using (var db = new AlexaSkillEntities()) { Meat meat = null; string sessionIntentParam = ""; if (session.Attributes.ContainsKey("sessionIntentParam")) { sessionIntentParam = session.Attributes["sessionIntentParam"]; } meat = db.Meats.FirstOrDefault(x => x.Name == sessionIntentParam + meatSearchTerm); if (meat == null) { meat = db.Meats.FirstOrDefault(x => x.Name == meatSearchTerm + sessionIntentParam); } if (meat == null) { meat = db.Meats.FirstOrDefault(x => x.Name == meatSearchTerm); } if (meat == null) { foreach (string searchterm in meatSearchTerm.Split(' ')) { meat = db.Meats.FirstOrDefault(x => x.Name == searchterm); if (meat != null) { continue; } } } if (meat == null) { return(BuildSpeechletResponse("Kerntemperaturen", "Für " + meatSearchTerm + " habe ich leider keine Informationen", true, null, request, session)); } if (meat.AnswerId != null) { string sessionIntentParamValue = meatSearchTerm; if (!String.IsNullOrEmpty(meat.Answer.SessionTerm)) { sessionIntentParamValue = meat.Answer.SessionTerm; } if (session.Attributes.ContainsKey("sessionIntentParam")) { session.Attributes["sessionIntentParam"] = sessionIntentParamValue; } else { session.Attributes.Add("sessionIntentParam", sessionIntentParamValue); } return(BuildSpeechletResponse("Kerntemperaturen", meat.Answer.Answert, meat.Answer.ShouldEndSession, null, request, session)); } if (meat.CoreTemperatureId != null) { string delimiter = ""; string termperatureResult = ""; if (meat.CoreTemperature.DefaultDegree != null) { termperatureResult = termperatureResult + delimiter + meat.CoreTemperature.DefaultDegree + " Grad"; delimiter = ", "; } if (meat.CoreTemperature.DefaultMinDegree != null && meat.CoreTemperature.DefaultMaxDegree != null) { termperatureResult = termperatureResult + delimiter + " zwischen " + meat.CoreTemperature.DefaultMinDegree + " und " + meat.CoreTemperature.DefaultMaxDegree + " Grad"; delimiter = ", "; } else if (meat.CoreTemperature.DefaultMinDegree != null) { termperatureResult = termperatureResult + delimiter + " ab " + meat.CoreTemperature.DefaultMinDegree + " Grad"; delimiter = ", "; } else if (meat.CoreTemperature.DefaultMaxDegree != null) { termperatureResult = termperatureResult + delimiter + " bis " + meat.CoreTemperature.DefaultMaxDegree + " Grad"; delimiter = ", "; } if (meat.CoreTemperature.RareDegree != null) { termperatureResult = termperatureResult + delimiter + " für Blutig, " + meat.CoreTemperature.RareDegree + " Grad"; delimiter = ", "; } if (meat.CoreTemperature.RareMinDegree != null && meat.CoreTemperature.RareMaxDegree != null) { termperatureResult = termperatureResult + delimiter + " für Blutig, zwischen " + meat.CoreTemperature.RareMinDegree + " und " + meat.CoreTemperature.RareMaxDegree + " Grad"; delimiter = ", "; } else if (meat.CoreTemperature.RareMinDegree != null) { termperatureResult = termperatureResult + delimiter + " für Blutig, ab " + meat.CoreTemperature.RareMinDegree + " Grad"; delimiter = ", "; } else if (meat.CoreTemperature.RareMaxDegree != null) { termperatureResult = termperatureResult + delimiter + " für Blutig, bis " + meat.CoreTemperature.RareMaxDegree + " Grad"; delimiter = ", "; } if (meat.CoreTemperature.MediumDegree != null) { termperatureResult = termperatureResult + delimiter + " für Medium, " + meat.CoreTemperature.MediumDegree + " Grad"; delimiter = ", "; } if (meat.CoreTemperature.MediumMinDegree != null && meat.CoreTemperature.MediumMaxDegree != null) { termperatureResult = termperatureResult + delimiter + " für Medium, zwischen " + meat.CoreTemperature.MediumMinDegree + " und " + meat.CoreTemperature.MediumMaxDegree + " Grad"; delimiter = ", "; } else if (meat.CoreTemperature.MediumMinDegree != null) { termperatureResult = termperatureResult + delimiter + " für Medium, ab " + meat.CoreTemperature.MediumMinDegree + " Grad"; delimiter = ", "; } else if (meat.CoreTemperature.MediumMaxDegree != null) { termperatureResult = termperatureResult + delimiter + " für Medium, bis " + meat.CoreTemperature.MediumMaxDegree + " Grad"; delimiter = ", "; } if (meat.CoreTemperature.DoneDegree != null) { termperatureResult = termperatureResult + delimiter + " für Durch, " + meat.CoreTemperature.DoneDegree + " Grad"; delimiter = ", "; } if (meat.CoreTemperature.DoneMinDegree != null && meat.CoreTemperature.DoneMaxDegree != null) { termperatureResult = termperatureResult + delimiter + " für Durch, zwischen " + meat.CoreTemperature.DoneMinDegree + " und " + meat.CoreTemperature.DoneMaxDegree + " Grad"; delimiter = ", "; } else if (meat.CoreTemperature.DoneMinDegree != null) { termperatureResult = termperatureResult + delimiter + " für Durch, ab " + meat.CoreTemperature.DoneMinDegree + " Grad"; delimiter = ", "; } else if (meat.CoreTemperature.DoneMaxDegree != null) { termperatureResult = termperatureResult + delimiter + " für Durch, bis " + meat.CoreTemperature.DoneMaxDegree + " Grad"; delimiter = ", "; } return(BuildSpeechletResponse("Kerntemperaturen", "Die Kerntemperatur für " + meat.Name + " beträgt " + termperatureResult, true, null, request, session)); } break; } } return(BuildSpeechletResponse(intent.Name, speechOutput, true, null, request, session)); }