public dynamic Alexa([FromBody] SkillRequest request) { if (request.Context.System.ApiAccessToken == null) { return(new BadRequestResult()); } var response = AlexaAntwortHelfer.GibEinfacheAntwort(request, SkillTypen.Error, FehlerTypen.FehlerAnfrage.ToDescription(), "", null, DateTime.Now, null); var requestType = request.GetRequestType(); if (requestType == typeof(LaunchRequest)) { response = LaunchRequestHandler(request); } else if (requestType == typeof(IntentRequest)) { response = IntentRequestHandler(request); } else if (requestType == typeof(SessionEndedRequest)) { response = SessionEndedRequestHandler(request); } return(response); }
// ############################################################################################################## /// <summary> /// Gibt die richtige Antwort auf eine Anfrage vom Typ SpeiseplanKommando /// </summary> /// <param name="anfrage">Enthält die Anfrage vom Amazon Alexa Server vom Typ SpeiseplanKommando</param> /// <returns></returns> private SkillResponse SpeisePlanKommando(SkillRequest anfrage) { var tag = anfrage.GetDateTime(SlotValues.Tag.ToString()); var kw = DateTime.Now.GetWeekOfYear(); var year = DateTime.Now.Year; var numberKW = DateTime.Now.GetNumberOfWeeks(); if (tag == null) { tag = DateTime.Now; } if (tag.Value.DayOfWeek < DateTime.Now.DayOfWeek) { kw++; } if (kw > numberKW) { kw = 1; year++; } var speisePlan = GetSpeisePlaene(kw, year).Result; if (speisePlan != null) { return(SpeisePlanAntwortHelfer.GetSpeisePlanResponse(anfrage, speisePlan, tag)); } else { return(AlexaAntwortHelfer.GibEinfacheAntwort(anfrage, SkillTypen.Error, FehlerTypen.NoSpeisePlan.ToDescription(), "", null, tag.Value.Date, false)); } }
// ############################################################################################################## /// <summary> /// Entscheidet welche Art des Kommandos gesprochen wurde /// </summary> /// <param name="anfrage">Enthält die Anfrage vom Amazon Alexa Server vom Typ Kommando</param> /// <returns></returns> private SkillResponse KommandoVerwalter(SkillRequest anfrage) { var antwort = AlexaAntwortHelfer.GibEinfacheAntwort(anfrage, SkillTypen.Error, FehlerTypen.FehlerAnfrage.ToDescription(), "", null, DateTime.Now, false); var intentRequest = (IntentRequest)anfrage.Request; if (intentRequest.Intent.Name.Equals("SpeisePlanKommando")) { antwort = SpeisePlanKommando(anfrage); } else if (intentRequest.Intent.Name.Equals("TagUndKategorieKommando")) { antwort = TagUndKategorieKommando(anfrage); } else if (intentRequest.Intent.Name.Equals("WocheNachKategorieKommando")) { antwort = WocheNachKategorieKommando(anfrage); } else if (intentRequest.Intent.Name.Equals("PreisKommando")) { antwort = PreisIntent(anfrage); } else if (intentRequest.Intent.Name.Equals("AMAZON.CancelIntent")) { antwort = SitzungBeendenVerwalter(anfrage); } else if (intentRequest.Intent.Name.Equals("AMAZON.StopIntent")) { antwort = AlexaAntwortHelfer.GibEinfacheAntwort(anfrage, SkillTypen.Stop, SkillTypen.Stop.ToDescription(), "", null, DateTime.Now, false); } return(antwort); }
// ############################################################################################################## /// <summary> /// Enthält die Antwort des Alexa Skills welche beim Starten des Skills gegeben wird /// </summary> /// <param name="anfrage">Enthält die Anfrage vom Amazon Alexa Server vom Typ Start</param> /// <returns></returns> private SkillResponse StartVerwalter(SkillRequest anfrage) { string text = "Herzlich Willkommen!"; string title = "Connext Campus"; string speech = "Willkommen beim Connext Campus. Was kann ich für Sie tun?"; return(AlexaAntwortHelfer.GibEinfacheAntwort(anfrage, SkillTypen.Willkommen, text, title, speech, DateTime.Now, false)); }
private SkillResponse IntentRequestHandler(SkillRequest request) { var response = AlexaAntwortHelfer.GibEinfacheAntwort(request, SkillTypen.Error, FehlerTypen.FehlerAnfrage.ToDescription(), "", null, DateTime.Now, null); var intentRequest = (IntentRequest)request.Request; if (intentRequest.Intent.Name.Equals("FarbeMischenIntent")) { response = FarbeMischenIntent(request); } return(response); }
// ############################################################################################################## /// <summary> /// /// </summary> /// <param name="anfrage">Enthält die Anfrage vom Amazon Alexa Server</param> /// <returns></returns> private SkillResponse TagUndKategorieKommando(SkillRequest anfrage) { var intentRequest = (IntentRequest)anfrage.Request; if (intentRequest.DialogState.Equals("STARTED")) { return(ResponseBuilder.DialogDelegate(anfrage.Session, intentRequest.Intent)); } else if (!intentRequest.DialogState.Equals("COMPLETED")) { return(ResponseBuilder.DialogDelegate(anfrage.Session)); } else { var numberKW = DateTime.Now.GetNumberOfWeeks(); var kw = DateTime.Now.GetWeekOfYear(); var year = DateTime.Now.Year; var kategorie = anfrage.GetSlotValueInt(SlotValues.Kategorie.ToString(), defaultValue); var tag = anfrage.GetDateTime(SlotValues.Tag.ToString()); if (tag == null) { tag = DateTime.Now; } if (tag.Value.DayOfWeek < DateTime.Now.DayOfWeek) { kw++; } if (kw > numberKW) { kw = 1; year++; } var speisePlan = GetSpeisePlaene(kw, year).Result; if (kategorie != defaultValue) { return(EssenDetailsResponseHelper.GetEssenDetailsResponse(anfrage, speisePlan, kategorie, tag, 0)); } else { return(AlexaAntwortHelfer.GibEinfacheAntwort(anfrage, SkillTypen.Error, FehlerTypen.FehlerAnfrage.ToDescription(), "", null, tag.Value.Date, false)); } } }
// ############################################################################################################## private SkillResponse WocheNachKategorieKommando(SkillRequest anfrage) { var intentRequest = (IntentRequest)anfrage.Request; if (intentRequest.DialogState.Equals("STARTED")) { return(ResponseBuilder.DialogDelegate(anfrage.Session, intentRequest.Intent)); } else if (!intentRequest.DialogState.Equals("COMPLETED")) { return(ResponseBuilder.DialogDelegate(anfrage.Session)); } else { var numberKW = DateTime.Now.GetNumberOfWeeks(); var kw = DateTime.Now.GetWeekOfYear(); var year = DateTime.Now.Year; var kategorie = anfrage.GetSlotValueInt(SlotValues.Kategorie.ToString(), defaultValue); var nextWeek = anfrage.GetSlotValueInt(SlotValues.NextWeek.ToString(), defaultValue) == defaultValue; if (!nextWeek) { kw++; } if (kw > numberKW) { kw = 1; year++; } var speisePlan = GetSpeisePlaene(kw, year).Result; if (kategorie != defaultValue) { return(WocheNachKategorieAntwortHelfer.GetWocheNachKategorieResponse(anfrage, speisePlan, kategorie, kw)); } else { return(AlexaAntwortHelfer.GibEinfacheAntwort(anfrage, SkillTypen.Error, FehlerTypen.FehlerAnfrage.ToDescription(), "", null, DateTime.Now, false)); } } }
public dynamic Alexa([FromBody] SkillRequest anfrage) { try { if (anfrage.Context.System.ApiAccessToken == null) { return(new BadRequestResult()); } var antwort = AlexaAntwortHelfer.GibEinfacheAntwort(anfrage, SkillTypen.Error, FehlerTypen.FehlerAnfrage.ToDescription(), "", null, DateTime.Now, false); var requestType = anfrage.GetRequestType(); if (requestType == typeof(LaunchRequest)) { antwort = StartVerwalter(anfrage); } else if (requestType == typeof(IntentRequest)) { antwort = KommandoVerwalter(anfrage); } else if (requestType == typeof(SessionEndedRequest)) { antwort = SitzungBeendenVerwalter(anfrage); } else if (requestType == typeof(DisplayElementSelectedRequest)) { antwort = ElementKlickVerwalter(anfrage); } return(antwort); } catch (Exception e) { CreateErrorLog(e); return(null); } }
private SkillResponse FarbeMischenIntent(SkillRequest request) { var response = AlexaAntwortHelfer.GibEinfacheAntwort(request, SkillTypen.Error, FehlerTypen.FehlerAnfrage.ToDescription(), "", null, DateTime.Now, null); var intentRequest = (IntentRequest)request.Request; if (intentRequest.DialogState.Equals("STARTED")) { return(ResponseBuilder.DialogDelegate(request.Session, intentRequest.Intent)); } else if (!intentRequest.DialogState.Equals("COMPLETED")) { return(ResponseBuilder.DialogDelegate(request.Session)); } else { var text = "Daraus ergibt sich"; var farbe1 = request.GetSlotValueInt("FarbeEins", -1); var farbe2 = request.GetSlotValueInt("FarbeZwei", -1); if (farbe1 == 1 && farbe2 == 2 || farbe1 == 2 && farbe2 == 1) { response = AlexaAntwortHelfer.GibEinfacheAntwort(request, SkillTypen.Error, $"{text} lila.", "", null, DateTime.Now, null); } else if (farbe1 == 1 && farbe2 == 3 || farbe1 == 3 && farbe2 == 1) { response = AlexaAntwortHelfer.GibEinfacheAntwort(request, SkillTypen.Error, $"{text} orange.", "", null, DateTime.Now, null); } else if (farbe1 == 3 && farbe2 == 2 || farbe1 == 2 && farbe2 == 3) { response = AlexaAntwortHelfer.GibEinfacheAntwort(request, SkillTypen.Error, $"{text} grün.", "", null, DateTime.Now, null); } else if (farbe1 == farbe2) { response = AlexaAntwortHelfer.GibEinfacheAntwort(request, SkillTypen.Error, "<s>Hey</s>, die gleiche Farbe zu mischen ist witzlos.", "", null, DateTime.Now, null); } return(response); } }
private SkillResponse SessionEndedRequestHandler(SkillRequest request) { return(AlexaAntwortHelfer.GibEinfacheAntwort(request, SkillTypen.Ended, "Alles klar, machs gut.", "", null, DateTime.Now, true)); }
private SkillResponse LaunchRequestHandler(SkillRequest request) { return(AlexaAntwortHelfer.GibEinfacheAntwort(request, SkillTypen.Ended, "Hi. Mit diesem Skill kannst du zwei Farben mischen.", "", null, DateTime.Now, false)); }
// ############################################################################################################## /// <summary> /// Konvertiert die Daten der DB in verarbeitbare Elemente /// </summary> /// <param name="anfrage"></param> /// <returns></returns> private SkillResponse FalschesKommando(SkillRequest anfrage) { string speech = "Ich konnte Sie leider nicht verstehen. Um den heutigen Speiseplan zu erfahren, sagen sie: Was gibt es heute zu essen?"; return(AlexaAntwortHelfer.GibEinfacheAntwort(anfrage, SkillTypen.Error, speech, "", speech, DateTime.Now, false)); }
// ############################################################################################################## /// <summary> /// Gibt die richtige Antwort auf die Frage nach den preisen /// </summary> /// <param name="anfrage">Enthält die Anfrage vom Amazon Alexa Server vom Typ PreisIntent</param> /// <returns></returns> private SkillResponse PreisIntent(SkillRequest anfrage) { string speech = "Die Vorspeise kostet 2 Euro. Menü 1 kostet 7,90 Euro. Menü 2 kostet 6,90 Euro. Das vegetarische Menü kostet 4,90 Euro."; return(AlexaAntwortHelfer.GibEinfacheAntwort(anfrage, SkillTypen.Preis, speech, "Preise", speech, DateTime.Now, false)); }
// ############################################################################################################## /// <summary> /// Regelt die Antwort beim Beenden des Alexa Skills /// </summary> /// <param name="request">Enthält die Anfrage vom Amazon Alexa Server vom Typ SitzungBeenden</param> /// <returns></returns> private SkillResponse SitzungBeendenVerwalter(SkillRequest request) { return(AlexaAntwortHelfer.GibEinfacheAntwort(request, SkillTypen.Ended, AlexaAntwortHelfer.Ended, FehlerTypen.Ended.ToDescription(), null, DateTime.Now, true)); }