class AlexaSkillResponse
Public Class Methods
new(package, debug: false, rsc: nil, whitelist: {users: nil, devices: nil})
click to toggle source
# File lib/alexa_skillresponse.rb, line 12 def initialize(package, debug: false, rsc: nil, whitelist: {users: nil, devices: nil}) @rscript = RScript.new(type: 'response', debug: debug) @package, @debug, @rsc = package, debug, rsc puts '@package: ' + @package.inspect if @debug @users, @devices = whitelist[:users], whitelist[:devices] puts '@user_list: ' + @user_list.inspect if @debug end
Public Instance Methods
reset()
click to toggle source
# File lib/alexa_skillresponse.rb, line 24 def reset() @rscript.reset end
Also aliased as: reload
run(h)
click to toggle source
# File lib/alexa_skillresponse.rb, line 30 def run(h) puts 'inside run: '.info if @debug userid = h[:session][:user][:userId] puts ('userid: ' + userid.inspect).debug if @debug deviceid = h[:context][:System][:device][:deviceId] puts ('deviceid: ' + userid.inspect).debug if @debug if @users and not @users.include? userid then return output('Sorry, unauthorized user.') else user = @users[userid] puts ('user: ' + user.inspect).debug if @debug end if @devices and not @devices.include? deviceid then return output('Sorry, unauthorized device.') else device = @devices[deviceid] puts ('device: ' + device.inspect).debug if @debug end req = h[:request] id = req[:type] == 'IntentRequest' ? req[:intent][:name] : 'welcome' puts 'id: ' + id.inspect if @debug code, _, attr = @rscript.read ['//response:' + id, @package] if @rsc then rsc = @rsc puts 'rsc found'.info if @debug if rsc.registry and user and device then e = rsc.registry.get_key 'hkey_apps/alexa/accounts' euserid = e.xpath('*/id').find {|x| x.text.to_s == userid} if euserid then puts ('sending to the registry').info if @debug rsc.registry.set_key("hkey_apps/alexa/accounts/" + euserid.parent.name + "/lastsession/device", device) end end end puts 'code:' + code.inspect if @debug text, mimetype = eval(code) return ssml_output text if text =~ /<speak/ case mimetype when 'application/json' txt_output text when 'application/ssml' ssml_output text else txt_output text, attentive: attr[:attentive] end end
Private Instance Methods
output(s)
click to toggle source
# File lib/alexa_skillresponse.rb, line 98 def output(s) h = { version: "1.0", response: { outputSpeech: { type: "PlainText", text: "#{s}" } } } end
ssml_output(s)
click to toggle source
# File lib/alexa_skillresponse.rb, line 112 def ssml_output(s) h = { version: "1.0", response: { outputSpeech: { type: "SSML", ssml: "" } } } h[:response][:outputSpeech][:ssml] = s h end
txt_output(s='I hear you', attentive: false)
click to toggle source
# File lib/alexa_skillresponse.rb, line 129 def txt_output(s='I hear you', attentive: false) h = { version: "1.0", response: { outputSpeech: { type: "PlainText", text: "" } } } h[:response][:outputSpeech][:text] = s puts 'attentive: ' + attentive.inspect if @debug h[:response][:shouldEndSession] = (attentive == 'true') ? false : true h end