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