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
# 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) ⇒ Object



38
39
40
41
42
43
44
# 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

#listObject

list skills by name



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

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

#manifest(name) ⇒ Object



52
53
54
55
56
57
# 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) ⇒ Object Also known as: interaction_model



59
60
61
62
63
64
65
66
67
68
69
70
# 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

#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

#skill_id(name) ⇒ Object



114
115
116
# File 'lib/alexa_skillsdev.rb', line 114

def skill_id(name)
  skill(name)[:skillId]
end

#skills(vendor_id = @vendor_id) ⇒ Object



119
120
121
122
123
124
# 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) ⇒ Object



126
127
128
129
130
131
132
# 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) ⇒ Object



159
160
161
# 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) ⇒ Object



134
135
136
137
138
139
140
141
142
143
144
145
# 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) ⇒ Object



147
148
149
150
151
152
153
154
155
156
157
# 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

#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