我使用红宝石,sinatra和twilio。以下代码会购买一个数字,然后将该数字插入到我的数据库中。我还想获得返回的34个字符的电话号码“sid”并将其插入到我的数据库中,但我不知道如何访问它。当我使用REST API购买Twilio号码时,如何获得电话号码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
这一切工作正常,但34字符的电话号码SID不是无论是@numbers[0].Sid
也不@numbers [0] .phone_number_sid也不@numbers[0].number_sid
所以有返回2问题:
1)特别是如何访问Sid号码? 2)如何查看购买号码后返回的所有对象?
感谢您一如既往的帮助......
干杯菲尔。感谢上帝。这很令人困惑,因为列出了“资源属性”,在相关的api页面上,例如Sid,但返回的对象是sid(带有一个小的“s”)。或者更容易混淆的“FriendlyName”变成“friendly_name”;所以这是一个可怜的家伙。这就解释了我的问题的第二部分:一般来说,我怎样才能看到所有返回的对象?有任何想法吗? – user1903663 2014-11-03 08:14:01
是的,你是对的,Ruby库并没有遵循核心文档。这是因为它更像Ruby开发人员所期望的那样,因为我们倾向于使用较低的下划线方法名称。所以,你可以推断,如果文档说'FriendlyName'将会有'friendly_name'属性。为了查看Twilio对象的属性,可以尝试记录'object.inspect'的结果,尽管我不确定它是否会显示所有内容。尽管你可以相信文档和转换方法。 – philnash 2014-11-03 08:42:10
欢呼菲尔,毫无疑问,我们将再次做生意! – user1903663 2014-11-04 08:04:21