【问题标题】:How do I dynamically generate TwiML from my Rails app?如何从我的 Rails 应用程序动态生成 TwiML?
【发布时间】:2016-09-12 19:25:54
【问题描述】:

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

【问题讨论】:

  • 是否有理由暂时存储它,而不是在通话期间动态生成 TwiML?

标签: ruby-on-rails ruby twilio voip


【解决方案1】:

在调用期间动态生成 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>

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

【讨论】:

  • 感谢您的评论。不幸的是,在通话期间生成不适合我的实现。我决定将 TwiML 写入 Amazon S3,然后让 Twilio 访问它。现在一切都按设计工作。谢谢。
  • 啊,明白了,在我昨天发帖后,我开始考虑使用 TwiML Bins 完成此操作的方法(即stackoverflow.com/questions/24494782/…)。这些现在由 Twilio 在控制台中托管,我与团队联系以发现他们计划添加插值。我将用这些提示更新我的答案以供将来使用。虽然我很高兴您使用 Amazon S3 的解决方案能够满足您的需求。没想到。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-10-05
相关资源
最近更新 更多