如何在隐形机器人框架中设置路由方法before_action?



我正在尝试在我的隐形机器人中使用before_action's回调,但不起作用。我不知道这是否是一种正确的遵循方式。

这是我的代码:

class BotController < Stealth::Controller
helper :all
before_action :print_this, only: :route

def route
if current_session.present?
step_to session: current_session
else
step_to flow: 'hello', state: 'say_hello'
end
end
def print_this
puts "nnnnn aaaaaaaaaaaaaaaaaaa nnnn"
end
end

没有任何反应,没有错误,没有打印消息。

可能出了什么问题?

编辑:

before_action在另一个控制器中工作,但在BotController中不起作用

编辑2:这是一个带有行为的日志:

1(使用before_action :print_this, only: :route

sidekiq_1   | 2018-09-12T17:13:10.544Z 1 TID-gt9nk8dzx Stealth::Services::HandleMessageJob JID-1b773e7908fcb72b7aa10a3d INFO: start
sidekiq_1   | [previous_session] User 160479129292600: setting to 
sidekiq_1   | [session] User 160479129292600: setting session to hello->say_hello
sidekiq_1   | [previous_session] User 160479129292600: setting to hello->say_hello
sidekiq_1   | [session] User 160479129292600: setting session to main->show_menu    
sidekiq_1   | 2018-09-12T17:13:11.738Z 1 TID-gt9nk8dzx Stealth::Services::HandleMessageJob JID-1b773e7908fcb72b7aa10a3d INFO: done: 1.194 sec

2(使用before_action :print_this, only: :say_hello(say_hello是这里的HellosController < BotController工作的一个动作

sidekiq_1   | 2018-09-12T17:18:24.751Z 1 TID-gte80drk9 Stealth::Services::HandleMessageJob JID-62e6901208770b68439ac083 INFO: start
sidekiq_1   | [previous_session] User 1604791292926176: setting to atendimento->say_meus_atendimentos
sidekiq_1   | [session] User 1604791292926176: setting session to hello->say_hello
sidekiq_1   | 
sidekiq_1   | 
sidekiq_1   | 
sidekiq_1   | 
sidekiq_1   | 
sidekiq_1   |  aaaaaaaaaaaaaaaaaaa 
sidekiq_1   | 
sidekiq_1   | 
sidekiq_1   | 
sidekiq_1   | [previous_session] User 1604791292926176: setting to hello->say_hello
sidekiq_1   | [session] User 1604791292926176: setting session to main->show_menu
sidekiq_1   | 2018-09-12T17:18:25.524Z 1 TID-gte80drk9 Stealth::Services::HandleMessageJob JID-62e6901208770b68439ac083 INFO: done: 0.772 sec

这是,不是只在BotController工作。

好的,我知道这不起作用的原因,路由不是一个动作,只是一个特殊的Stealth::Controller方法,所以回调不会被before_action或其他回调调用。

最新更新