如果我的应用程序没有从呼叫接​​收者

时间:2017-03-07 09:30:35

标签: ruby-on-rails twilio

如果我在最后一次机会"之后的5秒钟内没有得到有效回复,我希望下面的代码能够挂断。信息。我已将:timeout设置为11.通话应在10秒后结束(不包括询问问题的时间)。问第一个问题,然后在询问第二个问题之前等待5秒。我希望在第二次g.pause之后调用挂机。我在主要版块中尝试了r.hangup,在聚集块中尝试了g.hangup。这些都不适合我。应该怎么做?

def digits
  twiml_response = Twilio::TwiML::Response.new do |r|
    r.Gather numDigits: '1', timeout: 11, action: communications_menu_path do |g|
      g.Say "Please press one to continue", voice: 'alice', language: 'an-AU'
      g.Pause length: 5
      g.Say "Last chance. I didn't get any response. Please press one to continue.", voice: 'alice', language: 'an-AU'
      g.Pause length: 5
    end
  end
  render :xml => twiml_response.to_xml
end

1 个答案:

答案 0 :(得分:1)

Twilio开发者传道者在这里。

当您的<Gather> times out仍然会向action属性发出请求时。但是,该请求的Digits参数将为空。

因此,在下一个TwiML(在communications_menu_path下),你应该检查Digits参数是否存在但是为空,然后挂断,而不是挂在TwiML的这一部分。类似的东西:

def communications_menu
  if params["Digits"] && params["Digits"].blank?
    render :xml => Twilio::TwiML::Response.new { |r| r.Hangup }.to_xml 
  else
    # the rest of the TwiML
  end
end

让我知道这是否有帮助。