-
1
require "lita"
-
-
1
Lita.load_locales Dir[File.expand_path(
-
File.join("..", "..", "locales", "*.yml"), __FILE__
-
)]
-
-
1
require "lita/handlers/alexa_news_recorder"
-
-
1
Lita::Handlers::AlexaNewsRecorder.template_root File.expand_path(
-
File.join("..", "..", "templates"),
-
__FILE__
-
)
-
1
require 'pry'
-
1
require 'json'
-
-
1
module Lita
-
1
module Handlers
-
1
class AlexaNewsRecorder < Handler
-
1
http.post '/alexa/recorder', :record_message
-
-
# Rack::Request, Rack::Response
-
1
def record_message(request, response)
-
1
message = extract_message(request.body.string)
-
-
1
robot.trigger(:save_alexa_message, username: 'Alexa News Recorder', message: message)
-
-
1
response.write JSON.dump(alexa_response(message))
-
end
-
-
1
def extract_message(payload)
-
1
parsed = JSON.parse(payload)
-
-
1
value = parsed.dig('request', 'intent', 'slots', 'Message', 'value')
-
-
1
raise ArgumentError if value.nil?
-
1
value
-
end
-
-
1
def alexa_response(message)
-
{
-
"version": "1.0",
-
"sessionAttributes": {
-
},
-
"response": {
-
"outputSpeech": {
-
"type": "PlainText",
-
"text": "Added your message to Lita's flash briefing: #{message}"
-
},
-
"card": {
-
"type": "Simple",
-
"title": "Recorded flash message",
-
"content": "Added your message to Lita's flash briefing: #{message}"
-
},
-
"shouldEndSession": true
-
}
-
2
}
-
end
-
-
1
Lita.register_handler(self)
-
end
-
end
-
end