使用Media Streams API按名称停止媒体流的相关疑问
结论
你的判断完全正确:按名称停止Media Stream的能力仅适用于TwiML场景,REST API调用停止流时必须使用Media Stream SID,不支持直接传入名称定位目标流。
具体说明
- TwiML是Twilio侧执行的通话控制指令,运行时天然持有当前通话下所有活跃Media Stream的上下文映射,因此可以直接通过你创建流时自定义的
name字段匹配到对应流实例执行停止操作,无需提前获取流的SID。
TwiML按名称停流的示例代码如下:<Stop> <Stream name="my_first_stream" /> </Stop> - Media Streams REST API是无状态的资源操作接口,服务端不会做名称到流实例的匹配检索,所有针对单个流的增删改查操作,都必须通过流的唯一资源标识(即
MZ开头的Media Stream SID)定位目标资源,这也是官方REST API示例全部使用SID传参的原因。
官方给出的REST API停流示例代码如下:client.calls('CAXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX') .streams('MZXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX') .update({status: 'stopped'}) .then(stream => console.log(stream.name)); - 如果需要在REST API场景下实现按自定义名称停流的效果,你需要在创建Media Stream拿到返回结果时,自行将自定义的流名称和对应的流SID做映射存储,后续需要停流时先通过名称查询到对应SID,再调用停流接口即可。
内容的提问来源于stack exchange,提问作者Alan
相关产品推荐
相关产品推荐

