2017-06-15 31 views
1

我有一個內置在Ruby On Rails中的應用程序,我可以調用存儲在數據庫中的成員來調用這些成員,我正在使用TwilioWebRTC,向TwiML應用程序發出請求,並返回此代碼:如何使用Twilio,Ruby和Rails將第三方添加到實時外撥電話中?

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 

這重定向我的電話,但斷開我呼出客戶端 我需要的呼叫可以被重定向而不掛在客戶端上,所以,我怎樣才能將第三方人員添加到呼出呼叫而不斷開連接呢?,我搜索了很多文檔,但所有工作都與來電有關。 在這種情況下,我同時打電話給客戶和其他參與者。

回答

0

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 

然後,當你想另一呼叫者添加的,而不是重定向到呼叫,你只是製造了他們新的呼叫也使用該會議的路線和房間號。

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}" 
) 

讓我知道這是否有幫助。

+0

很好,它的工作,非常感謝,但我有一個問題,當我打電話給成員時,程序要求他按一個鍵進入會議,有一種方法來禁用此?,而客戶端只是沒有按任何東西進入? –

+0

您是否升級了您的帳戶?除非你編程讓用戶撥號,否則不應該發生。 – philnash