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

如何在Teams频道创建主动对话?解决CreateConversationAsync仅发私信问题

问题根因

当前代码是1:1私信场景的配置,缺少Teams频道会话必需的核心参数,所以只会触发私信发送,无法在频道内创建新对话,核心错误点如下:

  • IsGroup赋值为false,频道属于群组类会话,该值必须设为true
  • 缺失必填的ChannelData字段,Teams接口需要通过该字段识别目标团队、目标频道信息,没有该参数时接口默认走私信投递逻辑
  • Members字段仅在私信场景需要传入接收方用户ID,频道场景下无需填写该字段
修正代码
const string botAppId = "<MicrosoftAppId GUID>";
const string serviceUrl = "<对应区域的服务URL>";
const string tenantId = "<租户ID>";
const string targetTeamId = "<消息要发送到的目标团队ID>";
const string targetChannelId = "<消息要发送到的目标频道ID>";

var title = "test title";
var activity = Activity.CreateMessageActivity();
activity.Type = ActivityTypes.Message;
activity.Text = "test message";

await ((BotAdapter)_adapter).CreateConversationAsync(
    botAppId: botAppId,
    channelId: Microsoft.Bot.Connector.Channels.Msteams,
    serviceUrl: serviceUrl,
    audience: null,
    conversationParameters: new ConversationParameters
    {
        Activity = (Activity)activity,
        Bot = new ChannelAccount(botAppId),
        IsGroup = true,
        TopicName = title,
        TenantId = tenantId,
        ChannelData = new TeamsChannelData
        {
            Channel = new ChannelInfo(targetChannelId),
            Team = new TeamInfo
            {
                Id = targetTeamId
            },
            Tenant = new TenantInfo(tenantId)
        }
    },
    callback: BotCallback,
    cancellationToken: default(CancellationToken));
前置要求与说明
  • 机器人必须提前被添加到目标团队的对应频道中,否则接口会返回403无权限错误
  • serviceUrl必须和获取目标团队、频道信息时拿到的服务端点一致,跨区域端点调用会直接失败
  • 上述代码用于在频道内创建全新对话线程,如果需要在已有频道线程下回复,不要调用CreateConversationAsync,直接持有对应线程的conversationId后调用SendToConversationAsync即可
  • 目标团队ID、频道ID可从机器人被加入频道时的事件回调payload中获取,不要用用户ID填充这两个字段

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.26 15:12:32