private SkillResponse AllPaleoFood(SkillRequest input, IntentRequest intentRequest, SsmlOutputSpeech speech) { SkillResponse finalResponse; // get the slots // create the speech response - cards still need a voice response var foodlist = string.Empty; foreach (var item in GetPaleoFoods()) { foodlist += item + ","; } foodlist = foodlist.Remove(foodlist.Length - 1, 1); var paleofoodlist = $"These are the paleo foods: {foodlist}"; speech.Ssml = $"<speak>{paleofoodlist}! Would you like to know more about paleo activities?</speak>"; // create the speech reprompt var repromptMessage = new PlainTextOutputSpeech(); repromptMessage.Text = "Would you like to know more paleo about activities?"; input.Session.Attributes["paleoActivities"] = "true"; // create the reprompt var repromptBody = new Reprompt(); repromptBody.OutputSpeech = repromptMessage; // create the response finalResponse = ResponseBuilder.Ask(speech, repromptBody, input.Session); return(finalResponse); }
/// <summary> /// Creates a response object /// </summary> /// <param name="response"></param> /// <param name="title"></param> /// <param name="cardContent"></param> /// <param name="session"></param> /// <param name="endSession"></param> /// <returns>the respnse</returns> private static SkillResponse CreateResponseWithReprompt(string response, string title, string cardContent, Session session) { var respMessage = new PlainTextOutputSpeech(); respMessage.Text = response; var repromptMessage = new PlainTextOutputSpeech(); repromptMessage.Text = "Soll ich dir noch einen Geburtstag sagen?"; var repromptBody = new Reprompt(); repromptBody.OutputSpeech = repromptMessage; ResponseBody body = new ResponseBody(); body.OutputSpeech = respMessage; body.ShouldEndSession = false; body.Card = new SimpleCard { Title = title, Content = response }; body.Reprompt = repromptBody; //SkillResponse resp = ResponseBuilder.TellWithCard(response, title, response); SkillResponse resp = new SkillResponse(); resp.Response = body; resp.Version = "1.0"; resp.SessionAttributes = session.Attributes; return(resp); }
private SkillResponse PaleoActivities(SkillRequest input, IntentRequest intentRequest, SsmlOutputSpeech speech) { SkillResponse finalResponse; // get the slots // create the speech response - cards still need a voice response speech.Ssml = $"<speak>{GetRandomResponse(false)}! Still you need to know more?</speak>"; // create the speech reprompt var repromptMessage = new PlainTextOutputSpeech(); repromptMessage.Text = "Still you need to know more?"; input.Session.Attributes["paleoActivities"] = "true"; // create the reprompt var repromptBody = new Reprompt(); repromptBody.OutputSpeech = repromptMessage; // create the response finalResponse = ResponseBuilder.Ask(speech, repromptBody, input.Session); return(finalResponse); }
public static void Abstract_intent_request__generate_alexa_ask_response() { // Arrange var speech = new SsmlOutputSpeech { Ssml = "foo-bar" }; var repromptMessage = new Reprompt { OutputSpeech = speech }; var expectedResponse = ResponseBuilder.Ask("foo-bar", repromptMessage); expectedResponse.SessionAttributes = new Dictionary <string, object>(); expectedResponse.Response.ShouldEndSession = true; // Act var response = AlexaResponse.GenerateAlexaAskResponse("foo-bar", new Dictionary <string, object>(), true); // Assert var expectedOutputSpeech = (PlainTextOutputSpeech)expectedResponse.Response.OutputSpeech; var responseOutputSpeech = (PlainTextOutputSpeech)response.Response.OutputSpeech; Assert.Equal(expectedOutputSpeech.Text, responseOutputSpeech.Text); Assert.Equal(expectedOutputSpeech.Type, responseOutputSpeech.Type); Assert.Equal(expectedResponse.SessionAttributes, response.SessionAttributes); }
public SkillResponse Handle(IntentRequest intentRequest, ILambdaContext context, Session session) { if (IsDialogIntentRequest(intentRequest)) { if (IsDialogSequenceComplete(intentRequest) == false) { return(ResponseBuilder.DialogDelegate(session)); } } var intent = intentRequest.Intent; var dateSlotValue = intent.Slots["date"].Value; var clubNameSlotValue = intent.Slots["clubName"].Value; var classNameSlotValue = intent.Slots["className"].Value; var date = NodaTime.AmazonDate.AmazonDateParser.Parse(dateSlotValue); var dateFrom = date.From.ToDateTimeUnspecified(); var dateTo = date.To.ToDateTimeUnspecified(); if (dateFrom == dateTo) { dateFrom = new DateTime(dateFrom.Year, dateFrom.Month, dateFrom.Day, 0, 0, 0); dateTo = new DateTime(dateTo.Year, dateTo.Month, dateTo.Day, 23, 59, 59); } var goApiClient = new GoApiClient(); var result = goApiClient.UpcomingClasses(classNameSlotValue, clubNameSlotValue, dateFrom, dateTo).Result; if (result.Errors.Any()) { return(ResponseBuilder.Tell($"{result.Errors.First().Message}")); } var bookingsResponse = string.Join(',', result.Data.OrderBy(x => x.StartDate). Select(x => { var startDate = x.StartDate.ToString("dddd dd MMMM hh:mm tt", CultureInfo.CreateSpecificCulture("en-US")); return($" {x.ClassName} on {startDate}"); })); var speech = new SsmlOutputSpeech { Ssml = $"<speak>{ GetFirstPartResponse(result.Data.Count())}{ bookingsResponse}</speak>" }; var repromptMessage = new PlainTextOutputSpeech { Text = "Would you like to book one ?" }; var repromptBody = new Reprompt(); repromptBody.OutputSpeech = repromptMessage; var finalResponse = ResponseBuilder.Ask(speech, repromptBody); return(finalResponse); //return ResponseBuilder.Ask($"{GetFirstPartResponse(result.Data.Count())}{bookingsResponse}", // new Reprompt("Whould you like to book one? ")); }
private SpeechletResponse BuildSpeechletResponse(string title, string output, bool shouldEndSession) { // Create the Simple card content. SimpleCard card = new SimpleCard(); card.Title = title; TextInfo textInfo = new CultureInfo("en-GB", false).TextInfo; card.Content = textInfo.ToTitleCase(output); // Create the plain text output. PlainTextOutputSpeech speech = new PlainTextOutputSpeech(); speech.Text = output; // Create the speechlet response. SpeechletResponse response = new SpeechletResponse(); response.ShouldEndSession = shouldEndSession; response.OutputSpeech = speech; response.Card = card; Reprompt reprompt = new Reprompt() { OutputSpeech = speech }; response.Reprompt = reprompt; return(response); }
static SkillResponse HandleAskForResourceNameIntent(IntentRequest request, Session session, ILogger log) { SkillResponse response; Reprompt reprompt; if (request.Intent.Name == Intents.YesIntent) { session.Attributes["state"] = States.SetResourceName; reprompt = new Reprompt { OutputSpeech = new PlainTextOutputSpeech { Text = "Quindi come la devo chiamare?" } }; response = ResponseBuilder.Ask("Che nome vuoi dargli?", reprompt, session); } else { var azureResourceType = JsonConvert.DeserializeObject <AzureResourceType>(session.Attributes[Slots.AzureResourceType].ToString()); session.Attributes["state"] = States.CreateResource; reprompt = new Reprompt { OutputSpeech = new PlainTextOutputSpeech { Text = "Quindi confermi?" } }; response = ResponseBuilder.Ask($"Sto per creare la risorsa <break/>{azureResourceType.Name}. Confermi?".ToSpeech(), reprompt, session); } return(response); }
/* HELPER FUNCTIONS */ //This function will help to create message response with response and repromt message public static SkillResponse CreateResponse(string responseMessage, string reprompt) { var speech = new SsmlOutputSpeech(); speech.Ssml = "<speak>" + responseMessage + "</speak>"; var repromptMessage = new SsmlOutputSpeech(); repromptMessage.Ssml = "<speak>" + reprompt + "</speak>"; var repromptBody = new Reprompt(); repromptBody.OutputSpeech = repromptMessage; var responseBody = new ResponseBody(); responseBody.OutputSpeech = speech; responseBody.ShouldEndSession = false; responseBody.Reprompt = repromptBody; var skillResponse = new SkillResponse(); skillResponse.Response = responseBody; skillResponse.Version = "1.0"; return(skillResponse); }
protected override SkillResponse Handle(IntentRequest intentRequest, Session session, Context context) { if (intentRequest.Intent.Slots.TryGetValue("participant", out var Participant) && !string.IsNullOrEmpty(Participant.Value)) { var responseSession = new Session { Attributes = new Dictionary <string, object> { { "participant", Participant.Value }, { "state", IntentState.ParticipantAdd } } }; var anwser = new PlainTextOutputSpeech { Text = $"Soll {Participant.Value} hinzugefügt werden?" }; var repompt = new Reprompt { OutputSpeech = new PlainTextOutputSpeech { Text = $"{Participant.Value} hinzufügen" } }; return(ResponseBuilder.Ask(anwser, repompt, responseSession)); } return(ResponseBuilder.Tell("Es wurde kein Benutzer übergeben")); }
private SkillResponse FirstStep(SkillRequest input, ILambdaContext context, IntentRequest intentRequest, SsmlOutputSpeech speech) { SkillResponse finalResponse; // get the slots // create the speech response - cards still need a voice response speech.Ssml = $"<speak>As a first step, " + $"visit a nearest blood test center to undergo the paleo blood test " + $"and post your reports in the official Facebook page! " + $"Volunteers will respond back with a diet chart based on your reports. Would you like to know the list of paleo foods?</speak>"; // create the speech reprompt var repromptMessage = new PlainTextOutputSpeech(); repromptMessage.Text = "Would you like to know the list of paleo foods?"; input.Session.Attributes["paleofoodlist"] = "true"; //var yesIntentValuePaleofoodlist = Convert.ToBoolean(input.Session.Attributes["paleofoodlist"]); //var yesIntentValueStartPaleoDiet = Convert.ToBoolean(input.Session.Attributes["startpaleodiet"]); //context.Logger.Log("FirstStep " + yesIntentValuePaleofoodlist.ToString()); //context.Logger.Log("FirstStep " + yesIntentValueStartPaleoDiet.ToString()); // create the reprompt var repromptBody = new Reprompt(); repromptBody.OutputSpeech = repromptMessage; // create the response finalResponse = ResponseBuilder.Ask(speech, repromptBody, input.Session); return(finalResponse); }
public async Task <SkillResponse> HandleIntent(IntentRequest input, Session session, SkillRequest request) { try { var user = request.Context.System.User; if (user.Permissions == null) { String reminderText = "Please go to the Alexa mobile app to grant reminders permissions."; Reprompt r = new Reprompt(reminderText); return(ResponseBuilder.TellWithAskForPermissionConsentCard(reminderText, new string[] { "alexa::alerts:reminders:skill:readwrite" }, session)); } var reminder = new Reminder { RequestTime = DateTime.UtcNow, Trigger = new RelativeTrigger(12 * 60 * 60), AlertInformation = new AlertInformation(new[] { new SpokenContent("It's a test", "en-US") }), PushNotification = PushNotification.Enabled }; var client = new RemindersClient(RemindersClient.ReminderDomain, request.Context.System.ApiAccessToken); // var alertList = await client.Get(); var alertDetail = await client.Create(reminder); String speechText = "You successfully schedule a daily reminder at one p. m. to get an apple"; Reprompt rp = new Reprompt(speechText); var response = ResponseBuilder.Ask(speechText, rp, session); return(response); } catch (Exception ex) { Trace.TraceError(ex.StackTrace); return(ResponseBuilder.Ask("Some error occured while creating reminder", null)); } }
public Task <SkillResponse> HandleIntent(IntentRequest input, Session session, SkillRequest request = null) { string msg = $"Archived successfully"; Reprompt rp = new Reprompt(msg); var response = ResponseBuilder.Ask(msg, rp, session); return(Task.FromResult(response)); }
public override SkillResponse HandleSyncRequest(AlexaRequestInformation <SkillRequest> information, Exception exception) { Session session = information.SkillRequest.Session; String speech = "Error";//localizer.Get(currentLocale, "ERROR"); Reprompt rp = new Reprompt(speech); return(ResponseBuilder.Ask(speech, rp, session)); }
public override SkillResponse HandleSyncRequest(AlexaRequestInformation <SkillRequest> information) { Session session = information.SkillRequest.Session; String speech = LocalizationManager.Translate("WELCOME_MESSAGE"); Reprompt rp = new Reprompt(speech); return(ResponseBuilder.Ask(speech, rp, session)); }
public Task <SkillResponse> Launch(Session session) { string msg = $"Welcome. Would you like a daily reminder at one p.m. to pickup an apple from the stand?"; Reprompt rp = new Reprompt(msg); var response = ResponseBuilder.Ask(msg, rp, session); return(Task.FromResult(response)); }
private static ObjectResult HandleIntent(IntentRequest intentRequest, Session session, ILogger log) { log.LogInformation("Handle intent request"); log.LogInformation("Init HTTP Client.."); //Check intentRequest for user session log.LogInformation("Checking session.."); if (session == null) { log.LogInformation("Session was null"); session = new Session(); } else { log.LogInformation("Session not null"); // !!!!!!! replace promotion.Value with session promotion // process session to see if where u asked a reprompt for something } //check for single yes/no response intentRequest.Intent.Slots.TryGetValue("yesNo", out var yesNo); if (yesNo.Value != null) { return(HandleYesNoIntent(intentRequest, session, log, yesNo.Value.ToString())); } //handle intent request switch (intentRequest.Intent.Name) { case "QuickResults": return(HandleQuickResultsIntent(intentRequest, session, log)); case "Amazon.YesIntent": return(HandleYesNoIntent(intentRequest, session, log, "yes")); case "Amazon.NoIntent": return(HandleYesNoIntent(intentRequest, session, log, "no")); case "Amazon.StopIntent": break; case "Amazon.HelpIntent": break; default: //Could not parse any meaningful variables, reprompt var reprompt = new Reprompt(); return(BuildErrorResponse(session, reprompt, true)); } var errorReprompt = new Reprompt(); return(BuildErrorResponse(session, errorReprompt, true)); }
public static async Task <IActionResult> Run( [HttpTrigger(AuthorizationLevel.Function, "get", "post", Route = null)] HttpRequest req, ILogger log) { var request = JsonConvert.DeserializeObject <SkillRequest>(await req.ReadAsStringAsync()); // レスポンス用の変数を宣言 SkillResponse response = null; // 共通のRepromptを用意 var reprompt = new Reprompt("サイコロを振る個数を言ってください。"); switch (request.Request) { case LaunchRequest lr: response = ResponseBuilder.Ask( "サイコロをいくつ振りますか?", reprompt); break; case IntentRequest ir: switch (ir.Intent.Name) { case "ThrowDiceIntent": // 回数指定のインテントならスロットから回数を取得&数値変換 // C# 7.0以降は out var でこういった記述が楽にできる if (ir.Intent.Slots.TryGetValue("diceCount", out var slot) && int.TryParse(slot.Value, out var count)) { response = ResponseBuilder.Tell(Dice.ThrowDice(count)); } else { response = ResponseBuilder.Ask( "個数がわかりませんでした。もう一度言ってください。", reprompt); } break; case BuiltInIntent.Cancel: response = ResponseBuilder.Tell("終了します。"); break; case BuiltInIntent.Help: default: response = ResponseBuilder.Ask( "好きな数のサイコロを振って、合計をしゃべります。いくつ振りますか?", reprompt); break; } break; default: response = ResponseBuilder.Tell( "すみません。わかりませんでした。最初からやり直してください。"); break; } return(new OkObjectResult(response)); }
public void RepromptStringGeneratesPlainTextOutput() { var result = new Reprompt("text"); Assert.IsType <PlainTextOutputSpeech>(result.OutputSpeech); var plainText = (PlainTextOutputSpeech)result.OutputSpeech; Assert.Equal("text", plainText.Text); }
public static SkillResponse Ask(string message, Reprompt reprompt, Session session) { // converts plain message into ssmls var speech = new SsmlOutputSpeech(); speech.Ssml = $"<speak> {message} </speak>"; return(ResponseBuilder.Ask(speech, reprompt, session)); }
public void Create_Reprompt_with_implicit_conversion_string() { Reprompt reprompt = "test value"; var output = reprompt.OutputSpeech as PlainTextOutputSpeech; Assert.NotNull(output); Assert.Equal("test value", ((PlainTextOutputSpeech)reprompt.OutputSpeech).Text); }
public void RepromptSsmlGeneratesPlainTextOutput() { var speech = new Speech(new PlainText("text")); var result = new Reprompt(speech); Assert.IsType <SsmlOutputSpeech>(result.OutputSpeech); var ssmlText = (SsmlOutputSpeech)result.OutputSpeech; Assert.Equal(speech.ToXml(), ssmlText.Ssml); }
private static SkillResponse FirstQuestion() { var output = new PlainTextOutputSpeech() { Text = "TestAppへようこそ。\n何について聞きたいですか?" }; var reprompt = new Reprompt("何について聞きたいですか?"); return(ResponseBuilder.AskWithCard(output, "TestApp", "test", reprompt)); }
public static ObjectResult HandleQuickResultsIntent(IntentRequest intentRequest, Session session, ILogger log) { //gather {slots} intentRequest.Intent.Slots.TryGetValue("Promotion", out var promotion); intentRequest.Intent.Slots.TryGetValue("EventDate", out var eventDate); intentRequest.Intent.Slots.TryGetValue("Day", out var day); if (promotion.Value != null && promotion.Value != "" && promotion.Value != " " && promotion.Value.Length > 2) { var promotionId = promotion.Resolution.Authorities[0].Values[0].Value.Id; if (eventDate.Value != null) { DateTime date = DateTime.Now; // temp!! return(GetPromotionEventByDate(log, date, int.Parse(promotionId), session)); } else if (day.Value != null) { return(GetEventsByDay(day.Value.ToString())); } else { var reprompt = new Reprompt(); var speachStr = "Would you like to hear the most recent " + promotion.Value.ToString() + " results?"; reprompt.OutputSpeech = new PlainTextOutputSpeech { Text = speachStr }; if (session.Attributes == null) { session.Attributes = new Dictionary <string, object>(); } session.Attributes["getMostRecentPromotionEventPrompt"] = true; session.Attributes["promotionId"] = promotionId; return(BuildResponse(speachStr, false, session, reprompt)); } } else if (eventDate != null) { //get promotion results on eventDate DateTime date = DateTime.Now; // temp!!!!; return(GetEventsByDate(log, date, session)); } else { //Could not parse any meaningful variables, reprompt var reprompt = new Reprompt(); return(BuildErrorResponse(session, reprompt, true)); } }
static async Task <SkillResponse> HandleCreateResourceIntent(IntentRequest request, Session session, IAsyncCollector <AzureResourceToDeploy> deployQueue, ILogger log) { SkillResponse response; if (request.Intent.Name == Intents.YesIntent) { var azureResourceType = JsonConvert.DeserializeObject <AzureResourceType>(session.Attributes[Slots.AzureResourceType].ToString()); var arName = session.Attributes.ContainsKey(Slots.AzureResourceName) ? (string)session.Attributes[Slots.AzureResourceName] : null; var reprompt = new Reprompt { OutputSpeech = new PlainTextOutputSpeech { Text = "Vuoi creare un altro servizio?" } }; session.Attributes.Remove(Slots.AzureResourceType); session.Attributes.Remove(Slots.AzureResourceName); session.Attributes["state"] = States.AskForAnotherDeploy; response = ResponseBuilder.Ask(arName is null ? $"<p>OK, creo la risorsa <s>{azureResourceType.Name}</s></p> <p>Ti avviserò con una notifica appena terminato!</p>".ToSpeech() : $"<p>OK, creo la risorsa <s>{azureResourceType.Name}</s> che si chiama <s>{arName}</s></p> <p>Ti avviserò con una notifica appena terminato!</p>".ToSpeech(), reprompt, session); var azureResourceToDeploy = new AzureResourceToDeploy { AzureResource = new AzureResource { Type = azureResourceType, Name = arName }, RequestedByUser = session.User.UserId }; await deployQueue.AddAsync(azureResourceToDeploy); } else { var reprompt = new Reprompt { OutputSpeech = new PlainTextOutputSpeech { Text = "Che tipo di risorsa desideri creare?" } }; session.Attributes.Clear(); response = ResponseBuilder.Ask("Ah ok, forse allora ho capito male. <p>Cosa desidere creare?</p>".ToSpeech(), reprompt, session); } return(response); }
public void DoesResponseBodyExtensionWorkAsExpected() { var reprompt = new Reprompt("I asked a question"); var original = ResponseBuilder.Ask("what do you want to do?", reprompt); var repackage = original.CanFulfill(CreateIntent()); Assert.IsType <CanFulfillResponseBody>(repackage.Response); Assert.Equal(original.Response.OutputSpeech, repackage.Response.OutputSpeech); Assert.Equal(original.Response.Reprompt, repackage.Response.Reprompt); var responseBody = JObject.FromObject(repackage.Response)["canFulfillIntent"]; Assert.True(CompareJson(responseBody, CanFulfillResponseFile)); }
static SkillResponse HandleUnhandled(IntentRequest request) { var reprompt = new Reprompt { OutputSpeech = new PlainTextOutputSpeech { Text = "Che tipo di risorsa desideri creare?" } }; var response = ResponseBuilder.Ask("Non ho capito che tipo di risorsa vuoi creare. Devi specificare un servizio Azure valido. <p>Per favore, dimmelo di nuovo.</p>".ToSpeech(), reprompt); return(response); }
public SkillResponse Process(SkillRequest request) { var speech = new PlainTextOutputSpeech(); speech.Text = "Unfortunately we couldn't get you clearly. \n Can you please be more specific about your issue?"; var repromptMessage = new PlainTextOutputSpeech(); repromptMessage.Text = "Can you please be more specific about your issue?"; var repromptBody = new Reprompt(); repromptBody.OutputSpeech = repromptMessage; return(ResponseBuilder.Ask(speech, repromptBody)); }
static SkillResponse HandleLaunchRequest(LaunchRequest request, Session session, ILogger log) { log.LogInformation("Session started"); var reprompt = new Reprompt { OutputSpeech = "<p>Ad esempio puoi dirmi, <s>Crea una Function App</s></p> <p>Oppure, <s>Deploya un database SQL</s></p>".ToSpeech() }; var response = ResponseBuilder.Ask("Ciao! Sono <prosody rate=\"slow\">Aldo</prosody>. Posso aiutarti a creare servizi su Azure.".ToSpeech(), reprompt); response.Response.ShouldEndSession = false; return(response); }
static SkillResponse HandleCancelIntent(IntentRequest request, Session session, ILogger log) { var reprompt = new Reprompt { OutputSpeech = new PlainTextOutputSpeech { Text = "Desideri ancora creare un servizio Azure?" } }; session.Attributes.Clear(); var response = ResponseBuilder.Ask("OK, ricominciamo da capo.", reprompt, session); return(response); }
public SkillResponse Handle(IntentRequest intent, ILambdaContext context, Session inputSession) { var goApiClient = new GoApiClient(); var result = goApiClient.UpcomingBookings().Result; if (result.Errors.Any()) { return(ResponseBuilder.Tell($"{result.Errors.First().Message}")); } if (result.Data.Any() == false) { var speech = new SsmlOutputSpeech { Ssml = "<speak>I didn't find any bookings.</speak>" }; var repromptMessage = new PlainTextOutputSpeech { Text = "Would you like to book class now ?" }; var repromptBody = new Reprompt(); repromptBody.OutputSpeech = repromptMessage; var finalResponse = ResponseBuilder.Ask(speech, repromptBody); return(finalResponse); } var day = result.Data.Select(x => x.ClassStartDate).First().ToString("dddd d MMMM", CultureInfo.CreateSpecificCulture("en-US")); var bookingsResponse = string.Join(',', result.Data.OrderBy(x => x.ClassStartDate). Select(x => $" {x.ClassName} at {x.ClassStartDate.ToShortTimeString()}")); var speech1 = new SsmlOutputSpeech { Ssml = $"<speak>{GetFirstPartResponse(result.Data.Count(), day)}{bookingsResponse}</speak>" }; var repromptMessage1 = new PlainTextOutputSpeech { Text = "" }; var repromptBody1 = new Reprompt(); repromptBody1.OutputSpeech = repromptMessage1; var finalResponse1 = ResponseBuilder.Ask(speech1, repromptBody1); return(finalResponse1); // return ResponseBuilder.Tell($"{GetFirstPartResponse(result.Data.Count(), day)}{bookingsResponse}"); }