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

如何在C#中通过代理访问Teams通话通知URL并注册Webhook

通过代理配置实现Microsoft Graph Webhook订阅(Teams通话记录)

要让GraphServiceClient通过代理访问你的NotificationUrl并完成Webhook注册,核心是给Graph SDK配置自定义HttpClient——因为Graph的所有请求(包括Webhook验证阶段的回调请求)都会通过这个HttpClient发送。具体实现步骤如下:

1. 创建带代理配置的HttpClient实例

先构建包含代理设置的HttpClientHandler,再用它初始化HttpClient:

// 配置代理地址和端口
var proxy = new WebProxy("http://你的代理地址:端口号")
{
    // 如果代理需要认证,添加对应凭据
    Credentials = new NetworkCredential("代理用户名", "代理密码")
};

var httpClientHandler = new HttpClientHandler
{
    Proxy = proxy,
    UseProxy = true
};

// 初始化带代理的HttpClient
var httpClient = new HttpClient(httpClientHandler);

2. 用自定义HttpClient初始化GraphServiceClient

替换默认的GraphServiceClient初始化方式,将上面配置好的HttpClient传入:

// 假设你已通过认证获取到TokenCredential(如ClientSecretCredential)
var graphServiceClient = new GraphServiceClient(httpClient, tokenCredential);

3. 执行原有的Webhook订阅代码

使用配置好代理的GraphServiceClient,正常创建通话记录订阅即可:

var sub = new Microsoft.Graph.Subscription();
sub.ChangeType = "created";
sub.NotificationUrl = _options.WebhookNoticationUrl;
sub.Resource = "communications/callRecords";
sub.ExpirationDateTime = DateTime.UtcNow.AddHours(Convert.ToInt32(_options.WebhookExpirationTime));
sub.ClientState = _options.ClientState;

var newSubscription = await graphServiceClient
    .Subscriptions
    .Request()
    .AddAsync(sub);

关键说明

创建订阅时,Microsoft Graph会向你的NotificationUrl发送验证请求确认端点有效性,这个验证请求会通过你配置的代理发送,从而完成Webhook的注册流程。如果代理需要额外的SSL证书信任,还可以在HttpClientHandler中添加证书验证逻辑。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.01 21:22:13