class Lita::Handlers::AlexaNewsRecorder

Public Instance Methods

alexa_response(message) click to toggle source
# File lib/lita/handlers/alexa_news_recorder.rb, line 29
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
    }
  }
end
extract_message(payload) click to toggle source
# File lib/lita/handlers/alexa_news_recorder.rb, line 20
def extract_message(payload)
  parsed = JSON.parse(payload)

  value = parsed.dig('request', 'intent', 'slots', 'Message', 'value')

  raise ArgumentError if value.nil?
  value
end
record_message(request, response) click to toggle source

Rack::Request, Rack::Response

# File lib/lita/handlers/alexa_news_recorder.rb, line 10
def record_message(request, response)
  Lita.logger.debug(request)

  message = extract_message(request.body.string)

  robot.trigger(:save_alexa_message, username: 'Alexa News Recorder', message: message)

  response.write JSON.dump(alexa_response(message))
end