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

求助:Teams频道微软C# Bot自托管部署分步指引

自托管Teams C# Bot分步部署指引(新手向)

一、前置准备

  • 安装.NET SDK 6.0及以上版本(Bot Framework对该版本支持最稳定)
  • 安装Visual Studio(或VS Code搭配C#开发插件)
  • 注册Azure账号(免费版足够完成初期部署测试)
  • 自有服务器需具备公网IP,并开放HTTPS端口(默认443)
  • 可选但推荐:拥有独立域名(生产环境HTTPS证书依赖域名)

二、创建Azure核心资源

1. 新建Azure Bot资源

  • 登录Azure门户,搜索「Azure Bot」并进入创建页面
    • 资源组:选择现有组或新建专属组
    • Bot名称:自定义全局唯一名称
    • 订阅:关联你的Azure订阅
    • 定价层:选择「F0」免费层(测试阶段使用,生产可按需升级)
    • Bot类型:选择「多租户」(支持跨组织Teams使用)
    • 应用注册:选择「新建」,系统会自动生成Azure AD应用(后续需用到该应用的ID和密码)
  • 创建完成后,在「配置」页面记录Microsoft App ID,并点击「管理密码」生成并保存Microsoft App Password(务必妥善保管,泄露会导致Bot被非法调用)

2. 启用Teams通道

  • 进入Azure Bot资源的「通道」页面,点击「Microsoft Teams」
  • 勾选「团队」「个人」等需要启用的交互类型,同意条款后完成启用
  • 启用后保存页面提供的「添加到Teams」链接,后续用于将Bot接入Teams团队

三、创建C# Teams Bot项目

  • 打开Visual Studio,创建新项目,搜索「Bot Framework v4 Echo Bot (C#)」(基础模板),或直接选择「Teams Bot」模板(更贴合Teams场景)
  • 若使用基础Echo Bot模板,需添加Teams适配代码:
    在Startup.cs中引入Teams中间件:
    using Microsoft.Bot.Builder.Teams;
    
    public void ConfigureServices(IServiceCollection services)
    {
        // 注册Teams中间件
        services.AddSingleton<TeamsMiddleware>();
        
        services.AddBot<EchoBot>(options =>
        {
            options.Middleware.Add(services.GetService<TeamsMiddleware>());
            options.CredentialProvider = new SimpleCredentialProvider(Configuration["MicrosoftAppId"], Configuration["MicrosoftAppPassword"]);
        });
    }
    
  • 确保Bot代码能处理Teams专属活动(如频道消息、团队成员变更通知等)

四、本地调试(依赖ngrok)

  • 启动Bot项目,默认监听地址为http://localhost:3978/api/messages
  • 下载并运行ngrok,执行命令:ngrok http 3978,获取生成的HTTPS域名(如https://xxxx-xx-xx-xx-xx.ngrok.io)
  • 返回Azure Bot的「配置」页面,将「消息终结点」修改为https://xxxx-xx-xx-xx-xx.ngrok.io/api/messages并保存
  • 测试:通过之前保存的「添加到Teams」链接将Bot加入Teams,发送消息验证Bot是否能正常回复

五、生产环境部署到自有服务器

1. 打包Bot项目

  • 在Visual Studio中右键项目→「发布」,选择「文件夹」作为目标,生成部署包
  • 或使用命令行打包:dotnet publish -c Release -o ./publish

2. 服务器配置

  • 将打包后的文件上传至服务器指定目录(如Linux的/opt/teamsbot或Windows的C:\teamsbot)
  • 配置HTTPS:
    • 若有域名,申请SSL证书(如Let's Encrypt免费证书)
    • 配置反向代理(以Nginx为例):
      server {
          listen 443 ssl;
          server_name your-domain.com;
      
          ssl_certificate /path/to/your-cert.pem;
          ssl_certificate_key /path/to/your-privkey.pem;
      
          location /api/messages {
              proxy_pass http://localhost:3978/api/messages;
              proxy_set_header Host $host;
              proxy_set_header X-Real-IP $remote_addr;
              proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
              proxy_set_header X-Forwarded-Proto $scheme;
          }
      }
      
  • 设置Bot为后台服务:
    • Linux:创建systemd服务文件实现开机自启
      [Unit]
      Description=Teams Bot Service
      After=network.target
      
      [Service]
      WorkingDirectory=/opt/teamsbot
      ExecStart=/usr/bin/dotnet /opt/teamsbot/YourBot.dll
      Restart=always
      User=www-data
      
      [Install]
      WantedBy=multi-user.target
      
    • Windows:使用sc create命令或服务管理工具创建Windows服务

3. 更新Azure Bot终结点

  • 返回Azure Bot「配置」页面,将「消息终结点」修改为服务器HTTPS地址:https://your-domain.com/api/messages,保存配置

六、权限配置(核心环节)

1. Azure AD应用权限

  • 进入Azure AD的「应用注册」,找到Bot对应的应用
  • 转到「API权限」页面,添加以下应用权限(按需选择):
    • ChannelMessage.Send:允许Bot发送频道消息
    • Team.ReadBasic.All:允许Bot读取团队基础信息
    • User.Read.All:允许Bot读取用户基本信息
  • 点击「授予管理员同意」(需Azure AD管理员权限),确保权限生效

2. Teams团队权限

  • 将Bot添加到Teams团队时,需要团队管理员同意Bot的权限请求
  • 若需全局部署,需Azure AD管理员在Teams管理中心配置Bot的权限政策

七、生产环境验证

  • 在Teams团队中发送消息,确认Bot能正常接收并回复
  • 查看服务器上的Bot日志,排查网络连接、权限不足等潜在问题

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.20 20:00:01