Azure 我们可以动态添加文本字段吗

Azure 我们可以动态添加文本字段吗,azure,botframework,bots,chatbot,adaptive-cards,Azure,Botframework,Bots,Chatbot,Adaptive Cards,我在聊天机器人中创建了一个自适应卡(使用json),它接收用户的输入。我想添加一个按钮,使用户能够在每次单击“插入”字段时添加新的文本字段。(即,用户可以单击“插入”按钮输入教育的详细信息(学校、学院等) 这可以在自适应卡中实现吗 我还想知道,自适应卡是否可以用任何其他语言设计(json除外)是的,这是可能的,您可以在javascript中查看addRow最简单的方法是使用操作。ShowCard: { “类型”:“AdaptiveCard”, “正文”:[ { “类型”:“Input.Text”

我在聊天机器人中创建了一个自适应卡(使用json),它接收用户的输入。我想添加一个按钮,使用户能够在每次单击“插入”字段时添加新的文本字段。(即,用户可以单击“插入”按钮输入教育的详细信息(学校、学院等)

这可以在自适应卡中实现吗


我还想知道,自适应卡是否可以用任何其他语言设计(json除外)

是的,这是可能的,您可以在javascript中查看addRow

最简单的方法是使用
操作。ShowCard

{
“类型”:“AdaptiveCard”,
“正文”:[
{
“类型”:“Input.Text”,
“占位符”:“占位符1”,
“id”:“text1”
}
],
“行动”:[
{
“类型”:“Action.ShowCard”,
“标题”:“添加字段”,
“卡片”:{
“类型”:“AdaptiveCard”,
“正文”:[
{
“类型”:“Input.Text”,
“占位符”:“占位符2”,
“id”:“text2”
}
],
“行动”:[
{
“类型”:“Action.ShowCard”,
“标题”:“添加字段”,
“卡片”:{
“类型”:“AdaptiveCard”,
“正文”:[
{
“类型”:“Input.Text”,
“占位符”:“占位符3”,
“id”:“text3”
}
],
“行动”:[
{
“类型”:“Action.ShowCard”,
“标题”:“添加字段”,
“卡片”:{
“类型”:“AdaptiveCard”,
“正文”:[
{
“类型”:“Input.Text”,
“占位符”:“占位符4”,
“id”:“text4”
}
],
“$schema”:”http://adaptivecards.io/schemas/adaptive-card.json"
}
}
],
“$schema”:”http://adaptivecards.io/schemas/adaptive-card.json"
}
}
],
“$schema”:”http://adaptivecards.io/schemas/adaptive-card.json"
}
}
],
“$schema”:”http://adaptivecards.io/schemas/adaptive-card.json",
“版本”:“1.0”
}

你可能不喜欢它的样子,但还有一种选择。Microsoft团队允许您更新消息,因此您可以使用更多输入字段更新卡片以响应提交操作。首先,您需要一种保存卡状态的方法,以便更新卡的活动。在C#中,可以像下面这样声明状态属性访问器:

public IStatePropertyAccessor InputCardStateAccessor{get;internal set;}
然后您可以这样实例化它:

InputCardStateAccessor=\u conversationState.CreateProperty(“cardState”);
在Node.js中,您不需要声明任何内容,但可以像下面这样实例化它:

this.inputCardState=this.conversationState.createProperty('cardState');
您需要一种一致的方式来生成您的卡,以便在最初发送卡和更新卡时使用。我正在使用C#中的AdaptiveCards NuGet包:

public static IActivity generateadAptiveCardActivity with inputs(int-inputCount,object-valueObject)
{
var cardData=JObject.FromObject(valueObject);
var cardd=Convert.ToString(cardData[KEYCARDID]);
var卡=新的自适应卡(新的自适应模式(1,0))
{
Body=可枚举。范围(0,inputCount)。选择(i=>
{
var inputId=$“text{i}”;
返回新的自适应输出
{
Id=inputId,
Value=Convert.ToString(cardData[inputId]),
};

}).ToList

p.S.自适应卡是用json设计的,而不是javascript。所以我想要类似onclick()的东西JSON中的函数您使用的是哪个频道?我正在使用emulator测试我的机器人。@KyleDelaney是的,我还在研究它。您要求提供特定于频道的功能。我们需要知道您制作机器人的目的是哪个频道,以便知道您想做的事情是否可行。这无助于我们知道您正在使用emulator进行测试,因为Emulator与其他频道的行为方式不同,功能也不相同。您的目标频道是什么?谢谢,我尝试了Action.ShowCard,但我不知道用户希望添加一个新字段的次数,有时可能是用户希望添加100个字段,所以我想知道是否有其他字段避免冗余的方法。如果你能帮我解决NodeJS中的问题,那就太好了。(注:我是自适应卡的初学者)@PriyaG-即使你正在努力实现我的解决方案,你仍然可以投票决定答案,以感谢我所做的工作。如果我向你展示如何在Node.js中实现第二个选项,你也会接受我的答案吗?如果你是Adaptive Cards的初学者,那么你可能想阅读我最新的博客帖子:谢谢你提供了这么多努力,我尊重你为帮助我所付出的努力,我也为你的帖子投了票,但因为我也是StackOverflow的新成员,我没有15+的声誉,所以我的投票无法显示,这是我从StackOverflow团队得到的一条消息:)是的,我会接受你在Node js中的答案,因为我从一个l开始就一直在努力很长时间。@PriyaG-我已经在Node.js中为您编写了代码。请接受这个答案。