Input.ChoiceSet
是 Bot Framework 中的一个组件,用于在对话中显示一组选项供用户选择。Action.ShowCard
则用于在消息中嵌入一张卡片,卡片中可以包含各种控件,包括 Input.ChoiceSet
。如果你遇到 Input.ChoiceSet
在 Action.ShowCard
中无法正常工作的问题,可能是由于以下几个原因:
Action.ShowCard
中嵌套 Input.ChoiceSet
可能存在一些限制或bug。Input.ChoiceSet
无法正确渲染。确保你使用的是最新版本的 Bot Framework。旧版本可能存在一些已知的问题,更新到最新版本可能会解决这些问题。
npm install microsoft-botbuilder@latest
考虑使用 Adaptive Cards 来替代 Action.ShowCard
和 Input.ChoiceSet
的组合。Adaptive Cards 是一种更灵活的卡片格式,支持更多的控件和更好的嵌套能力。
{
"type": "AdaptiveCard",
"version": "1.2",
"body": [
{
"type": "Input.ChoiceSet",
"id": "choiceSet",
"choices": [
{
"title": "Option 1",
"value": "option1"
},
{
"title": "Option 2",
"value": "option2"
}
],
"style": "expanded"
}
],
"actions": [
{
"type": "Action.Submit",
"title": "Submit",
"data": {
"choice": "option1"
}
}
]
}
在代码中添加调试信息和日志,查看是否有错误信息输出。这有助于定位问题的具体原因。
const { ActivityHandler, CardFactory } = require('botbuilder');
class MyBot extends ActivityHandler {
constructor() {
super();
this.onMessage(async (context, next) => {
try {
const card = CardFactory.adaptiveCard(adaptiveCardJson);
await context.sendActivity({ attachments: [card] });
} catch (error) {
console.error('Error sending card:', error);
}
await next();
});
}
}
module.exports.MyBot = MyBot;
查看 Bot Framework 的官方文档和社区支持,了解是否有类似的问题和解决方案。
Input.ChoiceSet
和 Action.ShowCard
通常用于以下场景:
以下是一个使用 Adaptive Cards 的示例代码:
const { ActivityHandler, CardFactory } = require('botbuilder');
class MyBot extends ActivityHandler {
constructor() {
super();
this.onMessage(async (context, next) => {
const adaptiveCardJson = {
"type": "AdaptiveCard",
"version": "1.2",
"body": [
{
"type": "Input.ChoiceSet",
"id": "choiceSet",
"choices": [
{
"title": "Option 1",
"value": "option1"
},
{
"title": "Option 2",
"value": "option2"
}
],
"style": "expanded"
}
],
"actions": [
{
"type": "Action.Submit",
"title": "Submit",
"data": {
"choice": "option1"
}
}
]
};
const card = CardFactory.adaptiveCard(adaptiveCardJson);
await context.sendActivity({ attachments: [card] });
await next();
});
}
}
module.exports.MyBot = MyBot;
通过以上方法,你应该能够解决 Input.ChoiceSet
在 Action.ShowCard
中无法正常工作的问题。如果问题仍然存在,建议查看 Bot Framework 的官方文档和社区支持,获取更多帮助。
领取专属 10元无门槛券
手把手带您无忧上云