我有這段代碼可以提示用戶輸入他們的位置。我正在使用 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條經驗 獲得超8個贊
當用戶在 Facebook Messenger 中單擊位置快速回復時,傳入的活動沒有文本屬性,這會在調用 LUIS 時導致“值不能為空”錯誤。這是目前 BotFramework 中的一個已知問題,開發團隊目前正在努力解決此問題。同時,在調用 LUIS 識別器之前檢查以確保傳入活動的文本屬性不為空或為空。
if(!string.IsNullOrEmpty(turnContext.Activity.Text)) {
var luisResults = await _services.LuisServices[LuisConfiguration].RecognizeAsync(dc.Context, cancellationToken);
}
希望這可以幫助!
- 1 回答
- 0 關注
- 78 瀏覽
添加回答
舉報
0/150
提交
取消