Botframework QnA Maker机器人自适应卡:如何在C中添加数据对象#
我使用“无代码”的方式在Azure中生成一个机器人,并将其连接到QnA Maker知识库 然后我修改了代码,以便Bot使用AdaptiveCards而不是HeroCards来支持MS Teams频道中的降价格式(QnA Maker使用的格式) 当知识库发出一些提示时,我正在尝试向这些自适应卡添加SubmitActions。目标是,如果用户单击这些提交,它会自动将消息发送回Bot 请在下面找到我实现的代码:Botframework QnA Maker机器人自适应卡:如何在C中添加数据对象#,botframework,microsoft-teams,adaptive-cards,qnamaker,Botframework,Microsoft Teams,Adaptive Cards,Qnamaker,我使用“无代码”的方式在Azure中生成一个机器人,并将其连接到QnA Maker知识库 然后我修改了代码,以便Bot使用AdaptiveCards而不是HeroCards来支持MS Teams频道中的降价格式(QnA Maker使用的格式) 当知识库发出一些提示时,我正在尝试向这些自适应卡添加SubmitActions。目标是,如果用户单击这些提交,它会自动将消息发送回Bot 请在下面找到我实现的代码: // adaptive card creation var plCardBis = new
// adaptive card creation
var plCardBis = new AdaptiveCard(new AdaptiveSchemaVersion(1, 0));
plCardBis.Body.Add(new AdaptiveTextBlock()
{
Text = result.Answer,
Wrap = true
});
// Add all prompt
foreach (var prompt in result.Context.Prompts)
{
plCardBis.Actions.Add(new AdaptiveCards.AdaptiveSubmitAction()
{
Title = prompt.DisplayText,
Data = prompt.DisplayText
});
}
//create the the attachment
var attachmentBis = new Attachment()
{
ContentType = AdaptiveCard.ContentType,
Content = plCardBis
};
//add the attachment
chatActivity.Attachments.Add(attachmentBis);
return chatActivity;
这在WebChat中运行良好,但是在团队中,如果单击提示,则会生成错误。查看internet,我发现我应该为团队的数据字段使用对象,而不是简单的字符串:
"data": {
"msteams": {
"type": "imBack",
"value": "Text to reply in chat"
},
}
你知道我怎么能在C#中做到吗?如何更新代码以将此对象添加到数据字段?根据用户提出的问题,操作的数量可能会有所不同
任何帮助都将不胜感激基本上,有两个选项可以附加到“数据”中—普通字符串值或任何自定义对象。对于您的场景,您需要一个自定义对象,因此您需要在项目中定义一个类来匹配您的需要,例如:
public class MsTeamsDataResponseWrapper
{
[JsonProperty("msteams")]
public MsTeamsResponse MsTeamsResponse { get; set; }
}
public class MsTeamsResponse
{
[JsonProperty("type")]
public string Type { get; set; } = "imBack";
[JsonProperty("value")]
public string Value { get; set; }
}
然后你会这样使用它:
...
Data = new MsTeamsDataResponseWrapper() { MsTeamsResponse = new MsTeamsResponse() { Value = prompt.DisplayText } }
...
在本例中,“Type”已默认为“imBack”,但如果您想覆盖默认值,也可以在稍后阶段将其用于“messageBack”。在它自己的问题中,情况要好得多-现在我可以更好地看到这个问题:-)