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

如何使用C#启动Microsoft Teams频道会议?

用C#实现无人值守的持续Teams频道会议

要实现自动化、持续运行且允许任何人加入的Teams频道会议,核心是通过应用权限调用Microsoft Graph API(而非用户交互方式),并配置会议的持久化与匿名访问参数。以下是具体实现步骤:

1. 配置Azure AD应用权限

首先需要在Azure AD中注册应用,获取调用Graph API的权限:

  • 注册Azure AD应用,添加Graph API的OnlineMeetings.ReadWrite.All应用权限(注意选择「应用权限」而非「委派权限」)。
  • 由租户管理员为该应用授予权限同意,确保应用可在无人值守模式下调用API。

2. 使用Graph SDK创建持续会议

通过Microsoft Graph SDK创建会议时,需设置关键参数以满足需求:

  • 设定超长的EndDateTime(例如1年后)实现持续运行;后续可通过API更新该时间延长会议。
  • 开启AllowAnonymousUsersToJoin允许匿名用户加入。
  • 配置LobbyBypassSettings让所有用户直接进入会议,绕过等候室。
  • 关联目标Teams频道,将会议绑定到指定频道。

C#代码示例

先安装必要的NuGet包:

Install-Package Microsoft.Graph
Install-Package Azure.Identity

创建会议的核心代码:

using Microsoft.Graph;
using Azure.Identity;
using System;

var tenantId = "你的Azure租户ID";
var clientId = "你的应用注册ID";
var clientSecret = "你的应用密钥";

// 初始化Graph客户端(使用客户端凭据流,即应用权限)
var scopes = new[] { "https://graph.microsoft.com/.default" };
var credential = new ClientSecretCredential(tenantId, clientId, clientSecret);
var graphClient = new GraphServiceClient(credential, scopes);

// 构建会议参数
var meetingParams = new OnlineMeeting
{
    StartDateTime = DateTimeOffset.UtcNow,
    EndDateTime = DateTimeOffset.UtcNow.AddYears(1), // 设置1年后结束,可后续更新延长
    Subject = "持续运行的频道会议",
    AllowAnonymousUsersToJoin = true,
    LobbyBypassSettings = new LobbyBypassSettings
    {
        Scope = LobbyBypassScope.Everyone,
        IsDialInBypassEnabled = true
    },
    // 关联到目标Teams频道(替换为你的频道ID,格式:teams/{teamId}/channels/{channelId})
    ChatInfo = new ChatInfo
    {
        ThreadId = "teams/xxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx/channels/yyyyyy-yyyy-yyyy-yyyy-yyyyyyyyyyyy"
    },
    MeetingInfo = new MeetingInfo
    {
        MeetingType = MeetingType.ChannelMeeting
    }
};

try
{
    var createdMeeting = await graphClient.Me.OnlineMeetings.PostAsync(meetingParams);
    Console.WriteLine($"会议创建成功:");
    Console.WriteLine($"加入链接:{createdMeeting.JoinUrl}");
    Console.WriteLine($"会议ID:{createdMeeting.Id}");
}
catch (Exception ex)
{
    Console.WriteLine($"创建失败:{ex.Message}");
}

3. 延长会议持续时间

当会议接近设定的EndDateTime时,可通过API更新结束时间:

var meetingId = "已创建的会议ID";
var updateParams = new OnlineMeeting
{
    EndDateTime = DateTimeOffset.UtcNow.AddYears(1)
};

await graphClient.Me.OnlineMeetings[meetingId].PatchAsync(updateParams);

关键注意事项

  • 频道ID可通过Graph API的GET /teams/{teamId}/channels接口获取。
  • 匿名用户可直接通过会议的JoinUrl加入,无需登录Teams账号。
  • 测试阶段建议先设置短期结束时间(如1小时)验证功能正常,再改为长期设置。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.31 20:40:27