【发布时间】:2014-08-19 08:07:08
【问题描述】:
如何使用 twilio sdk 下载录制文件或如何将录制文件直接从 twilio 移动到 amazon s3。
【问题讨论】:
标签: twilio
如何使用 twilio sdk 下载录制文件或如何将录制文件直接从 twilio 移动到 amazon s3。
【问题讨论】:
标签: twilio
Twilio 布道者在这里。
录音通过直接 URL 公开,因此为了下载它们,您需要使用您选择的编程语言中的 HTTP 客户端向录音 URL 发出 GET 请求并保存返回的数据。
有两种方法可以找到网址:
如果您在 action parameter of the <Record> verb 中指定 URL,一旦录制完成,Twilio 将向该 URL 发出 HTTP 请求,并包含作为参数存储录制内容的 URL。
创建 Twilio REST API 的 GET request to the recordings resource。这将返回给您一个记录资源列表,每个资源都包含一个 URI 参数。将 .mp3 或 .wav 添加到该 URI 以获取请求录制的音频所需的 URL。
下载录制文件后,您可以使用 REST API 让 Twilio 将其从我们的服务器中删除。只需向录音 uri 发出 HTTP DELETE 请求。
希望对您有所帮助。
【讨论】:
这是我为此编写的一个 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?
【讨论】: