/// <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); }
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); } }
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.");