我正在使用QnAMakerServices
开发一个聊天机器人,并使用模拟器来训练机器人。
在我的QnaDialog.cs中,我覆盖了QnAMakerDialog
中RespondFromQnAMakerResultAsync
的一个方法。
这是我自定义方法并创建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。
与日志所说的错误是否存在任何关联? 或者我在代码中遗漏了什么?