Class: Lita::Handlers::AlexaNewsRecorder

Inherits:
Handler
  • Object
show all
Defined in:
lib/lita/handlers/alexa_news_recorder.rb

Instance Method Summary collapse

Instance Method Details

#alexa_response(message) ⇒ Object



27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
# File 'lib/lita/handlers/alexa_news_recorder.rb', line 27

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

Raises:

  • (ArgumentError)


18
19
20
21
22
23
24
25
# File 'lib/lita/handlers/alexa_news_recorder.rb', line 18

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

Rack::Request, Rack::Response



10
11
12
13
14
15
16
# File 'lib/lita/handlers/alexa_news_recorder.rb', line 10

def record_message(request, response)
  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