Я новичок в разработке навыков Alexa, поэтому я использую пример, который я нашел в Интернете, в качестве конечной точки C #, размещенной в Azure. Он работает правильно с консолью Alexa, но когда я пытаюсь протестировать ту же конечную точку с приложением Postman, я получаю ошибку 400.
Когда я использую консоль Alexa, она отображает входные данные JSON, которые она отправляет конечной точке, и выходные данные JSON, которые она получает от конечной точки. Если я скопирую входные данные JSON, вставлю их в Postman и отправлю в ту же конечную точку, я получу ошибку 400. Очевидно, я что-то упустил.
Ниже приведены два моих исходных файла и вход JSON.
RollTheDice.cs
public static class RollTheDice
{
[FunctionName("RollTheDice")]
public static async Task<HttpResponseMessage> Run([HttpTrigger(AuthorizationLevel.Anonymous, "get", "post", Route = null)]HttpRequestMessage req, TraceWriter log)
{
log.Info("C# HTTP trigger function processed a request.");
var speechlet = new RollTheDiceSpeechlet();
return await speechlet.GetResponseAsync(req);
}
}
RollTheDiceSpeechlet.cs
public class RollTheDiceSpeechlet : SpeechletBase, ISpeechletWithContext
{
public SpeechletResponse OnIntent(IntentRequest intentRequest, Session session, Context context)
{
try
{
// Default to 6 sides if not specified
if (!int.TryParse(intentRequest.Intent.Slots["DiceType"].Value, out int numSides))
numSides = 6;
var rollResults = new Random().Next(Math.Max(1, numSides - 1)) + 1; // Account for random returning '0'
return new SpeechletResponse
{
ShouldEndSession = false,
OutputSpeech = new PlainTextOutputSpeech { Text = $"I rolled a {numSides} sided die and got a {rollResults}." }
};
}
catch (Exception ex)
{
return new SpeechletResponse
{
ShouldEndSession = false,
OutputSpeech = new PlainTextOutputSpeech { Text = ex.Message }
};
}
}
public SpeechletResponse OnLaunch(LaunchRequest launchRequest, Session session, Context context)
{
return new SpeechletResponse
{
ShouldEndSession = false,
OutputSpeech = new PlainTextOutputSpeech { Text = "Welcome to the Roll the Dice. Ask me to roll the dice." }
};
}
public void OnSessionEnded(SessionEndedRequest sessionEndedRequest, Session session, Context context)
{
return;
}
public void OnSessionStarted(SessionStartedRequest sessionStartedRequest, Session session, Context context)
{
return;
}
}
JSON Input
Опять же, все работает нормально, но когда я тестирую его с почтальоном, я получаю ошибку 404.
Конечной точкой является C # -серверная функция, которую я разработал в Visual Studio 201.
Когда я запускаю его локально, я копирую / вставляю URL в приложение «Почтальон» и отправляю сообщение. Смотрите прикрепленные скриншоты.