【问题标题】:How to move or download the twilio recording to amazon s3如何将 twilio 录音移动或下载到 amazon s3
【发布时间】:2014-08-19 08:07:08
【问题描述】:

如何使用 twilio sdk 下载录制文件或如何将录制文件直接从 twilio 移动到 amazon s3。

【问题讨论】:

    标签: twilio


    【解决方案1】:

    Twilio 布道者在这里。

    录音通过直接 URL 公开,因此为了下载它们,您需要使用您选择的编程语言中的 HTTP 客户端向录音 URL 发出 GET 请求并保存返回的数据。

    有两种方法可以找到网址:

    1. 如果您在 action parameter of the <Record> verb 中指定 URL,一旦录制完成,Twilio 将向该 URL 发出 HTTP 请求,并包含作为参数存储录制内容的 URL。

      李>
    2. 创建 Twilio REST API 的 GET request to the recordings resource。这将返回给您一个记录资源列表,每个资源都包含一个 URI 参数。将 .mp3 或 .wav 添加到该 URI 以获取请求录制的音频所需的 URL。

    下载录制文件后,您可以使用 REST API 让 Twilio 将其从我们的服务器中删除。只需向录音 uri 发出 HTTP DELETE 请求。

    希望对您有所帮助。

    【讨论】:

    • 好的,谢谢您的回复。但不是下载 twilio 音频,我需要直接转移到 AWS s3。有什么选择..?
    • 当前场景:我们正在从 twilio 记录下载到我们的服务器,并将 s3 挂载到 s3 存储桶之一。需要的场景:而不是将录音从 twilio 下载到我们的本地服务器。我需要将录制文件直接从 twilio s3 移动/复制到我的账户 AWS S3。
    • Devin,我是 Twilio 的新手,正在尝试您的建议。我正在使用 testurl.com/abc /> 将录音发布到外部 URL。这不起作用。请参考任何教程实现这一点。我试图将录音发布到我的自定义外部 API 以在我的远程代码中收集它
    【解决方案2】:

    这是我为此编写的一个 Ruby 脚本。为了获得最快的结果,请从服务器运行它并复制到 Twilio 所在的美国东部的存储桶中。因为 Heroku 在美国东部,所以我只是从 Heroku 应用程序中执行此操作。运行heroku run bash -a my-app-name。安装 gem:

    gem install twilio-ruby aws-sdk --no-ri --no-rdoc
    

    然后启动 irb 并运行此代码(更新您的凭据和存储桶名称)。

    require 'twilio-ruby'
    account_sid = 'your_account_sid'
    auth_token = 'your_auth_token'
    twilio_rest_client = Twilio::REST::Client.new account_sid, auth_token
    
    require 'aws-sdk'
    access_key_id = 'your_access_key_id'
    secret_access_key = 'your_secret_access_key'
    region = 'us-east-1'
    bucket = 'your-bucket-name'
    Aws.config.update({
      region: region,
      credentials: Aws::Credentials.new(access_key_id, secret_access_key)
    })
    s3 = Aws::S3::Resource.new(region: region)
    
    recordings = twilio_rest_client.account.recordings.list(page_size: 1000)
    
    begin
      begin
        recordings.each do |recording|
          recording.mp3! do |file|
            begin
              path = recording.mp3.gsub('https://api.twilio.com/', '')
              object = s3.bucket(bucket).object(path)
              object.put(body: file.body)
            rescue Aws::S3::Errors::ServiceError => error
              puts error.message
              puts recording.mp3
            end
          end
          recording.delete
        end
      rescue Twilio::REST::RequestError => error
        puts error.message
        puts recording.mp3
      end
    
      recordings = recordings.next_page
    end while !recordings.empty?
    

    【讨论】:

      猜你喜欢
      • 2016-03-27
      • 2019-10-05
      • 2019-07-16
      • 1970-01-01
      • 1970-01-01
      • 2015-02-24
      • 2015-09-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多