class VoiceLabs::VoiceInsights
Public Class Methods
new(appToken, session)
click to toggle source
# File lib/voicelabs.rb, line 14 def initialize(appToken, session) if session == nil or appToken == nil or appToken.length == 0 puts "ERROR: invalid session or appToken passed" return end if !session.key?("user") or !session["user"].key?("userId") puts "ERROR: Cannot find User details in the session object" return end if !session.key?("sessionId") puts "ERROR: No sessionId found in session object" return end if @session and @session['sessionId'] == session['sessionId'] puts "Session Exists: " + @session['sessionId'] return self end # Instance variables @appToken = appToken @session = session p = Hash.new p['app_token'] = appToken p['user_hashed_id'] = Digest::MD5.hexdigest(session['user']['userId']) p['session_id'] = session['sessionId']; p['event_type'] = 'INITIALIZE' p['data'] = nil sendVLEvent(p) end
Public Instance Methods
sendVLEvent(payload)
click to toggle source
utility method of posting event data to voicelabs
# File lib/voicelabs.rb, line 111 def sendVLEvent(payload) begin # puts "payload: " + payload.to_json sURL = "https://api.voicelabs.co/events?auth_token=" + @appToken + "&sdk=ruby_0.0.1" response = RestClient::Request.execute(method: :post, url: sURL, payload: payload.to_json, headers: {content_type: :json}, timeout: 1) puts "response: " + response.to_json rescue Exception => e puts "Exception occurred: msg = " + e.message puts e.backtrace.inspect end end
track(intent_name, intent_request, response)
click to toggle source
# File lib/voicelabs.rb, line 51 def track(intent_name, intent_request, response) if(!intent_name) puts "ERROR: intent_name cannot be null" return end if @session == nil puts "ERROR: Voice Insights has not been initialized. Initalize() method need to have been invoked before tracking" return end p = Hash.new p['app_token'] = @appToken p['user_hashed_id'] = Digest::MD5.hexdigest(@session['user']['userId']) p['session_id'] = @session['sessionId']; p['event_type'] = 'SPEECH' p['intent'] = intent_name p['data'] = {} #set intent_request if intent_request.is_a?(Hash) and intent_request.key?('intent') and intent_request['intent'].key?('slots') p['data']['metadata'] = intent_request['intent']['slots'] else p['data']['metadata'] = nil end #set data if response.is_a? String p['data']['speech'] = response elsif response and response.key?('response') and response['response'].key?('outputSpeech') speechObj = response['response']['outputSpeech'] if speechObj.key?('type') if speechObj['type'] == 'SSML' p['data']['speech'] = response['response']['outputSpeech']['ssml'] elsif speechObj['type'] == 'PlainText' p['data']['speech'] = response['response']['outputSpeech']['text'] else puts "ERROR: passed a response object with an unknown Type" end else puts "ERROR: passed a response object thats not an Alexa response" end else p['data']['speech'] = nil end resp = sendVLEvent(p) return resp end