Microsoft Bot Emulator在发送期望Herocard作为响应的消息时抛出“发送请求时发生错误”

时间:2018-01-31 07:32:42

标签: bots botframework

我正在使用QnAMakerServices开发一个聊天机器人,并使用模拟器来训练机器人。 在我的QnaDialog.cs中,我覆盖了QnAMakerDialogRespondFromQnAMakerResultAsync的一个方法。

这是我自定义方法并创建Herocard作为响应。我的代码是这样的:

namespace IMPBot.Dialogs
{
    [Serializable]
    public class QnaDialog : QnAMakerDialog
    {
        public QnaDialog() : base(new QnAMakerService(new QnAMakerAttribute(ConfigurationManager.AppSettings["QnaSubscriptionKey"], ConfigurationManager.AppSettings["QnaKnowledgebaseId"], "Sorry, I couldn't find an answer for that. Please rephrase your question and make sure to ask questions only related to Insights Marketplace.", 0.5)))
        {

        }

        protected override async Task RespondFromQnAMakerResultAsync(IDialogContext context, IMessageActivity message, QnAMakerResults result)
        {
            // answer is a string
            var answer = result.Answers.First().Answer;
            if (answer.Contains(';'))
            {
                Activity reply = ((Activity)context.Activity).CreateReply();
                string[] qnaAnswerData = answer.Split(';');
                string title = qnaAnswerData[0];
                string description = qnaAnswerData[1];
                string url = qnaAnswerData[2];
                string imageURL = qnaAnswerData[3];
                HeroCard card = new HeroCard
                {
                    Title = title,
                    Subtitle = description,
                };
                card.Buttons = new List<CardAction>
                {
                    new CardAction(ActionTypes.OpenUrl, "See more", value: url)
                };

                card.Images = new List<CardImage>
                {
                    new CardImage( url = imageURL)
                };
                reply.Attachments.Add(card.ToAttachment());
                //await context.PostAsync(reply);
            }
            else
            {
                await context.PostAsync(answer);
                context.Wait(MessageReceivedAsync);
            }
        }
    }
}

但是,当我运行Bot Emulator时会抛出以下错误:

  

异常:发送请求时发生错误。 ['text / plain'类型的文件]

它没有显示任何卡片。 另一方面,日志说,

  

警告:最新的bot SDK版本是3.13.0但是机器人正在运行   SDK版本3.12.2。考虑将僵尸程序升级到最新的SDK。

与日志所说的错误是否存在任何关联? 或者我在代码中遗漏了什么?

0 个答案:

没有答案