示例#1
0
        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);
        }
示例#3
0
        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);
        }
示例#4
0
        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);
        }
示例#7
0
        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);
        }
示例#8
0
        /* 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"));
        }
示例#10
0
        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));
            }
        }
示例#12
0
        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));
        }
示例#13
0
        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));
        }
示例#15
0
        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));
        }
示例#17
0
        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));
        }
示例#18
0
        public void RepromptStringGeneratesPlainTextOutput()
        {
            var result = new Reprompt("text");

            Assert.IsType <PlainTextOutputSpeech>(result.OutputSpeech);
            var plainText = (PlainTextOutputSpeech)result.OutputSpeech;

            Assert.Equal("text", plainText.Text);
        }
示例#19
0
        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));
        }
示例#20
0
        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);
        }
示例#21
0
        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);
        }
示例#22
0
        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));
            }
        }
示例#24
0
        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));
        }
示例#26
0
        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);
        }
示例#27
0
        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));
        }
示例#28
0
        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);
        }
示例#29
0
        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}");
        }