Sha256: d7dff2ca13be1d6b678198f14503889b402d57f94d89e54d06459b269653395b

Contents?: true

Size: 1.77 KB

Versions: 4

Compression:

Stored size: 1.77 KB

Contents

# 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 may 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 may write your own steps for handling.
  def handle_invalid_session_id
    do_nothing
  end

  # Automatically called when a transmitted message is filtered/marked as spam.
  # You may write your own steps for handling.
  def handle_message_filtered
    do_nothing
  end

  # Automatically called when an unknown error is returned by the platform.
  # You may write your own steps for handling.
  def handle_unknown_error
    do_nothing
  end

end

Version data entries

4 entries across 4 versions & 1 rubygems

Version Path
stealth-2.0.0.beta7 lib/stealth/generators/builder/bot/controllers/bot_controller.rb
stealth-2.0.0.beta6 lib/stealth/generators/builder/bot/controllers/bot_controller.rb
stealth-2.0.0.beta5 lib/stealth/generators/builder/bot/controllers/bot_controller.rb
stealth-2.0.0.beta4 lib/stealth/generators/builder/bot/controllers/bot_controller.rb