为了账号安全,请及时绑定邮箱和手机立即绑定

如何从 Messenger Location 快速回复中接收位置

如何从 Messenger Location 快速回复中接收位置

C#
蓝山帝景 2022-11-13 14:54:34
我有这段代码可以提示用户输入他们的位置。我正在使用 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);

希望这可以帮助!


查看完整回答
反对 回复 2022-11-13
  • 1 回答
  • 0 关注
  • 65 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信