Как я могу исправить этот LUIS, выдающий ошибку при получении местоположения от пользователя. Прямо сейчас я помещаю быстрый ответ посыльного в подсказку приложения.
Является ли результат из местоположения пользователя вложением? Что это? Потому что в противном случае моя подсказка вложения сделает цикл повторной подсказки.
Расположение мессенджера, быстрый ответ:
Результат:
Это исключение:
System.ArgumentNullException: значение не может быть нулевым. Имя параметра: utterance в Microsoft.Bot.Builder.AI.Luis.LuisRecognizer.d * 23.MoveNext () --- Конец трассировки стека из предыдущего расположения, где было сгенерировано исключение --- в System.Runtime.ExceptionServices.ExceptionDispatchInfo. Бросок () в System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess (задача-задача) в System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification (задача-задача) в Microsoft.Bot.Builder.AI.LiseceU ) --- Конец трассировки стека из предыдущего местоположения, где было сгенерировано исключение --- в System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw () в System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess (Задача) в System.Runtime.CompilerServices .TaskAwaiter.HandleNonSuccessAndDebuggerNotification (Задача) в Microsoft.BotBuilderSamples.BasicBot.d * 24.MoveNext () в C: \ Users \ bguevarra \ Desktop \ finko \ FinkoBot \ Bots \ BasicBot.cs: строка 104 --- Конец стека трассировка из предыдущего места, где было сгенерировано исключение --- в Sys tem.Runtime.ExceptionServices.ExceptionDispatchInfo. 3.MoveNext () --- Конец трассировки стека из предыдущего местоположения, где было сгенерировано исключение --- в System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw () в System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess (задача-задача) в системе .Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification (Задача) в Microsoft.Bot.Builder.BotAdapter.d__13.MoveNext ()
Мой код:
private static async Task<DialogTurnResult> SecondStepAsync(WaterfallStepContext stepContext, CancellationToken cancellationToken = default(CancellationToken))
{
Activity reply = stepContext.Context.Activity.CreateReply();
reply.ChannelData = JObject.FromObject(
new
{
text = "loc",
quick_replies = new object[]
{
new
{
content_type = "text",
title = "Title",
payload = "PEYLOD",
},
new
{
content_type = "location",
},
},
});
return await stepContext.PromptAsync(
ATTACHPROMPT,
new PromptOptions
{
Prompt = reply,
// RetryPrompt = MessageFactory.Text("re prompting."),
});
}
private static async Task<DialogTurnResult> ThirdStepAsync(WaterfallStepContext stepContext, CancellationToken cancellationToken = default(CancellationToken))
{
await stepContext.Context.SendActivityAsync(MessageFactory.Text($"TEST")); // Not even reaching this next step
var activity = stepContext.Context.Activity;
var location = activity.Entities?.FirstOrDefault(e => e.Type == "Place");
if (location != null)
{
var latitude = location.Properties["geo"]?["latitude"]?.ToString();
var longitude = location.Properties["geo"]?["longitude"]?.ToString();
await stepContext.Context.SendActivityAsync(MessageFactory.Text($"{latitude} + {longitude} "));
}
return await stepContext.EndDialogAsync();
}