我的sinatra网站与twilio交谈

时间:2014-05-30 02:54:13

标签: xml sinatra twilio

Sinatra将layout.erb中的所有视图包装在您放置的位置&lt;%= yield%&gt;在那个文件中。如果您只为浏览器提供html页面,这非常棒。但 我们正在编写一个应用程序,它还需要通过XML与Twilio交谈。挑战:我们的所有输出都是以<!DOCTYPE/html>包裹的方式发出的。

我们设法通过在action.erb文件中指定layout:false来绕过layout.erb。

post '/incoming' do
  content_type 'text/xml'
  @message = "this is working"
 erb :'/incoming.xml', layout: false
end

我确信有一个'更好'的方式让Sinatra提供xml内容,非常感谢你对此的帮助!

2 个答案:

答案 0 :(得分:1)

你可以使用twilio-ruby gem https://github.com/twilio/twilio-ruby从你的动作中渲染出Twiml:

post '/incoming' do
  response = Twilio::TwiML::Response.new do |r|
    r.Say "This is working"
  end

  response.text
end

这将呈现twilio期待的正确的Twiml文档。

答案 1 :(得分:0)

如果我正确理解您的情况/问题,那么您正在寻找一种更简洁的方式来提供来自Sinatra的XML(在本例中为Twilio的TwiML)。如果是这种情况,我建议您查看Sinatra::Builder module。该模块允许您在路径中动态构建TwiML。如果您想使用模板化方法,它还支持模板。

可以在Builder's RubyForge page上找到Builder的完整文档。