我有这段代码可以提示用户输入他们的位置。我正在使用 Botframework v4 和 C#。我将信使快速回复放在附件提示中。 if (response == "test location") { Activity reply = stepContext.Context.Activity.CreateReply(); reply.ChannelData = JObject.FromObject( new { text = "loc", quick_replies = new object[] { new { content_type = "location", }, }, }); return await stepContext.PromptAsync( ATTACHPROMPT, new PromptOptions { Prompt = reply, }); }但是在用户发送它的位置之后。机器人崩溃。我如何处理位置的返回,这样机器人就不会崩溃?这是例外System.ArgumentNullException:值不能为空。参数名称:Microsoft.Bot.Builder.AI.Luis.LuisRecognizer.d*23.MoveNext() 处的话语---从先前引发异常的位置结束堆栈跟踪---在 System.Runtime.ExceptionServices.ExceptionDispatchInfo。在 Microsoft.Bot.Builder.AI.Luis.LuisRecognizer.d*10.MoveNext( ) --- 在 System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(Task task) 在 System.Runtime.CompilerServices 的 System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw() 处的堆栈跟踪从引发异常的先前位置结束.TaskAwaiter。
1 回答
qq_遁去的一_1
TA贡献1725条经验 获得超7个赞
当用户在 Facebook Messenger 中单击位置快速回复时,传入的活动没有文本属性,这会在调用 LUIS 时导致“值不能为空”错误。这是目前 BotFramework 中的一个已知问题,开发团队目前正在努力解决此问题。同时,在调用 LUIS 识别器之前检查以确保传入活动的文本属性不为空或为空。
if(!string.IsNullOrEmpty(turnContext.Activity.Text)) {
var luisResults = await _services.LuisServices[LuisConfiguration].RecognizeAsync(dc.Context, cancellationToken);
}
希望这可以帮助!
- 1 回答
- 0 关注
- 65 浏览
添加回答
举报
0/150
提交
取消