当我使用REST API购买twilio号码时如何获得电话号码SID?

时间:2014-11-02 03:13:43

标签: ruby sinatra twilio

我正在使用红宝石,sinatra和twilio。以下代码购买一个数字,然后将该数字插入我的数据库。我还希望得到34个字符的电话号码" sid"并将其插入我的数据库,但我不知道如何访问它。

以下是代码:

get '/buy_phone_number'do
#get subbacount credentials from my db
user_key = users.where(:validation => cookie).join(:credentials, :user_id => :id).get(:user_key)
user_token = users.where(:validation => cookie).join(:credentials, :user_id => :id).get(:user_token)
user_id = users.where(:validation => cookie).get(:id)
primary_number = users.where(:validation => cookie).get(:primary_number)
#search for the right number
@sub_account_client = Twilio::REST::Client.new(user_key, user_token)
@subaccount = @sub_account_client.account
@numbers = @subaccount.available_phone_numbers.get('GB').toll_free.list({})
#buy the number and set the voice/sms url aprameters
@subaccount.incoming_phone_numbers.create(:phone_number => @numbers[0].phone_number, :voice_url => 'http://6c93ce61.ngrok.com/hello', :voice_method => 'GET', :sms_url => 'http://6c93ce61.ngrok.com/receive_sms', :sms_method => 'GET')
phone_number = @numbers[0].phone_number
#[HERE IS THE PROBLEM]sid = @numbers[0].Sid
numbers.insert(:user_id => user_id, :number => phone_number, :sid => sid, :inbound_route => primary_number, :send_to_voicemail => 'false', :show_caller_id => 'false')
return "You just bought: " + phone_number

一切正常,但@numbers[0].Sid或@numbers [0] .phone_number_sid和@numbers[0].number_sid

都没有返回34个字符的电话号码sid

所以有两个问题:

1)特别是如何访问号码Sid? 2)如何在购买号码后看到所有返回的物品?

一直感谢你的帮助......

1 个答案:

答案 0 :(得分:2)

我是Twilio的开发者布道者,希望我能帮忙。

这里的问题是AvailablePhoneNumbers resource没有回复SID,因为它返回的电话号码。您只在购买号码时获得SID。

您要做的是使用IncomingNumbers resource捕获购买号码的响应。因此,从您示例的最后一部分开始,您将执行此操作:

@numbers = @subaccount.available_phone_numbers.get('GB').toll_free.list({})
#buy the number and set the voice/sms url aprameters
@purchased_number = @subaccount.incoming_phone_numbers.create(:phone_number => @numbers[0].phone_number, :voice_url => 'http://6c93ce61.ngrok.com/hello', :voice_method => 'GET', :sms_url => 'http://6c93ce61.ngrok.com/receive_sms', :sms_method => 'GET')
phone_number = @purchased_number.phone_number
sid = @purchased_number.sid
numbers.insert(:user_id => user_id, :number => phone_number, :sid => sid, :inbound_route => primary_number, :send_to_voicemail => 'false', :show_caller_id => 'false')
return "You just bought: " + phone_number

如您所见,我将购买号码的响应分配给@purchased_number,您可以从那里读取sid和phone_number。

如果有帮助,请告诉我。