コード例 #1
0
        /**
         * Creates a {@code SpeechletResponse} for the intent and stores the extracted name in the
         * Session.
         * 
         * @param intent
         *            intent for the request
         * @return SpeechletResponse spoken and visual response the given intent
         */
        private SpeechletResponse SetNameInSessionAndSayHello(Intent intent, Session session)
        {
            // Get the slots from the intent.
            var slots = intent.Slots;
            string speechOutput;

            if (!slots.Any())
            {
                speechOutput = "I'm sorry, I didn't hear your name. You can tell me your name by saying, my name is Sam";
                return BuildSpeechletResponse(intent.Name, speechOutput, false);
            }

            // Get the name slot from the list slots.
            var nameSlot = slots.Keys.Contains(NameSlot) ? slots[NameSlot] : null;

            // Check for name and create output to user.
            if (nameSlot != null)
            {
                // Store the user's name in the Session and create response.
                var name = nameSlot.Value;
                session.Attributes[NameKey] = name;
                speechOutput = $"Hello {name}, now I can remember your name, you can ask me your name by saying, whats my name?";
            }
            else
            {
                // Render an error since we don't know what the users name is.
                speechOutput = "I'm not sure what your name is, please try again";
            }

            // Here we are setting shouldEndSession to false to not end the session and
            // prompt the user for input
            return BuildSpeechletResponse(intent.Name, speechOutput, false);
        }
コード例 #2
0
        /**
         * Creates a {@code SpeechletResponse} for the intent and stores the extracted name in the
         * Session.
         * 
         * @param intent
         *            intent for the request
         * @return SpeechletResponse spoken and visual response the given intent
         */
        private SpeechletResponse SetNameInSessionAndSayHello(Intent intent, Session session) {
            // Get the slots from the intent.
            Dictionary<string, Slot> slots = intent.Slots;

            // Get the name slot from the list slots.
            Slot nameSlot = slots[NAME_SLOT];
            string speechOutput = "";

            // Check for name and create output to user.
            if (nameSlot != null) {
                // Store the user's name in the Session and create response.
                string name = nameSlot.Value;
                session.Attributes[NAME_KEY] = name;
                speechOutput = String.Format(
                    "Hello {0}, now I can remember your name, you can ask me your name by saying, whats my name?", name);
            } 
            else {
                // Render an error since we don't know what the users name is.
                speechOutput = "I'm not sure what your name is, please try again";
            }

            // Here we are setting shouldEndSession to false to not end the session and
            // prompt the user for input
            return BuildSpeechletResponse(intent.Name, speechOutput, false);
        }
コード例 #3
0
        public static async Task <SpeechletResponse> GetResults(Session session, decimal amount, string accountTo)
        {
            var api     = new ApiClient();
            var payment = new PaymentRequest
            {
                description = $"Payment of {amount.ToString(CultureInfo.InvariantCulture) + " pounds"} to {accountTo}",
                to          = new To
                {
                    account_id = "LeeCox",
                    bank_id    = "santander.01.uk.sanuk"
                },
                value = new Value
                {
                    amount   = amount.ToString(CultureInfo.InvariantCulture),
                    currency = "GBP"
                }
            };
            var result = await api.PostAsAsync <PaymentResponse>(Constants.ApiEndpoints.MakePayment, payment);

            var balance = await GetBalance.GetBalanceFromOpenBanking();

            var simpleIntentResponse = ParseResults(result, balance.balance.amount);

            await PostToQueue();

            return(AlexaUtils.BuildSpeechletResponse(simpleIntentResponse, true));
        }
コード例 #4
0
        public static async Task <SpeechletResponse> GetResults(Session session)
        {
            var result = await GetSpendingInsight();

            var simpleIntentResponse = ParseResults(result);

            return(AlexaUtils.BuildSpeechletResponse(simpleIntentResponse, true));
        }
コード例 #5
0
        public static async Task <SpeechletResponse> GetResults(Session session)
        {
            var result = await GetBalanceFromOpenBanking();

            var simpleIntentResponse = ParseResults(result);

            return(AlexaUtils.BuildSpeechletResponse(simpleIntentResponse, true));
        }
コード例 #6
0
 private SpeechletResponse InvalidApplicationId(Session session)
 {
     return(AlexaUtils.BuildSpeechletResponse(new AlexaUtils.SimpleIntentResponse()
     {
         cardText = "An invalid Application ID was received from Alexa.  Please update your Visual Studio project " +
                    "to include the correct value and then re-deploy your Azure project."
     }, true));
 }
コード例 #7
0
 private SpeechletResponse GetOnLaunchAsyncResult(Session session)
 {
     return(AlexaUtils.BuildSpeechletResponse(new AlexaUtils.SimpleIntentResponse
     {
         cardText = "",
         ssmlString = "<speak>Voice bot<break time=\"0.2s\" />obviously</speak>"
     }, true));
 }
コード例 #8
0
        public static async Task <SpeechletResponse> GetResults(Session session, string date)
        {
            var api          = new ApiClient();
            var datetimeFrom = DateTime.Parse(date);
            var result       = await api.GetAsync <Transactions>(string.Format(Constants.ApiEndpoints.MyTransactions, datetimeFrom, datetimeFrom.AddDays(1)));

            var simpleIntentResponse = ParseResults(result);

            return(AlexaUtils.BuildSpeechletResponse(simpleIntentResponse, true));
        }
コード例 #9
0
        public override SpeechletResponse OnIntent(IntentRequest request, Session session)
        {
            // Get intent from the request object.
            var intent = request.Intent;
            var intentName = intent?.Name;

            // Note: If the session is started with an intent, no welcome message will be rendered;
            // rather, the intent specific response will be returned.
            if ("MyNameIsIntent".Equals(intentName))
                return SetNameInSessionAndSayHello(intent, session);

            if ("WhatsMyNameIntent".Equals(intentName))
                return GetNameFromSessionAndSayHello(intent, session);
            
            throw new SpeechletException("Invalid Intent");
        }
コード例 #10
0
        public override SpeechletResponse OnIntent(IntentRequest request, Session session) {
            Log.Info("OnIntent requestId={0}, sessionId={1}", request.RequestId, session.SessionId);

            // Get intent from the request object.
            Intent intent = request.Intent;
            string intentName = (intent != null) ? intent.Name : null;

            // Note: If the session is started with an intent, no welcome message will be rendered;
            // rather, the intent specific response will be returned.
            if ("MyNameIsIntent".Equals(intentName)) {
                return SetNameInSessionAndSayHello(intent, session);
            } 
            else if ("WhatsMyNameIntent".Equals(intentName)) {
                return GetNameFromSessionAndSayHello(intent, session);
            } 
            else {
                throw new SpeechletException("Invalid Intent");
            }
        }
コード例 #11
0
        public override async Task <SpeechletResponse> OnIntentAsync(IntentRequest intentRequest, Session session)
        {
            if (AlexaUtils.IsRequestInvalid(session))
            {
                return(await Task.FromResult <SpeechletResponse>(InvalidApplicationId(session)));
            }

            var intent     = intentRequest.Intent;
            var intentName = intent?.Name;

            switch (intentName.ToUpper())
            {
            case "BALANCE":
                return(await GetBalance.GetResults(session));

            case "TRANSACTIONS":
                return(await GetTransactions.GetResults(session, intentRequest.Intent.Slots["date"].Value));

            case "PAYMENT":
                return(await MakePayment.GetResults(session, decimal.Parse(intentRequest.Intent.Slots["amount"].Value), intentRequest.Intent.Slots["account"].Value));

            case "WINNERS":
                return(await Winners.GetResults());

            case "MORTGAGE":
                return(await Mortgage.GetResults(session));

            case "SAVINGS":
                return(await Insights.GetResults(session));

            default:
                return(await Task.FromResult <SpeechletResponse>(GetOnLaunchAsyncResult(session)));
            }
        }
コード例 #12
0
        public override async Task <SpeechletResponse> OnLaunchAsync(LaunchRequest launchRequest, Session session)
        {
            if (AlexaUtils.IsRequestInvalid(session))
            {
                return(await Task.FromResult <SpeechletResponse>(InvalidApplicationId(session)));
            }

            return(await Task.FromResult <SpeechletResponse>(GetOnLaunchAsyncResult(session)));
        }
コード例 #13
0
 public override Task OnSessionEndedAsync(SessionEndedRequest sessionEndedRequest, Session session)
 {
     if (AlexaUtils.IsRequestInvalid(session))
     {
         return(Task.FromResult <SpeechletResponse>(InvalidApplicationId(session)));
     }
     return(Task.Delay(0));
 }
コード例 #14
0
 public override void OnSessionEnded(SessionEndedRequest request, Session session) {
     Log.Info("OnSessionEnded requestId={0}, sessionId={1}", request.RequestId, session.SessionId);
 }
コード例 #15
0
        /**
         * Creates a {@code SpeechletResponse} for the intent and get the user's name from the Session.
         *
         * @param intent
         *            intent for the request
         * @return SpeechletResponse spoken and visual response for the intent
         */
        private SpeechletResponse GetNameFromSessionAndSayHello(Intent intent, Session session)
        {
            string speechOutput = "";
            bool shouldEndSession = false;

            // Get the user's name from the session.
            string name = (String)session.Attributes[NAME_KEY];

            // Check to make sure user's name is set in the session.
            if (!String.IsNullOrEmpty(name))
            {
                speechOutput = String.Format("Your name is {0}, goodbye", name);
                shouldEndSession = true;
            }
            else
            {
                // Since the user's name is not set render an error message.
                speechOutput = "I'm not sure what your name is, you can say, my name is Sam";
            }

            return BuildSpeechletResponse(intent.Name, speechOutput, shouldEndSession);
        }
コード例 #16
0
 public override SpeechletResponse OnLaunch(LaunchRequest request, Session session)
 {
     return GetWelcomeResponse();
 }
コード例 #17
0
        /// <summary>
        /// 
        /// </summary>
        private void DoSessionManagement(IntentRequest request, Session session) {
            if (session.IsNew) {
                session.Attributes[Session.INTENT_SEQUENCE] = request.Intent.Name;
            }
            else {
                // if the session was started as a result of a launch request 
                // a first intent isn't yet set, so set it to the current intent
                if (!session.Attributes.ContainsKey(Session.INTENT_SEQUENCE)) {
                    session.Attributes[Session.INTENT_SEQUENCE] = request.Intent.Name;
                }
                else {
                    session.Attributes[Session.INTENT_SEQUENCE] += Session.SEPARATOR + request.Intent.Name;
                }
            }

            // Auto-session management: copy all slot values from current intent into session
            foreach (var slot in request.Intent.Slots.Values) {
                if (!String.IsNullOrEmpty(slot.Value)) session.Attributes[slot.Name] = slot.Value;
            }
        }
コード例 #18
0
 public abstract void OnSessionStarted(SessionStartedRequest sessionStartedRequest, Session session);
コード例 #19
0
 public abstract SpeechletResponse OnIntent(IntentRequest intentRequest, Session session);
コード例 #20
0
        public override SpeechletResponse OnLaunch(LaunchRequest request, Session session)
        {
            var response = new SpeechletResponse();

            return response;
        }
コード例 #21
0
 public override void OnSessionStarted(SessionStartedRequest request, Session session)
 {
     Console.WriteLine("OnSessionStarted requestId={0}, sessionId={1}", request.RequestId, session.SessionId);
 }
コード例 #22
0
 public override void OnSessionStarted(SessionStartedRequest request, Session session) { }
コード例 #23
0
 public abstract Task<SpeechletResponse> OnLaunchAsync(LaunchRequest launchRequest, Session session);
コード例 #24
0
 public abstract SpeechletResponse OnLaunch(LaunchRequest launchRequest, Session session);
コード例 #25
0
 public override void OnSessionEnded(SessionEndedRequest request, Session session) {  }
コード例 #26
0
 public abstract void OnSessionEnded(SessionEndedRequest sessionEndedRequest, Session session);
コード例 #27
0
        public override SpeechletResponse OnIntent(IntentRequest request, Session session)
        {
            var response = new SpeechletResponse();

            return response;
        }
コード例 #28
0
 public abstract Task<SpeechletResponse> OnIntentAsync(IntentRequest intentRequest, Session session);
コード例 #29
0
        /**
         * Creates a {@code SpeechletResponse} for the intent and get the user's name from the Session.
         * 
         * @param intent
         *            intent for the request
         * @return SpeechletResponse spoken and visual response for the intent
         */
        private SpeechletResponse GetNameFromSessionAndSayHello(Intent intent, Session session) {
            string speechOutput = "";
            bool shouldEndSession = false;

            if (!session.Attributes[Session.INTENT_SEQUENCE].Contains("MyNameIsIntent"))
            {
                speechOutput = "I'm sorry, you seem to be new here. You can tell me your name by saying, my name is Sam";
                return BuildSpeechletResponse(intent.Name, speechOutput, false);
            }

            // Get the user's name from the session.
            var name = session.Attributes.ContainsKey(NAME_KEY) ? session.Attributes[NAME_KEY] : null;

            // Check to make sure user's name is set in the session.
            if (!String.IsNullOrEmpty(name)) {
                speechOutput = String.Format("Your name is {0}, goodbye", name);
                shouldEndSession = true;
            } 
            else {
                // Since the user's name is not set render an error message.
                speechOutput = "I'm not sure what your name is, you can say, my name is Sam";
            }

            return BuildSpeechletResponse(intent.Name, speechOutput, shouldEndSession);
        }
コード例 #30
0
 public abstract Task OnSessionStartedAsync(SessionStartedRequest sessionStartedRequest, Session session);
コード例 #31
0
 public override SpeechletResponse OnLaunch(LaunchRequest request, Session session) {
     Log.Info("OnLaunch requestId={0}, sessionId={1}", request.RequestId, session.SessionId);
     return GetWelcomeResponse();
 }