/// <summary>
        /// Handler Lambda function for the alexa skill.
        /// </summary>
        /// <param name="alexaRequest">The alexa skill request.</param>
        /// <param name="lambdaContext">The context of the executing lambda.</param>
        /// <returns>The alexa response.</returns>
        public AlexaResponse HandleAlexaSkillRequest(AlexaRequest alexaRequest, ILambdaContext lambdaContext)
        {
            AlexaResponse response;

            switch (alexaRequest.RequestData.RequestType)
            {
            // Handle Launch request.
            case AlexaRequestType.LaunchRequest:
                AlexaLaunchRequest launchRequest = alexaRequest.RequestData as AlexaLaunchRequest;
                if (Logger.IsEnabled(LogLevel.Debug))
                {
                    Logger.LogDebug($"Recieved Alexa Launch Request: ID = {launchRequest.RequestId}");
                }
                response = HandleLaunchRequest(launchRequest, alexaRequest.Context, alexaRequest.Session);
                break;

            // Can not send response to session ended request.
            case AlexaRequestType.SessionEndedRequest:
                AlexaSessionEndedRequest sessionEndedRequest = alexaRequest.RequestData as AlexaSessionEndedRequest;
                if (Logger.IsEnabled(LogLevel.Debug))
                {
                    Logger.LogDebug($"Received Alexa Session Ended Request: ID = {sessionEndedRequest.RequestId}, Reason={sessionEndedRequest.Reason.ToString()}");
                }
                HandleSessionEndedRequest(sessionEndedRequest, alexaRequest.Context, alexaRequest.Session);
                return(null);

            case AlexaRequestType.IntentRequest:
                AlexaIntentRequest intentRequest = alexaRequest.RequestData as AlexaIntentRequest;
                if (Logger.IsEnabled(LogLevel.Debug))
                {
                    string debug = $"Received Alexa Intent Request: ID = {intentRequest.RequestId}, ";
                    debug += $"IntentName = {intentRequest.Intent?.Name}, ";
                    if (intentRequest.Intent?.Slots != null)
                    {
                        debug += $"Slots = {string.Join(",", intentRequest.Intent?.Slots?.Keys)}, ";
                        debug += $"Slot Values = {string.Join(",", intentRequest.Intent?.Slots?.Values)}";
                    }
                    Logger.LogDebug(debug);
                }
                response = HandleIntentRequest(intentRequest, alexaRequest.Context, alexaRequest.Session);
                break;

            case AlexaRequestType.CanFulfillIntentRequest:
                AlexaCanFulfillIntentRequest canFulfillIntentRequest = alexaRequest.RequestData as AlexaCanFulfillIntentRequest;
                if (Logger.IsEnabled(LogLevel.Debug))
                {
                    string debug = $"Received Can Fulfill Intent Request: ID = {canFulfillIntentRequest.RequestId}, ";
                    Logger.LogDebug(debug);
                }
                response = HandleCanFulfillIntentRequest(canFulfillIntentRequest, alexaRequest.Context, alexaRequest.Session);
                break;

            default:
                Logger.LogError($"Received not implemented Alexa request type: {alexaRequest.RequestData.RequestType}");
                throw new NotImplementedException($"{alexaRequest.RequestData.RequestType} is not yet implemented.");
            }


            return(response);
        }
Пример #2
0
 public AlexaCommand(AlexaIntentRequest request)
 {
     IntentName         = request.Request.Intent?.Name ?? "";
     ConfirmationStatus = request.Request.Intent?.ConfirmationStatus ?? "";
     Slots          = request.Request.Intent?.Slots?.ToDictionary(x => x.Key, x => x.Value.Value);
     IsLaunchIntent = request.Request.Type == "LaunchRequest";
     IsSessionEnded = request.Request.Type == "SessionEndedRequest";
 }
 public void TestIntentRequestDialogStateProperty(string enumValue)
 {
     try
     {
         string             testJson      = GetIntentRequestDialogStateJson(enumValue);
         AlexaIntentRequest intentRequest = JsonConvert.DeserializeObject <AlexaIntentRequest>(testJson);
         int dialogState = (int)intentRequest.DialogState;
         Assert.True(dialogState > -1);
         Assert.True(dialogState < 3);
     }
     catch (JsonSerializationException)
     {
         Assert.Equal("faker", enumValue);
     }
 }
Пример #4
0
        public override AlexaResponse HandleIntentRequest(AlexaIntentRequest intentRequest, AlexaContext context, AlexaSession session)
        {
            AlexaResponse         alexaResponse = new AlexaResponse();
            PlainTextOutputSpeech plainText     = new PlainTextOutputSpeech
            {
                Text = "AlexaIntentRequest"
            };
            AlexaResponseData responseData = new AlexaResponseData
            {
                OutputSpeech = plainText
            };

            alexaResponse.Response = responseData;
            return(alexaResponse);
        }
 /// <summary>
 /// Function to handle Alexa intent requests.
 /// </summary>
 /// <param name="intentRequest">The alexa intent request.</param>
 /// <param name="context">Context of the Alexa execution.</param>
 /// <param name="session">Current Alexa session.</param>
 /// <returns>The Alexa response.</returns>
 public virtual AlexaResponse HandleIntentRequest(
     AlexaIntentRequest intentRequest,
     AlexaContext context,
     AlexaSession session)
 => throw new NotImplementedException("HandleIntentRequest not yet implemented.");