如何从我的Rails应用程序动态生成TwiML?

时间:2016-09-12 19:25:55

标签: ruby-on-rails ruby twilio voip

我已通过twilio-ruby整合了Twilio 使用我的Rails应用程序。基本的SMS和语音功能正在按预期工作,但现在我想扩展我的功能。我希望能够动态地在我的控制器中生成TwiML,将其保存在某处(本地或服务),然后让Twilio访问此XML。例如,客户通过我的应用程序下订单,生成并保存TwiML,然后Twilio使用新订单数据向供应商发出语音呼叫。记住并发订单,解决方案可能是什么样的?存储TwiML / XML然后让Twilio访问它的最佳解决方案是什么?谢谢。

1 个答案:

答案 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>

这样,您就不需要进行两次休息调用,也不会累积数千(或更多)冗余的垃圾箱,这些垃圾箱难以维护或清理。