lib/stealth/generators/builder/bot/controllers/bot_controller.rb in stealth-1.1.6 vs lib/stealth/generators/builder/bot/controllers/bot_controller.rb in stealth-2.0.0.beta1

- old
+ new

@@ -1,13 +1,55 @@ +# frozen_string_literal: true + class BotController < Stealth::Controller helper :all def route + if current_message.payload.present? + handle_payloads + # Clear out the payload to prevent duplicate handling + current_message.payload = nil + return + end + + # Allow devs to jump around flows and states by typing: + # /flow_name/state_name or + # /flow_name (jumps to first state) or + # //state_name (jumps to state in current flow) + # (only works for bots in development) + return if dev_jump_detected? + if current_session.present? step_to session: current_session else step_to flow: 'hello', state: 'say_hello' end + end + +private + + # Handle payloads globally since payload buttons remain in the chat + # and we cannot guess in which states they will be tapped. + def handle_payloads + case current_message.payload + when 'developer_restart', 'new_user' + step_to flow: 'hello', state: 'say_hello' + when 'goodbye' + step_to flow: 'goodbye' + end + end + + # Automatically called when clients receive an opt-out error from + # the platform. You can write your own steps for handling. + def handle_opt_out + do_nothing + end + + # Automatically called when clients receive an invalid session_id error from + # the platform. For example, attempting to text a landline. + # You can write your own steps for handling. + def handle_invalid_session_id + do_nothing end end