如何实时触发Microsoft Teams PSTN来电事件并获取来电号码?
实时捕获Microsoft Teams PSTN来电事件与来电号码方案
可行官方方案
1. Microsoft Graph 实时呼叫变更通知
目前Microsoft Graph支持对communications/calls资源创建变更通知订阅,当PSTN来电发起(呼叫创建阶段)时,会实时向你指定的webhook推送事件,payload里直接包含来电者的phoneNumber字段,完全满足实时触发+号码获取的需求。
- 配置时需设置
changeType为created,目标资源路径为/communications/calls; - 应用需要申请
Calls.Read.All或Calls.ReadWrite.All权限,在Azure AD完成应用注册和权限授予即可生效。
2. Teams Phone System + Power Automate 可视化流程
如果你的团队已经启用Teams Phone System,直接用Power Automate的**「当有来电到达Teams用户」触发器**(需对应许可),来电振铃瞬间就能触发流程,并且可以直接提取来电号码、来电者信息,无需代码开发,还能一键同步到内部CRM、工单系统。
3. 自定义Teams呼叫机器人
基于Microsoft Bot Framework开发Teams机器人,将机器人配置为呼叫代理,当PSTN来电转接到关联的Teams用户/队列时,机器人会通过OnIncomingCall事件捕获呼叫初始化请求,请求参数里包含完整的来电者标识(包括PSTN号码),适合需要深度定制的场景。
关于你已尝试方案的补充
- Graph Call Records API:这个API本来就是为通话后分析设计的,数据延迟是固有特性,确实不适合实时场景;
- 数据包抓包:Teams所有呼叫信令和媒体流都是端到端加密的,抓包根本拿不到有效数据,这个路径彻底走不通。
旧问题的更新说明
你找到的早年讨论确实没有可行方案,但近几年Microsoft Graph和Teams平台已经新增了实时呼叫事件的官方支持,上面的三个方案都是当前稳定可靠的实现,完全避开了OCR这类临时方案的弊端。
内容的提问来源于stack exchange,提问作者hekatonkeiru
相关产品推荐
相关产品推荐

