我想开发一个记录语音消息并存储在云中的应用程序。
它像这样工作
1)用户拨打手机并记录消息。
2) 录制的语音消息/语音邮件应该可以通过网络/在线访问/可用于所有其他用户以及用户电话号码。
对于网络,我可以使用 PHP/python。
但我不知道如何通过网络/云保存语音邮件/语音消息。
请帮我
为什么不使用Twilio、Tropo或该领域的其他提供商之一来完成您需要的事情,而无需保护实际的语音线路、硬件等?
Twilio 有一个示例语音邮件应用程序,它可能是您项目的良好开端。
如果您需要从电话提供商处访问语音邮件,则将提供特定于提供商的详细信息,因此您应该更新您的帖子以包含有关您想要定位的提供商的信息(如果该提供商位于多个市场,则可能包括地理信息) .
我建议为此使用Tropo脚本。特别是,看看他们的示例,该示例显示了一个进行录音和转录的语音邮件系统。
不久前,我组装了一个简单的 Sinatra 应用程序来获取 Tropo 录音并将它们放入 Amazon S3 存储桶中。从那里,您可以随心所欲地使用它们。
%w(rubygems sinatra yaml logger aws/s3).each do |lib|
require lib
end
# Open configuration file and connect to Amazon
AWS_CONFIG = YAML.load(File.open('config/amazon_s3.yml'))
AWS::S3::Base.establish_connection!(
:access_key_id => AWS_CONFIG['access_key_id'],
:secret_access_key => AWS_CONFIG['secret_access_key']
)
# Exception class with HTTP error codes
class HTTPError < StandardError
attr_reader :code
def initialize(message, code = 500)
super(message)
@code = code
end
end
# Put an uploaded file on S3
def handle_post(params)
params['bucket'] ||= AWS_CONFIG['default_bucket']
raise HTTPError.new("invalid token", 403) if params['token'] != AWS_CONFIG['api_token']
raise HTTPError.new("missing filename", 400) unless params['name']
raise HTTPError.new("bucket #{params['bucket']} is not allowed", 403) unless AWS_CONFIG['allowed_buckets'].include? params['bucket']
AWS::S3::S3Object.store(params['name'],
File.open(params['filename'][:tempfile].path),
params['bucket'])
rescue HTTPError => ex
error(ex.code)
rescue => ex
puts ex
error(500)
end
# Method that receives the file and sends to S3
# /save-to-s3?token=<token>[&bucket=<one-of-allowed-buckets>]&name=filename
post '/save-to-s3' do
handle_post(params)
end
我在 Heroku 上运行该应用程序,因此我添加了一个简单的 config.ru 文件,以便可以将其识别为 Rack 应用程序。
require 'tropo-audiofiles-to-s3'
run Sinatra::Application
您不必使用 Ruby。Tropo 脚本处理多种语言(它们都在 JVM 上运行,因为 Tropo 构建在 Voxeo 的应用服务器上),您也可以处理任何语言的文件上传。
祝你好运。