2014-11-05 45 views
0

我想從第二段調用中獲得通話詳細信息,並將它們插入到我的數據庫中。我怎樣才能獲得twilio第二次電話會議的詳細信息?

以下是這種情況:將免費號碼的呼入呼叫路由到第二部電話。所以有兩條腿,1)對免費電話號碼的入站呼叫,然後2)連接到第二個號碼。

用於獲取通話細節首回合代碼:

get '/hangup' do 
user_key = numbers.where(:number => params["To"]).join(:credentials, :user_id => :user_id).get(:user_key) 
user_token = numbers.where(:number => params["To"]).join(:credentials, :user_id => :user_id).get(:user_token) 
call_sid = params["CallSid"] 
call_parent_sid = ["ParentCallSid"] 
@sub_account_client = Twilio::REST::Client.new(user_key, user_token) 
@subaccount = @sub_account_client.account 
call = @subaccount.calls.get(call_sid) 
    call_sid = call.sid, 
    call_parent_sid = call.parent_call_sid, 
    phone_number_id = call.phone_number_sid, 
    call_from = call.from, 
    call_to = call.to, 
    call_start = call.start_time, 
    call_end = call.end_time, 
    call_duration = call.duration, 
    charged_duration = ((call_duration.to_f)/60).ceil 
    call_price = call.price 
    call_charged_price = (charged_duration * 0.07) 
call_logs.insert(:call_sid => call_sid, :call_parent_sid => call_parent_sid, :phone_number_id => phone_number_id, :call_from => call_from, :call_to => call_to, :call_start => call_start, :call_end => call_end, :call_duration => call_duration, :charged_duration => charged_duration, :call_price => call_price, :call_charged_price => call_charged_price) 
end 

這工作掛機之後和status_callback_url是「/掛斷」。但是,我怎樣才能獲得第二段電話的相同細節。我曾嘗試如下:

get '/receive' do 
destination_number = numbers.where(:number => params["To"]).join(:users, :id => :user_id).get(:primary_number) 
user_id = numbers.where(:number => params["To"]).join(:users, :id => :user_id).get(:id) 
greeting_url = voicemail.where(:user_id => user_id).get(:voicemail_play_url) 
     resp = Twilio::TwiML::Response.new do |r| 
     r.Dial destination_number, :status_callback => '/hangup_second_leg', :status_callback_method => 'GET' 

等。

這有效地試圖創建它,不用說,沒有工作第二status_callback_url。

那麼,我怎樣才能得到呼叫的第二條(甚至第三條)腿的細節,並把它塞進我的數據庫?

Twilio evangelist .....

非常感謝提前。

回答

0

Twilio開發者傳道士爲您服務!

我剛剛進行了一個快速測試,您從掛斷回調中獲得的參數應該包含「CallSid」和「DialedCallSid」,它們是您呼叫的兩條腿。您可以通過撥打普通電話的REST API獲取數據的保持:

get '/hangup' do 
    call_sid = params["CallSid"] 
    dialed_call_sid = params["DialedCallSid"] 
    @sub_account_client = Twilio::REST::Client.new(user_key, user_token) 
    @subaccount = @sub_account_client.account 
    inbound = @subaccount.calls.get(call_sid) 
    outbound = @subaccount.calls.get(dialed_call_sid) 
    # Update calls in database 
end 

另外,呼入呼叫是所有接電話的範圍內部分其他調用的父。所以,你可以得到的細節上所有的孩子有以下API調用電話:

@subaccount.calls.list parent_call_sid: params["CallSid"] 
# => [<Twilio::REST::Call>, ...] 

另外,如果你在你掛斷得到一個ParentCallSid參數,那麼你可以使用上面的代碼查找父通話還有孩子的電話。

希望這有助於,讓我知道如果有什麼我可以幫忙的。

+0

謝謝親愛的TDE。對不起,我的答覆很慢(我在日本),我們遇到了問題。 parentcallsid是空的,這裏是我的終端:GET/hangup?AccountSid = ACac2a5b815cdcd688200c30dd3a7de092&CallStatus = completed&ToZip =&ToCity = ToState =&Callled =%2B448008085510&To =%2B448008085510&CallDuration = 15&ToCountry = GB&CalledZip =&Direction = inbound&ApiVersion = 2010-04-01& %2B1000000000&CalledCity =&CalledCountry = GB&Duration = 1&CallSid = CAeaf9b93be24f664be078e934a6443617&CalledState =&From =%2B1000000000 HTTP/1.1「12 - 2.2821 您可以看到沒有parentcallsid參數。我被卡住了。 – user1903663 2014-11-06 08:18:30

+0

我應該補充說明callnback_url的設置如下::status_callback =>「http://6c93ce61.ngrok.com/hangup」,:status_callback_method =>'GET',這裏是我查詢的時候得到的已知的call_sid:{「sid」:「CAeaf9b93be24f664be078e934a6443617」,「parent」:null,「phone_number_id」:「PNa337ddde1fe16df6757b764d8b7be5f9」,「date」:「Thu,2014年11月6日08:13:31 +0000」,「from」: 「+1000000000」,「to」:「+ 448008085510」,「start」:「Thu,2014年11月6日08:13:33 +0000」,「end」:「Thu,2014年11月6日08:13:48 +0000 「,」價格「:」 - 0.05750「,」持續時間「:」15「}即使呼叫被重定向,仍然沒有父母。 – user1903663 2014-11-06 08:21:37

+0

啊,所以在這種情況下,您沒有在回調中獲得ParentCallSid或DialedCallSid。我不能告訴你爲什麼,但我可以告訴你的是你的電話是家長電話。所以,你可以通過你在那裏的呼叫sid來查找孩子的呼叫。嘗試調用'@subaccount.calls.list:parent_call_sid =>'CAeaf9b93be24f664be078e934a6443617''。你應該在那裏找到孩子的電話。 – philnash 2014-11-06 08:57:25