Microsoft Graph startTranscription API返回200但转录未启动问题求助
问题概况
请求信息:
POST https://graph.microsoft.com/beta/communications/calls/{callId}/microsoft.graph.startTranscription Request body: { "language": "en-us" }
预期响应:202 Accepted,且返回Location响应头
实际响应:200 OK,无Location头,转录未启动,GET查询通话状态时转录状态显示Not Started。已知服务主体权限已配置,机器人通过会议ID+密码加入,但未作为自定义应用上传至Teams,聊天无机器人加入通知。
核心原因及解决措施
机器人未真正接入会议
直接用会议ID和密码让机器人加入的方式不满足转录API的要求——只有当机器人作为Teams自定义应用被添加到会议时,才能获得完整的会议操作权限。你看到聊天没有机器人加入活动,说明机器人并未成功建立有效通话连接,自然无法触发转录。
解决:把机器人打包成自定义应用上传到Teams,通过Teams界面将机器人添加到会议,确认聊天中出现机器人加入的提示后,再调用转录接口。API调用时机不对
即使机器人加入会议,也得等通话状态稳定后再调用startTranscription。如果在会议刚创建或机器人刚加入时立即请求,可能返回200但不执行实际操作。
解决:调用转录接口前,先通过GET https://graph.microsoft.com/beta/communications/calls/{callId}确认通话状态为established,再发起请求。Beta API的潜在问题
Beta版本API存在功能不稳定、文档与实际行为不一致的可能。
解决:确认令牌已包含CommunicationsCalls.ReadWrite.All权限,同时检查是否有beta API的更新,必要时等待官方修复或切换到正式版API(若有对应功能)。
验证流程
- 完成机器人自定义应用的上传并成功添加到会议,确认聊天有加入通知。
- 调用GET接口确认通话状态为
established。 - 重新发起转录请求,检查响应是否为202 Accepted并返回Location头。
- 再次查询通话的转录状态,确认是否变为
InProgress。
内容的提问来源于stack exchange,提问作者Shahid Haider

