【问题标题】:Handling Message Attachment on Microsoft Bot Framework在 Microsoft Bot Framework 上处理消息附件
【发布时间】:2017-10-25 17:20:48
【问题描述】:

我正在尝试处理带有附件的邮件,我得到了一个 远程服务器返回错误:(400) 错误请求。错误。我该如何正确处理?

消息控制器

        if (activity.Type == ActivityTypes.Message)
        {
            try
            {
                ConnectorClient connector = new ConnectorClient(new Uri(activity.ServiceUrl));
                // Check in QnA Dialog
                await Conversation.SendAsync(activity, () => new QnADialog());
            }
            catch (Exception ex)
            {

                throw;
            }

        }
        else
        {
            HandleSystemMessage(activity);
        }
        var response = Request.CreateResponse(HttpStatusCode.OK);
        return response;

【问题讨论】:

  • 你的第一句话和代码摘录之间的联系是什么?您能否添加有关您的实施的更多详细信息,您遇到问题的地方。在这里我看不到任何附件特异性
  • 我正在尝试发送带有附件(.txt、.jpg 等)的消息。我希望我的代码能够优雅地处理带有附件的消息。
  • 然后呢?你试过什么吗?发送附件很容易,但这里的代码示例似乎链接到 QnaMaker,为什么?而且您没有显示创建消息的代码部分(您将在其中添加附件)
  • 我正在尝试一个连接到 qnamaker 的简单聊天机器人项目,我的问题是当我尝试在机器人模拟器上发送文件时意外发现错误。错误显示(400)错误请求。关于流行语
  • 好的,现在我明白了。所以你的问题是你有一个 QnA 机器人,它没有正确管理接收带有附件的消息的事实。我会回答处理这个问题,给我 5 分钟

标签: c# bots botframework attachment


【解决方案1】:

您可以直接检查activity对象上的附件计数,例如:

if (activity.Type == ActivityTypes.Message)
{
    try
    {
        if (activity.Attachments.Count > 0)
        {
            var replyNoAttachmentAllowed = activity.CreateReply("This QnA bot cannot handle attachments, please send only text");
            await context.PostAsync(replyNoAttachmentAllowed);
        }
        else
        {
            // Check in QnA Dialog
            await Conversation.SendAsync(activity, () => new QnADialog());
        }
    }
    catch (Exception ex)
    {

        throw;
    }

}

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2016-07-29
    • 2017-04-22
    • 2016-09-05
    • 2016-08-30
    • 2017-04-10
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多