diff --git a/.DS_Store b/.DS_Store index cb65d46..3f95442 100644 Binary files a/.DS_Store and b/.DS_Store differ diff --git a/.gitignore b/.gitignore index 90d5308..af7dbe7 100644 --- a/.gitignore +++ b/.gitignore @@ -16,7 +16,6 @@ !/log/.keep /tmp/* -/pdfs/* /csvs/result.csv /assets/images/profile_images diff --git a/Gemfile b/Gemfile index b51048b..5dc33b7 100644 --- a/Gemfile +++ b/Gemfile @@ -16,7 +16,8 @@ end gem 'aasm', '~> 4.12', '>= 4.12.3' gem 'record_tag_helper', '~> 1.0' - +# Bundle edge Rails instead: gem 'rails', github: 'rails/rails' +gem 'rails', '~> 5.1.4' # writing and deploying cron jobs. # gem 'whenever', :require => false @@ -64,11 +65,8 @@ gem 'awesome_print' # Authentication solution gem 'devise' -# Bundle edge Rails instead: gem 'rails', github: 'rails/rails' -gem 'rails', '~> 5.1.1' - # Use Puma as the app server -gem 'puma', '~> 3.7' +gem 'puma', '~> 3.10.0' # Use SCSS for stylesheets gem 'sass-rails', '~> 5.0' @@ -124,7 +122,9 @@ group :development, :test do gem 'selenium-webdriver' # Use sqlite3 as the database for Active Record #gem 'sqlite3' +# <<<<<<< HEAD ======= gem 'pg', '0.20.0' +# >>>>>>> c11d02a27049a1f80b4ce61492ed6e5159830aa5 gem 'railroady' end @@ -150,6 +150,7 @@ group :development do # For call-stack profiling flamegraphs (requires Ruby MRI 2.0.0+) gem 'flamegraph' gem 'stackprof' # For Ruby MRI 2.1+ + gem 'pg', '0.20.0' end group :production do diff --git a/Gemfile.lock b/Gemfile.lock index 2a0de37..f821dda 100644 --- a/Gemfile.lock +++ b/Gemfile.lock @@ -374,10 +374,10 @@ DEPENDENCIES pg (= 0.20.0) polling prawn (~> 2.2, >= 2.2.2) - puma (~> 3.7) + puma (~> 3.10.0) rack-mini-profiler railroady - rails (~> 5.1.1) + rails (~> 5.1.4) rails-assets-eq.js rails-assets-jquery rails-assets-mdl-selectfield diff --git a/README.md b/README.md index aa10144..12727d1 100644 --- a/README.md +++ b/README.md @@ -95,4 +95,15 @@ rails s email: user@example.com password: 12345678 ``` -* Search `@CoachAIBot` on [Telegram](https://web.telegram.org/#/login) \ No newline at end of file +* Search `@CoachAIBot` on [Telegram](https://web.telegram.org/#/login) + + + +* In case of server issues, as: "A server is already running. When restarting" + +Try this: + +- bin/bundle exec pumactl start -P tmp/pids/server.pid +- Wait for app to boot +- touch tmp/restart.txt +- App reboots just fine \ No newline at end of file diff --git a/app/controllers/webhooks_controller.rb b/app/controllers/webhooks_controller.rb index 2d5705f..c32e71e 100644 --- a/app/controllers/webhooks_controller.rb +++ b/app/controllers/webhooks_controller.rb @@ -10,7 +10,10 @@ def callback ap 'Rescued from:' ap e ap e.backtrace +<<<<<<< HEAD +======= GeneralActions.new(@user,nil).send_reply 'Forse non ho capito bene cosa intendevi, potresti ripetere per favore?' +>>>>>>> c11d02a27049a1f80b4ce61492ed6e5159830aa5 end render json: nil, status: :ok end diff --git a/config/secrets.yml b/config/secrets.yml index 3f3649e..bf0f584 100644 --- a/config/secrets.yml +++ b/config/secrets.yml @@ -18,8 +18,9 @@ # Environmental secrets are only available for that specific environment. development: +# old_bot_token: 474840015:AAEWUooE8EecBDjYQmskZhLqdI0kaILf5Rg dev_bot_token: 294560170:AAFaB9cQ-hCzQEfYNr6z30gD2K7FeDZ1gVQ - bot_token: 474840015:AAEWUooE8EecBDjYQmskZhLqdI0kaILf5Rg + bot_token: 509838469:AAFGZo_8SgNaV2NnRiH0KKDW2smkgbK-vpc api_ai_token: 22dbf938bd724c8ebec6e0736bcf155e secret_key_base: b76119aa5db9eff7c8478773bb365ec1b87d2d5fb5412d0f7ee85517ff123facdc64d5d713267b61dfa5f443dd2b524822226772b76d33a7efee8e130ca95706 diff --git a/csvs/features.csv b/csvs/features.csv index a32ba4e..6f8831a 100644 --- a/csvs/features.csv +++ b/csvs/features.csv @@ -3,3 +3,4 @@ Id,Insert your age,How would you rate your overall health?,Does your work requir 8,23,4,Mostly sitting (Involves movement less than 30 minutes per week),1-2 times a week,Medium 2,23,4,Mostly moving (Involves movement more than 3days per week),> 3 times a week,Low 3,23,2,Mostly moving (Involves movement more than 3days per week),1-2 times a week,Low +4,30,4,Mostly moving (Involves movement more than 3days per week),1-2 times a week,High diff --git a/csvs/result.csv b/csvs/result.csv index bdaa546..96df39f 100644 --- a/csvs/result.csv +++ b/csvs/result.csv @@ -3,3 +3,4 @@ 1,8,23,4,Mostly sitting (Involves movement less than 30 minutes per week),1-2 times a week,Medium,LOW,LOW 2,2,23,4,Mostly moving (Involves movement more than 3days per week),> 3 times a week,Low,HIGH,HIGH 3,3,23,2,Mostly moving (Involves movement more than 3days per week),1-2 times a week,Low,HIGH,HIGH +4,4,30,4,Mostly moving (Involves movement more than 3days per week),1-2 times a week,High,HIGH,HIGH diff --git a/lib/bot_v2/dispatcher.rb b/lib/bot_v2/dispatcher.rb index 0e87811..0352b58 100644 --- a/lib/bot_v2/dispatcher.rb +++ b/lib/bot_v2/dispatcher.rb @@ -5,20 +5,20 @@ class Dispatcher attr_reader :message, :user - + def initialize(message, user) @message = message @user = user end - + # process the user state def process - + if @user.nil? # user needs to log in LoginManager.new(@message, @user).manage else - + # dispatch in function of user state and text input aasm_state = @user.aasm_state ap "CURRENT USER: #{@user.id} STATE: #{aasm_state}" @@ -26,126 +26,160 @@ def process case aasm_state when 'idle' manage_idle_state(text) - + when 'activities' manage_activities_state(text) - + when 'messages' manage_messages_state(text) - + when 'feedback_plans' manage_feedback_plans_state(text) - + when 'feedback_activities' manage_feedback_activities_state(text) - + when 'feedbacking' manage_feedbacking_state(text) - + when 'questionnaires' manage_questionnaires_state(text) +<<<<<<< HEAD + + else # 'responding' + manage_responding_state(text) + + +======= when 'responding' manage_responding_state(text) else GeneralActions.new(@user,nil).send_reply 'Penso di non aver capito, potresti ripetere per favore?' +>>>>>>> c11d02a27049a1f80b4ce61492ed6e5159830aa5 end - + end end +<<<<<<< HEAD + + def text + @message[:message][:text] + end + + def back_strings + ['Indietro', 'indietro', 'basta', 'Torna Indietro', 'Basta', 'back', 'Torna al Menu', 'Rispondi piu\' tardi/Torna al Menu'] + end + + def tell_me_more_strings + ['Dimmi di piu', 'ulteriori dettagli', 'dettagli', 'di piu', 'Ulteriori Dettagli'] + end + +======= +>>>>>>> c11d02a27049a1f80b4ce61492ed6e5159830aa5 def manage_idle_state(text) case text # Activities & Plans when *activities_strings #/(\w|\s|.)*(([Aa]+[Tt]+[Ii]+[Vv]+[Ii]*[Tt]+[AaÀà]*)|([Pp]+[Ii]+[Aa]+[Nn]+([Ii]+|[Oo]+)))+(\w|\s|.)*/ ap "---------CHECKING ACTIVITIES FOR USER: #{@user.id} ----------" @user.get_activities! - + # Feedbacks when *feedback_strings #/(\w|\s|.)*([Ff]+[Ee]+[Dd]+[Bb]+[Aa]*([Cc]+|[Kk]+))+(\w|\s|.)*/ ap "---------CHECKING FOR FEEDBACK USER: #{@user.id}---------" @user.show_plans_to_feedback! - + # Messages when *messages_strings #/(\w|\s|.)*([Mm]+[Ee]+[Ss]+[Aa]+[Gg]*[Ii])+(\w|\s|.)*/ ap "---------CHECKING MESSAGES FOR USER: #{@user.id}---------" @user.get_messages! - + # Questionnaires when *questionnaires_strings #/(\w|\s|.)*([Qq]+[Uu]+[Ee]+[Ss]+[Tt]+[Ii]*[Oo]+[Nn]+[Aa]*[Rr]+[Ii]*)+(\w|\s|.)*/ ap "---------CHECKING QUESTIONNAIRES FOR USER: #{@user.id}---------" @user.start_questionnaires! - + else +<<<<<<< HEAD + ApiAIRedirector.new(text, @user).redirect + #GeneralActions.new(@user, nil).send_reply("Hey there") +======= #ApiAIRedirector.new(text, @user).redirect GeneralActions.new(@user,nil).send_reply 'Non ho capito! Usa i bottoni per interagire per favore!' +>>>>>>> c11d02a27049a1f80b4ce61492ed6e5159830aa5 end end - + def manage_activities_state(text) ap "---------INFORMING ABOUT ACTIVITIES USER: #{@user.id}---------" case text when *back_strings @user.cancel! +<<<<<<< HEAD + + else # when 'Ulteriori Dettagli' +======= when *tell_me_more_strings +>>>>>>> c11d02a27049a1f80b4ce61492ed6e5159830aa5 @user.get_details! else GeneralActions.new(@user,nil).send_reply 'Non ho capito! Usa i bottoni per interagire per favore!' end end - + def manage_messages_state(text) case text # Respond Later when *back_strings ap "---------USER #{@user.id} CANCELLED MESSAGES RESPONDING ACTION---------" @user.cancel! - + else ap "---------RECEIVING RESPONSE FOR COACH MESSAGE BY USER: #{@user.id}---------" @user.respond!(text) end end - - + + def manage_feedback_plans_state(text) case text when *tell_me_more_strings @user.get_details! - + when *back_strings @user.cancel! - + else @user.show_activities_to_feedback!(text) end end - + def manage_feedback_activities_state(text) case text when *back_strings @user.cancel! - + else @user.start_feedbacking!(text) end end - + def manage_feedbacking_state(text) case text when *back_strings @user.cancel! - + else @user.feedback!(text) end end - - + + def manage_questionnaires_state(text) case text when *back_strings @@ -154,7 +188,7 @@ def manage_questionnaires_state(text) @user.start_responding!(text) end end - + def manage_responding_state(text) case text when *back_strings diff --git a/pdfs/10- Di'GangiMattia-plans.pdf b/pdfs/10- Di'GangiMattia-plans.pdf new file mode 100644 index 0000000..c7a1365 Binary files /dev/null and b/pdfs/10- Di'GangiMattia-plans.pdf differ diff --git a/pdfs/12-PedronWerther-plans.pdf b/pdfs/12-PedronWerther-plans.pdf new file mode 100644 index 0000000..64d7330 Binary files /dev/null and b/pdfs/12-PedronWerther-plans.pdf differ diff --git a/pdfs/14-ConsoliAndrea-plans.pdf b/pdfs/14-ConsoliAndrea-plans.pdf new file mode 100644 index 0000000..ef0f0f9 Binary files /dev/null and b/pdfs/14-ConsoliAndrea-plans.pdf differ diff --git a/pdfs/15-DoniniClaudia-plans.pdf b/pdfs/15-DoniniClaudia-plans.pdf new file mode 100644 index 0000000..591bdaa Binary files /dev/null and b/pdfs/15-DoniniClaudia-plans.pdf differ diff --git a/pdfs/17-SchiavoGianluca-plans.pdf b/pdfs/17-SchiavoGianluca-plans.pdf new file mode 100644 index 0000000..6dba8ba Binary files /dev/null and b/pdfs/17-SchiavoGianluca-plans.pdf differ diff --git a/pdfs/2-CiaghiAaron-plans.pdf b/pdfs/2-CiaghiAaron-plans.pdf new file mode 100644 index 0000000..f7be92d Binary files /dev/null and b/pdfs/2-CiaghiAaron-plans.pdf differ diff --git a/pdfs/21-PalazziniFederico-plans.pdf b/pdfs/21-PalazziniFederico-plans.pdf new file mode 100644 index 0000000..db6beec Binary files /dev/null and b/pdfs/21-PalazziniFederico-plans.pdf differ diff --git a/pdfs/3-MoliniPietro-plans.pdf b/pdfs/3-MoliniPietro-plans.pdf new file mode 100644 index 0000000..0667064 Binary files /dev/null and b/pdfs/3-MoliniPietro-plans.pdf differ diff --git a/pdfs/4-FadhilAhmed -feedbacks.pdf b/pdfs/4-FadhilAhmed -feedbacks.pdf new file mode 100644 index 0000000..d585ba0 Binary files /dev/null and b/pdfs/4-FadhilAhmed -feedbacks.pdf differ diff --git a/pdfs/4-FadhilAhmed -plans.pdf b/pdfs/4-FadhilAhmed -plans.pdf new file mode 100644 index 0000000..13d4b6b Binary files /dev/null and b/pdfs/4-FadhilAhmed -plans.pdf differ diff --git a/pdfs/5-DiaconuMarian-plans.pdf b/pdfs/5-DiaconuMarian-plans.pdf new file mode 100644 index 0000000..73f59a4 Binary files /dev/null and b/pdfs/5-DiaconuMarian-plans.pdf differ diff --git a/pdfs/6-Stoffie Damiano-plans.pdf b/pdfs/6-Stoffie Damiano-plans.pdf new file mode 100644 index 0000000..526246f Binary files /dev/null and b/pdfs/6-Stoffie Damiano-plans.pdf differ diff --git a/pdfs/7-PallaoroGabriele-feedbacks.pdf b/pdfs/7-PallaoroGabriele-feedbacks.pdf new file mode 100644 index 0000000..d54980a Binary files /dev/null and b/pdfs/7-PallaoroGabriele-feedbacks.pdf differ diff --git a/pdfs/7-PallaoroGabriele-plans.pdf b/pdfs/7-PallaoroGabriele-plans.pdf new file mode 100644 index 0000000..49e3565 Binary files /dev/null and b/pdfs/7-PallaoroGabriele-plans.pdf differ diff --git a/telegram_webhook_req b/telegram_webhook_req index 3d68e22..03cdd0b 100644 --- a/telegram_webhook_req +++ b/telegram_webhook_req @@ -1 +1,7 @@ -https://api.telegram.org/bot474840015:AAEWUooE8EecBDjYQmskZhLqdI0kaILf5Rg/setWebhook?url=https://910ca535.ngrok.io/webhooks/telegram_vbc43edbf1614a075954dvd4bfab34l1 +<<<<<<< HEAD +curl https://api.telegram.org/bot294560170:AAFaB9cQ-hCzQEfYNr6z30gD2K7FeDZ1gVQ/setWebhook?url=https://76875f2c.ngrok.io/webhooks/telegram_vbc43edbf1614a075954dvd4bfab34l1 + +curl https://api.telegram.org/bot509838469:AAFGZo_8SgNaV2NnRiH0KKDW2smkgbK-vpc/setWebhook?url=https://76875f2c.ngrok.io/webhooks/telegram_vbc43edbf1614a075954dvd4bfab34l1 +======= +https://api.telegram.org/bot294560170:AAFaB9cQ-hCzQEfYNr6z30gD2K7FeDZ1gVQ/setWebhook?url=https://5521d08d.ngrok.io/webhooks/telegram_vbc43edbf1614a075954dvd4bfab34l1 +>>>>>>> c11d02a27049a1f80b4ce61492ed6e5159830aa5