如何使用 Twilio 和 Ruby 和 Rails 将第三方添加到实时出站呼叫中



>我有一个在Ruby On Rails中构建的应用程序,我可以在其中调用存储在数据库中的成员,要调用这些成员,我正在使用TwilioWebRTC,向TwiML应用程序发出请求,该应用程序返回以下代码:

member = Member.find_by_id params[:id]
client = Client.find_by_id params[:client_id]
response = Twilio::TwiML::Response.new do |r|
  r.Say 'Hello. Connecting with the member now.', :voice => 'alice'
  r.Dial :record => 'record-from-answer',:callerId => client.twilio_number do |d|
    d.Number member.mobile_phone
  end
end

当在某个时刻我必须将此呼叫重定向到另一个号码时,问题就来了。当前为了将呼叫重定向到路由,我向路由发出请求,并用以下内容更新呼叫:

@call = @client.account.calls.get(outgoing_call.sid)
@call.update(:url => "#{ENV['APP_BASE_URL']}/twilio/redirect_call?client_id=#{params[:client_id]}",
             :method => "POST")

该 URL 返回以下部分:

client = Client.find_by_id params[:client_id]
response = Twilio::TwiML::Response.new do |r|
  r.Dial :record => 'record-from-answer' do |d|
    d.Number client.redirect_number
  end
end

这会重定向我的呼叫,但断开客户端上的传出呼叫我需要呼叫可以重定向而不挂在客户端上,那么,如何在不断开连接的情况下将第三人添加到出站呼叫中?,我已经搜索了很多文档,但所有工作都是来电。在这种情况下,是我打电话给客户和另一个参与者。

Twilio开发者布道者在这里。

如果您需要三个人在对话中,则需要使用<Conference>来连接他们。

对于初始呼叫,您应该让他们进入会议并同时拨打第二方,而不是将用户拨入一对一呼叫:

member = Member.find_by_id params[:id]
client = Client.find_by_id params[:client_id]
room_id = "#{member.id}-#{client.id}"
@client.calls.create(
  :to => member.mobile_phone,
  :from => client.twilio_number,
  :url => "#{ENV['APP_BASE_URL']}/twilio/conference?room_id=#{room_id}"
)
response = Twilio::TwiML::Response.new do |r|
  r.Say 'Hello. Connecting with the member now.', :voice => 'alice'
  r.Dial do |d|
    d.Conference room_id, :record => 'record-from-start'
  end
end

然后,您需要"/twilio/conference"的路由,该路由从URL读取room_id,并为会议返回相同的TwiML。

room_id = params[:room_id]
response = Twilio::TwiML::Response.new do |r|
  r.Dial do |d|
    d.Conference room_id
  end
end

然后,当您想要将另一个呼叫者添加到呼叫中时,只需创建一个也使用该会议路由和会议室 ID 的新呼叫,而不是重定向。

client = Client.find_by_id params[:client_id]
room_id = params[:room_id]
@client.calls.create(
  :to => client.redirect_number,
  :from => client.twilio_number,
  :url => "#{ENV['APP_BASE_URL']}/twilio/conference?room_id=#{room_id}"
)

让我知道这是否有帮助。

最新更新