Class: Voicemail::MailboxPlayMessageController

Inherits:
ApplicationController show all
Defined in:
lib/voicemail/call_controllers/mailbox_play_message_controller.rb

Instance Attribute Summary collapse

Instance Method Summary collapse

Methods inherited from ApplicationController

#main_menu

Constructor Details

#initialize(call, metadata = {}) ⇒ MailboxPlayMessageController

Returns a new instance of MailboxPlayMessageController.



6
7
8
9
10
# File 'lib/voicemail/call_controllers/mailbox_play_message_controller.rb', line 6

def initialize(call, ={})
  @new_or_saved = [:new_or_saved] || :new

  super call, 
end

Instance Attribute Details

#new_or_savedObject

Returns the value of attribute new_or_saved.



4
5
6
# File 'lib/voicemail/call_controllers/mailbox_play_message_controller.rb', line 4

def new_or_saved
  @new_or_saved
end

Instance Method Details

#archive_or_unarchive_messageObject



62
63
64
65
66
67
68
# File 'lib/voicemail/call_controllers/mailbox_play_message_controller.rb', line 62

def archive_or_unarchive_message
  if new_or_saved == :new
    storage.archive_message mailbox[:id], current_message[:id]
  else
    storage.unarchive_message mailbox[:id], current_message[:id]
  end
end

#current_messageObject



74
75
76
# File 'lib/voicemail/call_controllers/mailbox_play_message_controller.rb', line 74

def current_message
  @message
end

#delete_messageObject



70
71
72
# File 'lib/voicemail/call_controllers/mailbox_play_message_controller.rb', line 70

def delete_message
  storage.delete_message mailbox[:id], current_message[:id]
end

#intro_messageObject



46
47
48
# File 'lib/voicemail/call_controllers/mailbox_play_message_controller.rb', line 46

def intro_message
  invoke MailboxPlayMessageIntroController, message: current_message, mailbox: mailbox[:id], storage: storage
end

#load_messageObject

Raises:

  • (ArgumentError)


78
79
80
81
# File 'lib/voicemail/call_controllers/mailbox_play_message_controller.rb', line 78

def load_message
  @message = [:message] || nil
  raise ArgumentError, "MailboxPlayMessageController needs a valid message passed to it" unless @message
end

#message_uriObject



83
84
85
# File 'lib/voicemail/call_controllers/mailbox_play_message_controller.rb', line 83

def message_uri
  current_message[:uri]
end

#play_messageObject



18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
# File 'lib/voicemail/call_controllers/mailbox_play_message_controller.rb', line 18

def play_message
  menu message_uri, play_message_menu, timeout: config.menu_timeout, tries: config.menu_tries do
    match 1 do
      archive_or_unarchive_message
    end

    match 5 do
      delete_message
    end

    match(7) { rewind_message }
    match(9) { main_menu }

    timeout do
      play config.mailbox.menu_timeout_message
    end

    invalid do
      play config.mailbox.menu_invalid_message
    end

    failure do
      play config.mailbox.menu_failure_message
      hangup
    end
  end
end

#play_message_menuObject



50
51
52
53
54
55
56
# File 'lib/voicemail/call_controllers/mailbox_play_message_controller.rb', line 50

def play_message_menu
  if new_or_saved == :new
    config.messages.menu_new
  else
    config.messages.menu_saved
  end
end

#rewind_messageObject



58
59
60
# File 'lib/voicemail/call_controllers/mailbox_play_message_controller.rb', line 58

def rewind_message
  play_message
end

#runObject



12
13
14
15
16
# File 'lib/voicemail/call_controllers/mailbox_play_message_controller.rb', line 12

def run
  load_message
  intro_message
  play_message
end