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

如何从外部向Azure Bot Service API发送自适应卡片JSON

实现动态自定义Teams自适应卡片发送

嗨,我明白你的需求了——你现在的Azure Bot Service调用/api/notify时只会发硬编码的自适应卡片到Teams渠道,想要改成每次调用都能根据传入的自定义内容发送不同的卡片对吧?这其实不难,咱们一步步来调整:

1. 修改API端点,接收自定义卡片数据

首先你需要把/api/notify端点改成支持POST请求,并且能从请求体里读取你传入的自适应卡片JSON内容。之前的代码是硬写死卡片数据,现在要把这部分替换成从外部接收的参数。

举个C#(ASP.NET Core)的例子,你可以在Bot的Controller里修改Notify方法:

[HttpPost("api/notify")]
public async Task<IActionResult> Notify([FromBody] AdaptiveCard customCard)
{
    // 这里要确保你已经有获取Teams渠道对话引用的逻辑
    var conversationReference = await GetTeamsConversationReference();
    
    if (conversationReference == null)
    {
        return NotFound("无法找到Teams渠道的对话引用");
    }

    // 使用传入的自定义卡片创建消息活动
    var message = MessageFactory.Attachment(new Attachment
    {
        ContentType = AdaptiveCard.ContentType,
        Content = customCard
    });

    // 通过Bot Framework发送消息到Teams
    await _adapter.ContinueConversationAsync(_appId, conversationReference, async (turnContext, cancellationToken) =>
    {
        await turnContext.SendActivityAsync(message, cancellationToken);
    }, CancellationToken.None);

    return Ok("自定义卡片已发送");
}

注:如果用的是其他语言(比如Node.js),逻辑是一样的——让API接收POST请求体里的卡片JSON,再传入发送消息的逻辑中。

2. 确保对话引用的获取逻辑可用

你需要提前保存好Teams渠道的对话引用(Conversation Reference),这样Bot才能知道要把消息发到哪个Teams渠道里。如果之前没有做这一步,可以在Bot第一次和Teams渠道建立对话时,把对话引用存储到数据库或者配置文件中,后续调用/api/notify时直接取用。

3. 测试自定义卡片发送

现在你可以用Postman或者curl这类工具,发送POST请求到https://www.sampleAzurebotservices.com/api/notify,请求体带上你自定义的自适应卡片JSON,比如:

{
    "$schema": "http://adaptivecards.io/schemas/adaptive-card.json",
    "type": "AdaptiveCard",
    "version": "1.0",
    "body": [
        {
            "type": "TextBlock",
            "text": "这是自定义的卡片标题",
            "size": "Large",
            "weight": "Bolder"
        },
        {
            "type": "TextBlock",
            "text": "这里是自定义的卡片内容,还可以加链接哦~"
        },
        {
            "type": "ActionSet",
            "actions": [
                {
                    "type": "Action.OpenUrl",
                    "title": "点击访问自定义链接",
                    "url": "https://your-custom-link.com"
                }
            ]
        }
    ]
}

发送后,对应的Teams渠道就能收到你自定义的自适应卡片了。

4. 额外的安全性建议

为了避免恶意请求调用你的API,建议给/api/notify端点添加身份验证,比如使用API密钥或者Azure AD OAuth验证,确保只有授权的请求才能发送卡片。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.08 08:17:56