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

Teams托管媒体Bot未调用Webhook及无法加入会议排查求助

Teams媒体Bot加入会议失败&Webhook未触发排查方案

一、Ngrok与域名配置校验

  • 检查Ngrok转发状态:执行ngrok status命令,确认tcp://0.tcp.in.ngrok.io:12345是否正常映射到localhost:8445,查看是否存在连接超时、转发中断的日志。
  • 验证CNAME解析:用nslookup 0.local.bot命令确认域名解析结果指向0.tcp.in.ngrok.io,避免解析延迟或配置错误导致Teams无法找到Bot服务。
  • 核对证书匹配:当前openssl生成的*.local.bot.example.com证书与实际使用的0.local.bot域名不匹配,会导致TLS握手失败,需重新生成包含*.local.bot的证书并导入MMC个人证书库。

二、Bot服务配置与权限校验

  • 检查appsettings参数:确认CallingEndpoint设置为https://0.local.bot:12345/api/calling(使用Ngrok的TCP端口而非本地8445),MicrosoftAppId、MicrosoftAppPassword与Azure AD应用配置完全一致。
  • 确认API权限:确保已添加OnlineMeetings.ReadWrite.All、Calls.JoinGroupCalls.All、Calls.AccessMedia.All权限,且完成管理员同意(租户级应用需此步骤)。
  • 验证本地端口监听:执行netstat -ano | findstr :8445,确认8445端口被你的Bot进程占用,避免端口冲突或服务未正常启动。

三、会议加入与Webhook触发排查

  • 解析JoinCallAsync响应:不要仅依赖HTTP状态码,查看响应体中的callId、meetingInfo字段,确认会议信息正确,是否包含隐藏的错误提示。
  • 开启详细日志:在appsettings中设置Logging.LogLevel.Default: Debug,查看Bot日志中是否有媒体协商失败、TLS握手错误、请求超时等记录,这是定位未加入会议的核心依据。
  • 测试Webhook可达性:用Postman向https://0.local.bot:12345/api/calling发送模拟的Teams呼叫Webhook请求(参考官方Webhook格式构造请求体),确认本地服务能接收并响应请求,排除Ngrok转发或防火墙拦截问题。
  • 核对清单配置:除supportsCalling: true外,确认devicePermissions包含microphone,validDomains添加0.local.bot,确保Teams客户端能正常与Bot交互。

四、音频获取的关键配置

  • 会议加入时指定媒体权限:在JoinCallAsync的请求体中,设置mediaSettings的audio参数为receiveAudio: true,明确请求接收参会者音频流。
  • 检查媒体协商日志:查看Bot日志中的SDP交换记录,SDP参数不匹配会导致媒体流无法建立,即使Bot显示加入会议也无法获取音频。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.16 14:52:20