Class: AlexaSkillsDev

Inherits:
Object
  • Object
show all
Defined in:
lib/alexa_skillsdev.rb

Instance Attribute Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize(accesskey, url: 'https://api.amazonalexa.com', debug: false) ⇒ AlexaSkillsDev

Returns a new instance of AlexaSkillsDev.



22
23
24
25
26
# 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

Instance Attribute Details

#vendor_idObject (readonly)

Returns the value of attribute vendor_id.



20
21
22
# File 'lib/alexa_skillsdev.rb', line 20

def vendor_id
  @vendor_id
end

Instance Method Details

#create_skill(obj) ⇒ Object



28
29
30
31
32
33
34
35
36
37
# File 'lib/alexa_skillsdev.rb', line 28

def create_skill(obj)
  
  if obj['vendorId'].nil? or obj['vendorId'].empty? then
    vendor()
    obj['vendorId'] = vendor_id 
  end
  
  post "/v1/skills", obj
  
end

#delete_skill(name = nil, id: nil) ⇒ Object



39
40
41
42
43
44
45
# File 'lib/alexa_skillsdev.rb', line 39

def delete_skill(name=nil, id: nil)
  
  skill_id = name ? skill(name)[:skillId] : id
  
  delete "/v1/skills/#{skill_id}/"
  
end

#listObject

list skills by name



49
50
51
# File 'lib/alexa_skillsdev.rb', line 49

def list()
  self.skills[:skills].map {|x| x[:nameByLocale].to_a[0].last}
end

#manifest(name) ⇒ Object



53
54
55
56
57
58
# File 'lib/alexa_skillsdev.rb', line 53

def manifest(name)
  
  r = skill(name)
  get r[:_links][:self][:href]
  
end

#model(name = nil, id: nil, stage: 'development', locale: nil) ⇒ Object Also known as: interaction_model



60
61
62
63
64
65
66
67
68
69
70
# File 'lib/alexa_skillsdev.rb', line 60

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}"
  
end

#skill(name = nil, id: nil, stage: 'development', locale: nil) ⇒ Object



93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
# 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

#skills(vendor_id = @vendor_id) ⇒ Object



115
116
117
118
119
120
# File 'lib/alexa_skillsdev.rb', line 115

def skills(vendor_id=@vendor_id)
  
  vendor_id ||= vendor[:id]
  get "/v1/skills?vendorId=#{vendor_id}"

end

#status(name) ⇒ Object



122
123
124
125
126
127
128
# File 'lib/alexa_skillsdev.rb', line 122

def status(name)
  
  r = skill(name)
  #get "/v1/skills/#{r[:skillId]}/status?resource=name1&resource=name2"
  get "/v1/skills/#{r[:skillId]}/status"
  
end

#update_model(name = nil, id: nil, stage: 'development', locale: nil, model: obj) ⇒ Object



130
131
132
133
134
135
136
137
138
139
140
# File 'lib/alexa_skillsdev.rb', line 130

def update_model(name=nil, id: nil, stage: 'development', locale: nil, 
                 model: 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}/interactionModel/locales/#{locale}", obj
  
end

#update_skill(name = nil, id: nil, stage: 'development', locale: nil, manifest: obj) ⇒ Object



142
143
144
145
146
147
148
149
150
151
152
# File 'lib/alexa_skillsdev.rb', line 142

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", obj
  
end

#vendorObject



74
75
76
77
78
79
80
# File 'lib/alexa_skillsdev.rb', line 74

def vendor()

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

end

#vendorsObject



87
88
89
90
91
# File 'lib/alexa_skillsdev.rb', line 87

def vendors()
  
  get '/v1/vendors'

end