Adaptive Cards 是一种用于呈现有关数据的交互式卡片的开放式规范。在 Adaptive Cards 中,ChoiceSet 是一组预定义选项,用户可以从中选择一个或多个选项。有时,我们需要动态添加 ChoiceSet 中的选项并等待用户响应。
以下是向 Teams 用户发布 Adaptive Card 并等待响应的代码示例,其中包括动态 ChoiceSet:
const { TeamsActivityHandler, MessageFactory } = require('botbuilder');
class MyBot extends TeamsActivityHandler {
async onMessageActivity(turnContext) {
if (turnContext.activity.value) {
// A response to the previous message was received
console.log(turnContext.activity.value);
// Generate a new card with updated options
const updatedCard = {
$schema: 'http://adaptivecards.io/schemas/adaptive-card.json',
type: 'AdaptiveCard',
version: '1.0',
body: [
{
type: 'TextBlock',
text: 'Please select an option:',
wrap: true
},
{
type: 'Input.ChoiceSet',
id: 'myChoice',
style: 'compact',
spacing: 'none',
choices: [
{ title: 'Option 1', value: '1' },
{ title: 'Option 2', value: '2' },
{ title: 'Option 3', value: '3' }
]
}
],
actions: [
{
type: 'Action.Submit',
title: 'Submit',
data: { type: 'myChoice' }
}
]
};
// Send the updated card to the user
await turnContext.sendActivity(MessageFactory.attachment(CardFactory.adaptiveCard(updatedCard)));
} else {
// Send the initial card to the user
const card = {
$schema: 'http://adaptivecards.io/schemas/adaptive-card.json',
type: 'AdaptiveCard',
version: '1.0',
body: [
{
type: 'TextBlock',
text: 'Please select an option:',
wrap: true
},
{
type: 'Input.ChoiceSet',
id: 'myChoice',
style: 'compact',
spacing: 'none',
choices: [
{ title: 'Option 1', value: '1' }
]
}
],
actions: [
{
type: 'Action.Submit',
title: 'Submit',
data: { type: 'myChoice' }
}
]