Adaptive Card JS渲染异常:Hero Card自定义渲染不支持问题
解决自定义JS渲染Hero Card时的“card not supported”异常
嘿,我之前在自定义Bot卡片渲染时也碰到过类似的问题,咱们来拆解一下可能的原因和解决办法:
1. 确认你已注册Hero Card的自定义渲染器
Web Chat和模拟器默认内置了Hero Card的处理逻辑,但自定义渲染SDK不会自动识别所有卡片类型,你需要手动注册application/vnd.microsoft.card.hero类型的渲染器。比如这样写:
// 假设你的渲染器实例是renderer renderer.registerCard('application/vnd.microsoft.card.hero', (cardContent) => { // 创建卡片容器 const heroCard = document.createElement('div'); heroCard.style.padding = '16px'; heroCard.style.border = '1px solid #eee'; heroCard.style.borderRadius = '8px'; // 添加卡片文本 const textEl = document.createElement('p'); textEl.textContent = cardContent.text; heroCard.appendChild(textEl); // 渲染按钮 const buttonsWrap = document.createElement('div'); buttonsWrap.style.marginTop = '12px'; cardContent.buttons.forEach(btn => { const btnEl = document.createElement('button'); btnEl.textContent = btn.title; btnEl.style.marginRight = '8px'; btnEl.addEventListener('click', () => { // 这里处理按钮点击事件,比如发送选中值给Bot console.log('Selected option:', btn.value); }); buttonsWrap.appendChild(btnEl); }); heroCard.appendChild(buttonsWrap); return heroCard; });
2. 检查按钮的type字段是否符合标准
你的按钮type是a1,这并不是Bot Framework定义的标准按钮类型(标准类型包括imBack、postBack、openUrl等)。虽然Web Chat和模拟器做了兼容处理,但自定义渲染时可能因为无法识别这个类型导致异常。建议改成标准类型试试,比如:
{ "type":"imBack", "title":"1.Choice1", "value":"1.Choice1" }
3. 确认渲染SDK的初始化配置包含卡片支持
有些渲染SDK需要在初始化时显式启用卡片相关的功能模块,检查一下你的初始化代码,确保没有遗漏卡片支持的配置项。
按照这几步排查下来,应该就能解决“card not supported”的问题了!
内容的提问来源于stack exchange,提问作者zingh
相关产品推荐
相关产品推荐

