/// <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);
        }
Exemplo n.º 2
0
 public AlexaCommand(AlexaSessionEndedRequest request)
 {
     IntentName         = "";
     ConfirmationStatus = "";
     Slots          = null;
     IsLaunchIntent = request.Request.Type == "LaunchRequest";
     IsSessionEnded = request.Request.Type == "SessionEndedRequest";
 }
 public void TestReason(string enumValue)
 {
     try
     {
         string testJson = GetAlexaSessionEndedReasonJson(enumValue);
         AlexaSessionEndedRequest sessionEndedRequest = JsonConvert.DeserializeObject <AlexaSessionEndedRequest>(testJson);
         int sessionEndedReason = (int)sessionEndedRequest.Reason;
         Assert.True(sessionEndedReason > -1);
         Assert.True(sessionEndedReason < 3);
     }
     catch (JsonSerializationException)
     {
         Assert.Equal("faker", enumValue);
     }
 }
Exemplo n.º 4
0
 public override void HandleSessionEndedRequest(AlexaSessionEndedRequest sessionEndedRequest, AlexaContext context, AlexaSession session)
 {
     // No impl
 }
 /// <summary>
 /// Function to handle Alexa session ended requests.
 /// </summary>
 /// <param name="sessionEndedRequest">The alexa session ended request.</param>
 /// <param name="context">Context of the Alexa execution.</param>
 /// <param name="session">Current Alexa session.</param>
 public virtual void HandleSessionEndedRequest(
     AlexaSessionEndedRequest sessionEndedRequest,
     AlexaContext context,
     AlexaSession session)
 => throw new NotImplementedException("HandleSessionEndedRequest not yet implemented.");