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

Twilio通话录音与MMS媒体HTTP认证启用后如何访问媒体?

Twilio媒体URL启用HTTP认证后的PHP SDK调整方案

当Twilio对通话录音和MMS媒体强制执行HTTP认证后,你需要做以下调整来确保应用能正常访问这些媒体资源:

  • 停止直接使用存储的未认证媒体URL
    之前你存储的https://api.twilio.com/2010-04-01/Accounts/{AccountSid}/Records/{RecordSid}.mp3这类原始URL,现在访问会返回401 Unauthorized,必须废弃直接调用的方式。

  • 通过Twilio PHP SDK生成带签名的临时媒体URL
    利用SDK提供的方法生成带有效期的签名URL,这类URL包含认证信息,在有效期内可直接访问。示例代码:

    <?php
    require_once '/path/to/vendor/autoload.php';
    
    use Twilio\Rest\Client;
    
    // 初始化Twilio客户端
    $accountSid = '你的AccountSid';
    $authToken = '你的AuthToken';
    $client = new Client($accountSid, $authToken);
    
    // 生成通话录音的临时签名URL(有效期设为1小时,可自定义Ttl参数)
    $recording = $client->calls('目标通话的CallSid')
                        ->recordings('录音的RecordSid')
                        ->fetch();
    $signedRecordingUrl = $recording->getAudioUrl(['Ttl' => 3600]);
    
    // 生成MMS媒体的临时签名URL
    $media = $client->messages('目标短信的MessageSid')
                    ->media('媒体的MediaSid')
                    ->fetch();
    $signedMediaUrl = $media->getUrl(['Ttl' => 3600]);
    
  • 可选:直接通过SDK获取媒体二进制内容
    如果不想依赖Twilio的URL,可以直接获取媒体的二进制数据,自行存储或返回给前端。示例:

    // 获取通话录音的二进制内容
    $recordingContent = $client->calls('CallSid')
                               ->recordings('RecordSid')
                               ->fetch()
                               ->fetchMedia();
    
    // 将内容保存到本地服务器
    file_put_contents('local_recording.mp3', $recordingContent);
    
  • 更新媒体资源的存储逻辑
    不再存储Twilio的原始媒体URL,改为存储对应的资源标识(比如CallSid+RecordSid、MessageSid+MediaSid)。每次需要访问媒体时,动态生成签名URL或直接获取内容,避免因URL过期或认证规则变更导致的访问失败。

  • 处理历史存储的旧URL
    对于之前存储的旧URL,需要对应找到资源的Sid,重新生成签名URL;或者批量将这些媒体内容迁移到自己的存储服务,彻底脱离对Twilio媒体URL的依赖。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.19 06:42:20