Я пишу навык Alexa, используя C # / Lambda / Alexa.NET
У меня есть собственный список слотов для систем, с которыми пользователь может ответить.Есть 3 допустимых значения слотов.В настоящее время лямбда-код использует директиву делегата для передачи управления беседой Алексе, чтобы обработать получение системного слота, а также пары других слотов.Это в настоящее время обслуживается здесь:
// check the name to determine what you should do
if (intentRequest.Intent.Name.Equals("problemIntent"))
{
context.Logger.LogLine($"The specific intent I have created has been received");
}
context.Logger.LogLine($"Dialog state = {intentRequest.DialogState}");
if (intentRequest.DialogState != "COMPLETED")
{
response = ResponseBuilder.DialogDelegate(input.Session);
}
Однако пользователь может ответить системой, которая не является допустимой частью списка, и Alexa примет это, подтвердит и продолжит.
Как проверить значение входящего слота, чтобы определить, что оно неверно (не является действительным значением слота), и запросить у пользователя правильное значение?У меня есть список строк в моей функции Lambda для проверки, но как мне получить значение предоставленного слота в коде?Например, псевдокод будет:
, если состояние диалога не завершено, проверьте значение слота, предоставленное списку.если допустимо, делегируйте обратно в ALexa, чтобы продолжить.если не верно, ответьте со скоростью, говоря: «Я не знаю, что есть.Можете ли вы попробовать другое значение?Например, x, yz '