in AlexaSkill/AlexaSkill/Alexa.cs [24:90]
public static async Task<IActionResult> Run(
[HttpTrigger(AuthorizationLevel.Function, "post", Route = null)] HttpRequest req,
ILogger log)
{
string json = await req.ReadAsStringAsync();
var skillRequest = JsonConvert.DeserializeObject<SkillRequest>(json);
//this is the language used to invoke the skill
string language = skillRequest.Request.Locale;
bool isValid = await ValidateRequest(req, log, skillRequest);
if (!isValid)
{
return new BadRequestResult();
}
var requestType = skillRequest.GetRequestType();
var locale = SetupLanguages(skillRequest);
SkillResponse response = null;
if (requestType == typeof(LaunchRequest))
{
var message = await locale.Get("Welcome", null);
response = ResponseBuilder.Tell(message);
response.Response.ShouldEndSession = false;
}
else if (requestType == typeof(IntentRequest))
{
var intentRequest = skillRequest.Request as IntentRequest;
if (intentRequest.Intent.Name == "LastPosts")
{
string rss = "https://blogs.msdn.microsoft.com/appconsult/feed/";
string output = string.Empty;
List<string> news = await ParseFeed(rss);
var message = await locale.Get("LastPosts", new string[] { news.FirstOrDefault() });
response = ResponseBuilder.Tell(message);
}
else if (intentRequest.Intent.Name == "AMAZON.CancelIntent")
{
var message = await locale.Get("Cancel", null);
response = ResponseBuilder.Tell(message);
}
else if (intentRequest.Intent.Name == "AMAZON.HelpIntent")
{
var message = await locale.Get("Help", null);
response = ResponseBuilder.Tell(message);
response.Response.ShouldEndSession = false;
}
else if (intentRequest.Intent.Name == "AMAZON.StopIntent")
{
var message = await locale.Get("Stop", null);
response = ResponseBuilder.Tell(message);
}
}
else if (requestType == typeof(SessionEndedRequest))
{
log.LogInformation("Session ended");
response = ResponseBuilder.Empty();
response.Response.ShouldEndSession = true;
}
return new OkObjectResult(response);
}