Reputation: 782
I'm trying to use AdaptiveCards npm package on NodeJS to generate programmatically the card and I don't see how to generate the JSON to pass to the message. So far, my code is fairly simple:
session.send(new builder.Message(session).addAttachment({
contentType: "application/vnd.microsoft.card.adaptive",
content: createCard()
}));
function createCard() {
let card = new adaptiveCards.AdaptiveCard({ type: "AdaptiveCard" });
// add a text block
card.addItem(new adaptiveCards.TextBlock({
text: 'Issue #1',
weight: "bolder",
size: "medium"
}));
return card;
}
I've tried to call to render
method but it wasn't work. I also tried to call JSON.stringify(card)
but I get TypeError: Converting circular structure to JSON
message error.
Any idea? If I pass the JSON to the content attachment, all work fine.
Upvotes: 5
Views: 5173
Reputation: 4655
To send an Adaptive Card using Bot Framework SDK for Node.js, use the JSON format described at Adaptivecards.io, then add the adaptive card object as an attachment to a botbuilder.Message
object, then send the message as usual.
Example:
// adaptive cards example from:
// https://learn.microsoft.com/en-us/bot-framework/nodejs/bot-builder-nodejs-send-rich-cards
bot.dialog('adaptive_card_demo', function(session) {
var adaptiveCardMessage = new builder.Message(session)
.addAttachment({
contentType: "application/vnd.microsoft.card.adaptive",
content: {
type: "AdaptiveCard",
speak: "<s>Your meeting about \"Adaptive Card design session\"<break strength='weak'/> is starting at 12:30pm</s><s>Do you want to snooze <break strength='weak'/> or do you want to send a late notification to the attendees?</s>",
body: [
{
"type": "TextBlock",
"text": "Adaptive Card design session",
"size": "large",
"weight": "bolder"
},
{
"type": "TextBlock",
"text": "Conf Room 112/3377 (10)"
},
{
"type": "TextBlock",
"text": "12:30 PM - 1:30 PM"
},
{
"type": "TextBlock",
"text": "Snooze for"
},
{
"type": "Input.ChoiceSet",
"id": "snooze",
"style":"compact",
"choices": [
{
"title": "5 minutes",
"value": "5",
"isSelected": true
},
{
"title": "15 minutes",
"value": "15"
},
{
"title": "30 minutes",
"value": "30"
}
]
}
],
"actions": [
{
"type": "Action.Http",
"method": "POST",
"url": "http://foo.com",
"title": "Snooze"
},
{
"type": "Action.Http",
"method": "POST",
"url": "http://foo.com",
"title": "I'll be late"
},
{
"type": "Action.Http",
"method": "POST",
"url": "http://foo.com",
"title": "Dismiss"
}
]
}
});
session.send(adaptiveCardMessage);
session.endDialog();
});
Upvotes: 6