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

如何使用C#和Incoming Webhook向Microsoft Teams单个用户发消息

如何用C#向Microsoft Teams单个用户发送消息

你当前的代码是通过频道Incoming Webhook发送消息,这类Webhook仅支持向团队频道推送内容,无法直接发送到单个用户的一对一聊天窗口。要实现给单个用户发消息,推荐使用Microsoft Graph API,以下是具体实现步骤和代码:

前提准备

  • 在Azure AD中注册应用程序,添加ChatMessage.Send应用权限(若要以应用身份发送,无需用户登录)或委派权限(需用户登录),并完成权限授予。
  • 获取应用的访问令牌(使用客户端凭据流获取应用权限令牌,或授权码流获取委派权限令牌)。

C#代码示例

using System;
using System.Net.Http;
using System.Net.Http.Headers;
using System.Text;
using System.Threading.Tasks;
using Newtonsoft.Json;

public async Task SendMessageToUser(string accessToken, string userId, string messageContent)
{
    using var httpClient = new HttpClient();
    httpClient.DefaultRequestHeaders.Authorization = new AuthenticationHeaderValue("Bearer", accessToken);
    
    // 构建文本消息请求体
    var requestBody = new
    {
        body = new
        {
            content = messageContent
        }
    };
    var jsonContent = new StringContent(
        JsonConvert.SerializeObject(requestBody),
        Encoding.UTF8,
        "application/json");
    
    // 调用Graph API发送消息到指定用户的一对一聊天
    var response = await httpClient.PostAsync(
        $"https://graph.microsoft.com/v1.0/users/{userId}/chatMessages",
        jsonContent);
    
    response.EnsureSuccessStatusCode(); // 可根据业务需求添加异常处理逻辑
}

补充说明

  • userId可以是用户的UPN(例如user@yourdomain.com)或Azure AD对象ID。
  • 如果需要发送富格式消息(如自适应卡片、附件),可以修改body.content为HTML格式,或在请求体中添加attachments字段扩展内容结构。
  • 目前Teams官方不支持直接创建一对一聊天的Incoming Webhook,Graph API是实现用户定向消息推送的标准方案。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.29 11:37:33