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

Bot Framework对接多渠道:用无标题文本Hero Card替代builder.prompts.choice可行吗?

实现仅含按钮的Hero Card(无文本/标题)完全可行

当然可以实现仅包含按钮、没有文本和标题的Hero Card,而且这种方式正好能解决你用builder.Prompts.choice时遇到的对话逻辑冲突问题——毕竟你的对话流是由Watson单独处理的,不需要Bot Framework的内置prompt来接管输入控制权。

具体实现代码示例

你可以直接创建HeroCard实例,只配置按钮,然后发送给用户:

// 创建仅包含按钮的Hero Card
const heroCard = new builder.HeroCard(session)
    .buttons([
        builder.CardAction.imBack(session, "ratios", "Ratios"),
        builder.CardAction.imBack(session, "chart", "Chart"),
        builder.CardAction.imBack(session, "more", "More"),
        builder.CardAction.imBack(session, "add", "Add")
    ]);

// 将卡片包装为消息附件发送
const cardMessage = new builder.Message(session)
    .addAttachment(heroCard);

session.send(cardMessage);

为什么这比builder.Prompts.choice更适合你的场景

builder.Prompts.choice的核心问题是它会让Bot Framework进入等待用户输入的会话状态,接管对话的控制权,这就和你用Watson单独处理对话逻辑的架构冲突了。而直接发送Hero Card的方式:

  • 不会改变Bot Framework的会话状态,只是单纯推送一条带按钮的消息
  • 用户点击按钮后,对应的消息(比如"ratios"或"chart")会像普通用户输入一样发送给Watson,由Watson来处理后续的对话逻辑,完全符合你的架构设计

注意事项

  • 主流渠道(Microsoft Teams、Facebook Messenger、Web Chat等)都支持无文本/标题仅按钮的Hero Card,但少数小众渠道可能会显示空白占位,建议在目标渠道做简单测试
  • 按钮类型选择:imBack会把按钮文本(或你指定的value)作为用户可见消息发送,适合Watson识别意图;如果需要传递隐藏的payload,可以用postBack,但要确保Watson能正确解析postBack的消息内容

内容的提问来源于stack exchange,提问作者Jacob

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.20 11:07:51