我已通过twilio-ruby整合了Twilio 使用我的Rails应用程序。基本的SMS和语音功能正在按预期工作,但现在我想扩展我的功能。我希望能够动态地在我的控制器中生成TwiML,将其保存在某处(本地或服务),然后让Twilio访问此XML。例如,客户通过我的应用程序下订单,生成并保存TwiML,然后Twilio使用新订单数据向供应商发出语音呼叫。记住并发订单,解决方案可能是什么样的?存储TwiML / XML然后让Twilio访问它的最佳解决方案是什么?谢谢。
答案 0 :(得分:0)
在调用期间动态生成TwiML似乎是首选方法。
从我们按姓名问候调用者的文档中动态生成TwimL内容的示例:
https://www.twilio.com/docs/quickstart/ruby/twiml/greet-caller-by-name#twiml-quickstartrb
require 'rubygems'
require 'sinatra'
require 'twilio-ruby'
get '/hello-monkey' do
people = {
'+14158675309' => 'Curious George',
'+14158675310' => 'Boots',
'+14158675311' => 'Virgil',
'+14158675312' => 'Marcel',
}
name = people[params['From']] || 'Monkey'
Twilio::TwiML::Response.new do |r|
r.Say "Hello #{name}"
end.text
end
您的应用程序必须为订单解析传入的邮件正文(如果使用SMS),然后对供应商进行适当的调用,而不是people
数组。
但是,如果您的用例确实需要动态创建托管的TwiML,TwiML Bins in the Twilio Console很快就会允许您使用插值来执行此操作。
这意味着您可以执行以下操作:
curl -X POST api.twilio.com/..../Calls -d 'Url=https://hander.twilio.com/EHxxx?message=hello+world' -u Cxxx:yyyy
你的TwiML Bin将包含必要的TwiML:
<Response><Say>{{message}}</Say></Response>
这样,您就不需要进行两次休息调用,也不会累积数千(或更多)冗余的垃圾箱,这些垃圾箱难以维护或清理。