Sha256: 04c1ca8a0564e4f8faf74cbce5a84fbdb934dce67d6bd83dec8d09ec5e39d231

Contents?: true

Size: 1.36 KB

Versions: 2

Compression:

Stored size: 1.36 KB

Contents

module Voicemail
  class VoicemailController < ApplicationController

    attr_accessor :recording

    def run
      answer if config.when_to_answer == :before_greeting
      if mailbox
        play_greeting
        answer if config.when_to_answer == :after_greeting
        record_message
        play_recording_confirmation
        hangup
      else
        mailbox_not_found
      end
    end

    def play_greeting
      play mailbox[:greeting_message] || config.default_greeting
    end

    def play_recording_confirmation
      play config.recording_confirmation
    end

    def record_message
      @recording = record record_options

      config.allow_rerecording ? recording_menu : save_recording
    end

    def recording_menu
      ensure_message_saved_if_hangup
      menu recording_url, config.after_record, tries: 3, timeout: 10 do
        match('1') { save_recording }
        match('2') { record_message }

        invalid {  }
        timeout { save_recording }
        failure { save_recording }
      end
    end

  private

    def ensure_message_saved_if_hangup
      call.on_end do
        save_recording unless @saved
      end
    end

    def save_recording
      storage.save_recording mailbox[:id], call.from, recording.complete_event.recording
      @saved = true
    end

    def recording_url
      recording.complete_event.recording.uri
    end
  end
end

Version data entries

2 entries across 2 versions & 1 rubygems

Version Path
voicemail-1.1.1 lib/voicemail/call_controllers/voicemail_controller.rb
voicemail-1.1.0 lib/voicemail/call_controllers/voicemail_controller.rb