我一直在尝试向用户显示一些信息,点击我的机器人按钮。
var card = new HeroCard
{
Title = "Welcome to Covid-19 Tracker",
Text = "Type 'help' to see what bot can do?",
Subtitle = "Know more about Covid-19.",
Buttons = new List<CardAction>
{
new CardAction(ActionTypes.PostBack, "How it spreads?", value: "spread"),
new CardAction(ActionTypes.MessageBack, "Symptoms" , value: "Symptom"),
new CardAction(ActionTypes.MessageBack, "Prevention Guidelines" , value: "Prevention")
},
};当我从模拟器单击这些按钮时,我能够将值读取为属性,但当我将其部署到团队时,值将以{}的形式出现。我正在使用下面的代码检索值。
turnContext.Activity.Value.ToString()发布于 2020-04-06 19:36:01
微软团队不支持postBack作为一种不同于messageBack的操作类型,因此它将以同样的方式来解释postBack和messageBack。您可以看到可以在messageBack操作这里中使用的四个属性。
您的操作没有在团队中工作,因为您试图为value属性使用字符串。如果您想继续使用字符串,那么您可以像San深处建议的那样使用text属性,然后您的bot必须从传入活动的text属性中读取文本,而不是从它的value属性中读取文本。如果您想继续使用value属性,那么应该使用一个对象而不是如下所示的字符串:
new CardAction(ActionTypes.MessageBack, "Prevention Guidelines", value: new { choice: "Prevention" })这将使用相同的对象填充传入活动的value属性,这样您就可以像这样访问用户的选择:
var selection = turnContext.Activity.Value is null ? null : (JToken.FromObject(turnContext.Activity.Value) as JObject)?["choice"];发布于 2020-04-04 14:25:06
不同渠道的卡片行为不同,在某些情况下,卡片动作的值被发回bot,而在另一些情况下,卡片动作的文本(注意到webchat和msTeams通道之间的这种差异)。我建议下面的步骤之一,它对我有效
https://stackoverflow.com/questions/61011300
复制相似问题