class AlexaSkillsDev

Attributes

vendor_id[R]

Public Class Methods

new(accesskey, url: 'https://api.amazonalexa.com', debug: false) click to toggle source
# File lib/alexa_skillsdev.rb, line 22
def initialize(accesskey, url: 'https://api.amazonalexa.com', debug: false)
  
  @accesskey, @url_base, @debug = accesskey, url, debug

end

Public Instance Methods

create_skill(obj) click to toggle source
# File lib/alexa_skillsdev.rb, line 28
def create_skill(obj)
  
  if obj['vendorId'].nil? or obj['vendorId'].empty? then
    obj['vendorId'] = vendor_id 
  end
  
  post "/v1/skills", obj
  
end
delete_skill(name=nil, id: nil) click to toggle source
# File lib/alexa_skillsdev.rb, line 38
def delete_skill(name=nil, id: nil)
  
  skill_id = name ? skill(name)[:skillId] : id
  
  delete "/v1/skills/#{skill_id}/"
  
end
interaction_model(name=nil, id: nil, stage: 'development', locale: nil)
Alias for: model
list() click to toggle source

list skills by name

# File lib/alexa_skillsdev.rb, line 48
def list()
  self.skills[:skills].map {|x| x[:nameByLocale].to_a[0].last}
end
manifest(name) click to toggle source
# File lib/alexa_skillsdev.rb, line 52
def manifest(name)
  
  r = skill(name)
  get r[:_links][:self][:href], symbolize: false
  
end
model(name=nil, id: nil, stage: 'development', locale: nil) click to toggle source
# File lib/alexa_skillsdev.rb, line 59
def model(name=nil, id: nil, stage: 'development', locale: nil)    
  
  if name then
    r = skill(name)      
    id, stage, locale = r[:skillId], r[:stage], r[:nameByLocale].keys.first
  end
  
  puts  "id: %s stage: %s locale: %s" % [id, stage, locale] if @debug
  get "/v1/skills/#{id}/stages/#{stage}/interactionModel/locales/#{locale}", 
      smybolize: false
  
end
Also aliased as: interaction_model
skill(name=nil, id: nil, stage: 'development', locale: nil) click to toggle source
# File lib/alexa_skillsdev.rb, line 93
def skill(name=nil, id: nil, stage: 'development', locale: nil)
  
  if name then
    
    r = self.skills()[:skills].select do |x|
      
      if locale then
        x[:nameByLocale][locale].downcase == name.downcase
      else
        x[:nameByLocale].to_a[0].last.downcase == name.downcase
      end
    end
    
    return r.first if r.any?
    
  end
  
  get "/v1/skills/#{id}/stages/#{stage}/manifest"

end
skill_id(name) click to toggle source
# File lib/alexa_skillsdev.rb, line 114
def skill_id(name)
  skill(name)[:skillId]
end
skills(vendor_id=@vendor_id) click to toggle source
# File lib/alexa_skillsdev.rb, line 119
def skills(vendor_id=@vendor_id)
  
  vendor_id ||= vendor[:id]
  get "/v1/skills?vendorId=#{vendor_id}"

end
status(name) click to toggle source
# File lib/alexa_skillsdev.rb, line 126
def status(name)
  
  r = skill(name)
  #get "/v1/skills/#{r[:skillId]}/status?resource=name1&resource=name2"
  get "/v1/skills/#{r[:skillId]}/status"
  
end
update_manifest(skill_name, manifest) click to toggle source
# File lib/alexa_skillsdev.rb, line 159
def update_manifest(skill_name, manifest)
  update_skill skill_name, manifest: manifest
end
update_model(name=nil, model2=nil, id: nil, stage: 'development', locale: nil, model: model2) click to toggle source
# File lib/alexa_skillsdev.rb, line 134
def update_model(name=nil, model2=nil, id: nil, stage: 'development', locale: nil, 
                 model: model2)    
  
  if name then
    r = skill(name)      
    id, stage, locale = r[:skillId], r[:stage], r[:nameByLocale].keys.first
  end
  
  put "/v1/skills/#{id}/stages/#{stage}/interactionModel/locales/#{locale}",
      model
  
end
update_skill(name=nil, id: nil, stage: 'development', locale: nil, manifest: obj) click to toggle source
# File lib/alexa_skillsdev.rb, line 147
def update_skill(name=nil, id: nil, stage: 'development', locale: nil, 
                 manifest: obj)
  
  if name then
    r = skill(name)      
    id, stage, locale = r[:skillId], r[:stage], r[:nameByLocale].keys.first
  end
  
  put "/v1/skills/#{id}/stages/#{stage}/manifest", manifest
  
end
vendor() click to toggle source
# File lib/alexa_skillsdev.rb, line 74
def vendor()

  h = self.vendors()[:vendors].first
  @vendor_id = h[:id]
  h

end
vendors() click to toggle source
# File lib/alexa_skillsdev.rb, line 87
def vendors()
  
  get '/v1/vendors'

end

Protected Instance Methods

delete(uri) click to toggle source
# File lib/alexa_skillsdev.rb, line 166
def delete(uri)

  r = RestClient.delete(@url_base + uri, 
                     headers={:Authorization => @accesskey})
  JSON.parse r.body, symbolize_names: true

end
get(uri, symbolize: true) click to toggle source
# File lib/alexa_skillsdev.rb, line 175
def get(uri, symbolize: true)

  r = RestClient.get(@url_base + uri, \
    headers={'Authorization' => @accesskey})
  JSON.parse r.body, symbolize_names: symbolize

end
post(uri, h) click to toggle source
# File lib/alexa_skillsdev.rb, line 183
def post(uri, h)

  r = RestClient.post(@url_base + uri, h.to_json, 
                     headers={:Authorization => @accesskey, 
                              content_type: :json, accept: :json})
  JSON.parse r.body, symbolize_names: true

end
put(uri, h) click to toggle source
# File lib/alexa_skillsdev.rb, line 192
def put(uri, h)

  r = RestClient.put(@url_base + uri, h.to_json, 
                     headers={:Authorization => @accesskey, 
                              content_type: :json, accept: :json})
  JSON.parse r.body, symbolize_names: true

end