如果我在最后一次机会"之后的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
答案 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
让我知道这是否有帮助。