Rails アプリをサードパーティ API (Twilio) と統合しようとしています。ユーザーはブラウザーのボタンを押して通話を開始し、電話の通話ロジックに従います。通話が終了すると、ブラウザーが別のページにリダイレクトされるようにします。しかし、2 つの異なるユーザー エージェント (ブラウザーと Twilio API) の応答を処理するのに苦労しています。
呼び出しは、次のコントローラー アクションを使用して開始されます (要求がブラウザーから送信されると、render アクションは問題なく動作します)。
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 要求を行います。その意図は、次の 2 つのことが起こることです。
- コントローラーは、通話を終了するための 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) からのリクエストに続いてリダイレクトするようにブラウザに指示するにはどうすればよいですか?