2014-11-05 159 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

相关问题