我正在尝试将我的 Rails 应用程序与第 3 方 API (Twilio) 集成。用户通过按下浏览器上的按钮发起呼叫,他们遵循电话上的呼叫逻辑,然后当呼叫终止时,我希望浏览器被重定向到不同的页面。但是,我在处理两个不同用户代理(浏览器和 Twilio API)的响应时遇到了困难。
使用以下控制器操作启动调用(并且由于请求来自浏览器,因此渲染操作可以正常工作):
def set_up
@client = Twilio::REST::Client.new ACCOUNT_SID, AUTH_TOKEN
data = {
from: FROM,
to: params[:number],
url: candidate_begin_url(@candidate),
method: 'get',
timeout: 10
}
@client.account.calls.create data
render 'candidates/interview_in_progress'
end
在调用结束时,一旦用户准备好终止,Twilio API 就会向以下控制器发出 GET 请求。目的是要发生两件事:
- 控制器应使用 XML 指令响应 Twilio API 以挂断呼叫
控制器应该将用户的浏览器重定向到一个新的 url
def finalize_call response = Twilio::TwiML::Response.new do |r| r.Hangup end.text respond_to do |format| format.html { redirect_to candidate_complete_voice_interview_path(@candidate) } format.xml { render xml: response } end end
但是,似乎因为请求来自 Twilio API 用户代理,所以我无法使用浏览器执行任何操作。因此,虽然在日志中我看到新页面已呈现状态 200 OK,但浏览器没有任何变化。
我的问题是,如何指示浏览器根据来自不同用户代理的请求进行重定向,在这种情况下是 API?