如何在轨道中的Twilio电话呼叫中进行语音响应控制流程

时间:2017-03-08 09:39:59

标签: ruby-on-rails twilio

我让Twilio使用键盘响应。现在我想对记录和转录响应的呼叫做同样的事情。我有键盘

def digits
  twiml_response = Twilio::TwiML::Response.new do |r|
    r.Gather numDigits: '1', timeout: 1, action: 
             communications_menu_path(@question.id) 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

这是我尝试过的语音控制,

def voice
  twiml_response = Twilio::TwiML::Response.new do |r|
    g.Say "Please say continue to continue", voice: 'alice', language: 'an-AU'
    r.Record maxLength: 5, transcribeCallback: 
             transcriptions_path(question.id), 
             action: communications_menu_path(@question.id)  
    g.Say "Last chance. I didn't get any response. Please say continue to continue.", 
      voice: 'alice', language: 'an-AU'
    r.Record maxLength: 5, transcribeCallback: 
             transcriptions_path(question.id), 
             action: communications_menu_path(@question.id)  
  end
  render :xml => twiml_response.to_xml
end

我调整了Twilio调查控制器的代码。在该示例中,存储转录的答案,但是对问题流没有任何控制。就我而言,他们这样做。我如何使用recordingStatusCallback来执行此操作?

1 个答案:

答案 0 :(得分:0)

Twilio开发者传道者在这里。

现在使用语音进行响应并不像Twilio那样简单,因为录音和转录与电话异步发生。

所以,您需要做的是,一旦您点击<Record>action网址,您就不会有录音或答案。您可以在等待接收转录时将用户置于循环中(例如,使用<Pause><Redirect>),然后在获得响应后使用REST API to redirect the call

<强> [编辑]

这是重定向循环的样子:

def redirect_loop
  twiml_response = Twilio::TwiML::Response.new do |r|
    r.Pause length: "10"
    r.Redirect redirect_loop_path
  end
  render xml: twiml_response.to_xml
end

您可以使用任何长度暂停,您认为这是一个好主意。有一个短的可能是有用的,这样你就可以测量这个过程需要多长时间。您还可以使用您希望用户等待的最大长度暂停,然后将其发送到备用回复或基于<Gather>的菜单。