Bot Framework中用AppHostedMedia向Teams端点外呼:如何生成媒体会话配置?
关于Teams Bot发起外呼时应用托管媒体(AppHostedMedia)的媒体会话配置Blob说明
核心问题
需要开发Bot向Teams端点发起外呼并使用应用托管媒体(AppHostedMedia),但微软官方示例未明确Graph调用中"blob": "<Media Session Configuration>"的具体生成规则。推测该Blob为SDP Offer,但Graph Communications SDK或Bot Framework中无明确管理类及示例代码参考。
手动生成Blob的必要信息与实现方式
当无法依赖SDK类时,已知主机IP、端口范围、传输协议(UDP/TCP)、支持的媒体类型(如PCM),Blob本质是符合标准的SDP Offer,需包含以下关键模块:
- 会话级基础描述:
- 固定版本标识
v=0 - 会话相关唯一标识(用户名、会话ID、版本ID)、网络类型、地址类型、连接地址
- 固定版本标识
- 媒体级详细配置:
- 媒体类型(如
m=audio)、监听端口、传输协议、RTP负载类型 - 属性字段(
a=前缀):指定编码格式的rtpmap、对应主机IP与端口的candidate候选地址、媒体传输方向(如sendrecv双向传输)、会话标识等
- 媒体类型(如
示例SDP Offer结构(适配AppHostedMedia场景)
v=0 o=- 1698753210 1698753210 IN IP4 192.168.1.100 s=- c=IN IP4 192.168.1.100 t=0 0 m=audio 50000 UDP 0 a=rtpmap:0 PCMU/8000 a=candidate:1 1 UDP 50000 192.168.1.100 0 typ host a=sendrecv
自动生成逻辑
每次呼叫需动态生成Blob:
- 用随机数或时间戳生成唯一的会话ID与版本ID
- 替换占位符为当前呼叫的可用主机IP、端口(从预设端口范围选取)
- 根据支持的媒体类型配置对应
rtpmap属性(如PCMU对应负载类型0、采样率8000) - 确保
candidate字段的IP与端口和实际媒体监听地址完全匹配
补充说明
针对呼入请求,Graph Communications SDK会自动完成SDP握手流程;但发起外呼时,需手动构造符合标准的SDP Offer作为Blob内容,目前官方文档及示例确实缺失该部分的详细指导。
内容的提问来源于stack exchange,提问作者Ennova
相关产品推荐
相关产品推荐

