You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.26 10:07:38