slack-ruby / slack-ruby-bot-server-events

Slack commands, interactive buttons, and events extension for slack-ruby-bot-server.
MIT License
71 stars 10 forks source link

Action processing error #4

Closed ghost closed 3 years ago

ghost commented 3 years ago

An error appears when the interactive button is pressed, the action remains unprocessed:

01:12:32 web.1 | W, [2020-10-28T01:12:32.771673 #12006] WARN -- : Grape::Exceptions::ValidationErrors: payload[callback_id] is missing, payload[actions][0][value] is missing

ghost commented 3 years ago

It seems this error happens inside lib/slack-ruby-bot-server-events/api/endpoints/slack/actions_endpoint.rb

dara-rockwell commented 3 years ago

Our team attempted to help fix this problem, but there was a problem when running specs.

Perhaps there's a version problem with rack-test?

An error occurred while loading ./spec/slack-ruby-bot-server-events/version_spec.rb.
Failure/Error: include Rack::Test::Methods

NameError:
  uninitialized constant Rack::Test
crazyoptimist commented 3 years ago

This issue is related to the version of interactive message template. Currently this gem works with legacy template and you can find a basic working example here @deadalice , @he-dslieker Checkout the docs for more info.


Anyhow, I was about to create a new issue for this but just commenting here now @dblock Callback is run in this part, and we will have to use action_id instead of callback_id in the updated version. Need to rewrite actions_endpoint and its tests. Here is a very basic template we need to support and move forward.

crazyoptimist commented 3 years ago

:D Code is not changed but README seems to be changed already. Interesting @dblock

crazyoptimist commented 3 years ago

I forked the repo to resolve this issue but got some error when running test. 😢 Here is my output of bundle exec rake command:

Running RuboCop...
The following cops were added to RuboCop, but are not configured. Please set Enabled to either `true` or `false` in your `.rubocop.yml` file:
 - Lint/RaiseException (0.81)
 - Lint/StructNewOverride (0.81)
 - Style/HashEachMethods (0.80)
 - Style/HashTransformKeys (0.80)
 - Style/HashTransformValues (0.80)
For more information: https://docs.rubocop.org/en/latest/versioning/
Inspecting 33 files
.................................

33 files inspected, no offenses detected
/usr/local/bin/ruby -I/usr/local/bundle/gems/rspec-core-3.10.1/lib:/usr/local/bundle/gems/rspec-support-3.10.1/lib /usr/local/bundle/gems/rspec-core-3.10.1/exe/rspec spec/slack-ruby-bot-server-events/api/endpoints/slack/actions_endpoint_spec.rb spec/slack-ruby-bot-server-events/api/endpoints/slack/commands_endpoint_spec.rb spec/slack-ruby-bot-server-events/api/endpoints/slack/events_endpoint_spec.rb spec/slack-ruby-bot-server-events/config_spec.rb spec/slack-ruby-bot-server-events/version_spec.rb

An error occurred while loading ./spec/slack-ruby-bot-server-events/api/endpoints/slack/actions_endpoint_spec.rb.
Failure/Error: Bundler.require

NameError:
  uninitialized constant ActiveModel::Serializers::Xml
# /usr/local/bundle/gems/mongoid-4.0.0.beta2/lib/mongoid/composable.rb:35:in `<module:Composable>'
# /usr/local/bundle/gems/mongoid-4.0.0.beta2/lib/mongoid/composable.rb:23:in `<module:Mongoid>'
# /usr/local/bundle/gems/mongoid-4.0.0.beta2/lib/mongoid/composable.rb:18:in `<top (required)>'
# /usr/local/bundle/gems/mongoid-4.0.0.beta2/lib/mongoid/document.rb:17:in `require'
# /usr/local/bundle/gems/mongoid-4.0.0.beta2/lib/mongoid/document.rb:17:in `<top (required)>'
# /usr/local/bundle/gems/mongoid-4.0.0.beta2/lib/mongoid.rb:22:in `require'
# /usr/local/bundle/gems/mongoid-4.0.0.beta2/lib/mongoid.rb:22:in `<top (required)>'
# /usr/local/bundle/gems/kaminari-mongoid-1.0.1/lib/kaminari/mongoid.rb:3:in `require'
# /usr/local/bundle/gems/kaminari-mongoid-1.0.1/lib/kaminari/mongoid.rb:3:in `<top (required)>'
# ./spec/spec_helper.rb:6:in `<top (required)>'
# ./spec/slack-ruby-bot-server-events/api/endpoints/slack/actions_endpoint_spec.rb:3:in `require'
# ./spec/slack-ruby-bot-server-events/api/endpoints/slack/actions_endpoint_spec.rb:3:in `<top (required)>'
# ------------------
# --- Caused by: ---
# LoadError:
#   cannot load such file -- kaminari-mongoid
#   ./spec/spec_helper.rb:6:in `<top (required)>'

An error occurred while loading ./spec/slack-ruby-bot-server-events/api/endpoints/slack/commands_endpoint_spec.rb.
Failure/Error: Bundler.require

NameError:
  uninitialized constant ActiveModel::Serializers::Xml
# /usr/local/bundle/gems/mongoid-4.0.0.beta2/lib/mongoid/composable.rb:35:in `<module:Composable>'
# /usr/local/bundle/gems/mongoid-4.0.0.beta2/lib/mongoid/composable.rb:23:in `<module:Mongoid>'
# /usr/local/bundle/gems/mongoid-4.0.0.beta2/lib/mongoid/composable.rb:18:in `<top (required)>'
# /usr/local/bundle/gems/mongoid-4.0.0.beta2/lib/mongoid/document.rb:17:in `require'
# /usr/local/bundle/gems/mongoid-4.0.0.beta2/lib/mongoid/document.rb:17:in `<top (required)>'
# /usr/local/bundle/gems/mongoid-4.0.0.beta2/lib/mongoid.rb:22:in `require'
# /usr/local/bundle/gems/mongoid-4.0.0.beta2/lib/mongoid.rb:22:in `<top (required)>'
# /usr/local/bundle/gems/kaminari-mongoid-1.0.1/lib/kaminari/mongoid.rb:3:in `require'
# /usr/local/bundle/gems/kaminari-mongoid-1.0.1/lib/kaminari/mongoid.rb:3:in `<top (required)>'
# ./spec/spec_helper.rb:6:in `<top (required)>'
# ./spec/slack-ruby-bot-server-events/api/endpoints/slack/commands_endpoint_spec.rb:3:in `require'
# ./spec/slack-ruby-bot-server-events/api/endpoints/slack/commands_endpoint_spec.rb:3:in `<top (required)>'
# ------------------
# --- Caused by: ---
# LoadError:
#   cannot load such file -- kaminari-mongoid
#   ./spec/spec_helper.rb:6:in `<top (required)>'

An error occurred while loading ./spec/slack-ruby-bot-server-events/api/endpoints/slack/events_endpoint_spec.rb.
Failure/Error: Bundler.require

NameError:
  uninitialized constant ActiveModel::Serializers::Xml
# /usr/local/bundle/gems/mongoid-4.0.0.beta2/lib/mongoid/composable.rb:35:in `<module:Composable>'
# /usr/local/bundle/gems/mongoid-4.0.0.beta2/lib/mongoid/composable.rb:23:in `<module:Mongoid>'
# /usr/local/bundle/gems/mongoid-4.0.0.beta2/lib/mongoid/composable.rb:18:in `<top (required)>'
# /usr/local/bundle/gems/mongoid-4.0.0.beta2/lib/mongoid/document.rb:17:in `require'
# /usr/local/bundle/gems/mongoid-4.0.0.beta2/lib/mongoid/document.rb:17:in `<top (required)>'
# /usr/local/bundle/gems/mongoid-4.0.0.beta2/lib/mongoid.rb:22:in `require'
# /usr/local/bundle/gems/mongoid-4.0.0.beta2/lib/mongoid.rb:22:in `<top (required)>'
# /usr/local/bundle/gems/kaminari-mongoid-1.0.1/lib/kaminari/mongoid.rb:3:in `require'
# /usr/local/bundle/gems/kaminari-mongoid-1.0.1/lib/kaminari/mongoid.rb:3:in `<top (required)>'
# ./spec/spec_helper.rb:6:in `<top (required)>'
# ./spec/slack-ruby-bot-server-events/api/endpoints/slack/events_endpoint_spec.rb:3:in `require'
# ./spec/slack-ruby-bot-server-events/api/endpoints/slack/events_endpoint_spec.rb:3:in `<top (required)>'
# ------------------
# --- Caused by: ---
# LoadError:
#   cannot load such file -- kaminari-mongoid
#   ./spec/spec_helper.rb:6:in `<top (required)>'

An error occurred while loading ./spec/slack-ruby-bot-server-events/config_spec.rb.
Failure/Error: Bundler.require

NameError:
  uninitialized constant ActiveModel::Serializers::Xml
# /usr/local/bundle/gems/mongoid-4.0.0.beta2/lib/mongoid/composable.rb:35:in `<module:Composable>'
# /usr/local/bundle/gems/mongoid-4.0.0.beta2/lib/mongoid/composable.rb:23:in `<module:Mongoid>'
# /usr/local/bundle/gems/mongoid-4.0.0.beta2/lib/mongoid/composable.rb:18:in `<top (required)>'
# /usr/local/bundle/gems/mongoid-4.0.0.beta2/lib/mongoid/document.rb:17:in `require'
# /usr/local/bundle/gems/mongoid-4.0.0.beta2/lib/mongoid/document.rb:17:in `<top (required)>'
# /usr/local/bundle/gems/mongoid-4.0.0.beta2/lib/mongoid.rb:22:in `require'
# /usr/local/bundle/gems/mongoid-4.0.0.beta2/lib/mongoid.rb:22:in `<top (required)>'
# /usr/local/bundle/gems/kaminari-mongoid-1.0.1/lib/kaminari/mongoid.rb:3:in `require'
# /usr/local/bundle/gems/kaminari-mongoid-1.0.1/lib/kaminari/mongoid.rb:3:in `<top (required)>'
# ./spec/spec_helper.rb:6:in `<top (required)>'
# ./spec/slack-ruby-bot-server-events/config_spec.rb:3:in `require'
# ./spec/slack-ruby-bot-server-events/config_spec.rb:3:in `<top (required)>'
# ------------------
# --- Caused by: ---
# LoadError:
#   cannot load such file -- kaminari-mongoid
#   ./spec/spec_helper.rb:6:in `<top (required)>'

An error occurred while loading ./spec/slack-ruby-bot-server-events/version_spec.rb.
Failure/Error: Bundler.require

NameError:
  uninitialized constant ActiveModel::Serializers::Xml
# /usr/local/bundle/gems/mongoid-4.0.0.beta2/lib/mongoid/composable.rb:35:in `<module:Composable>'
# /usr/local/bundle/gems/mongoid-4.0.0.beta2/lib/mongoid/composable.rb:23:in `<module:Mongoid>'
# /usr/local/bundle/gems/mongoid-4.0.0.beta2/lib/mongoid/composable.rb:18:in `<top (required)>'
# /usr/local/bundle/gems/mongoid-4.0.0.beta2/lib/mongoid/document.rb:17:in `require'
# /usr/local/bundle/gems/mongoid-4.0.0.beta2/lib/mongoid/document.rb:17:in `<top (required)>'
# /usr/local/bundle/gems/mongoid-4.0.0.beta2/lib/mongoid.rb:22:in `require'
# /usr/local/bundle/gems/mongoid-4.0.0.beta2/lib/mongoid.rb:22:in `<top (required)>'
# /usr/local/bundle/gems/kaminari-mongoid-1.0.1/lib/kaminari/mongoid.rb:3:in `require'
# /usr/local/bundle/gems/kaminari-mongoid-1.0.1/lib/kaminari/mongoid.rb:3:in `<top (required)>'
# ./spec/spec_helper.rb:6:in `<top (required)>'
# ./spec/slack-ruby-bot-server-events/version_spec.rb:3:in `require'
# ./spec/slack-ruby-bot-server-events/version_spec.rb:3:in `<top (required)>'
# ------------------
# --- Caused by: ---
# LoadError:
#   cannot load such file -- kaminari-mongoid
#   ./spec/spec_helper.rb:6:in `<top (required)>'
No examples found.

Finished in 0.00006 seconds (files took 0.93315 seconds to load)
0 examples, 0 failures, 5 errors occurred outside of examples

/usr/local/bin/ruby -I/usr/local/bundle/gems/rspec-core-3.10.1/lib:/usr/local/bundle/gems/rspec-support-3.10.1/lib /usr/local/bundle/gems/rspec-core-3.10.1/exe/rspec spec/slack-ruby-bot-server-events/api/endpoints/slack/actions_endpoint_spec.rb spec/slack-ruby-bot-server-events/api/endpoints/slack/commands_endpoint_spec.rb spec/slack-ruby-bot-server-events/api/endpoints/slack/events_endpoint_spec.rb spec/slack-ruby-bot-server-events/config_spec.rb spec/slack-ruby-bot-server-events/version_spec.rb failed
dblock commented 3 years ago

Looks like there are a few issues here ...

@deadalice looks like @CrazyOptimist explained the problem, the newer interactive messages are actions and this code just doesn't handle that, let's add support for it, hopefully with backwards compatibility (note that Grape supports things like given, so we can switch entire argument blocks with validation)

@he-dslieker Running rake should be OK, but maybe we're missing a require 'rack/test' somewhere in spec_helper.rb, does that help?

@CrazyOptimist your build is bringing in mongoid-4.0.0.beta2, which seems very old, it should be using 6 or 7, not sure what's up

crazyoptimist commented 3 years ago

bundle update and require 'rack/test' worked, very awesome. You want me to add switch or you gonna do that in person?

crazyoptimist commented 3 years ago

image Current implementation only handle the second type of payload - message_actions I will try to add block_actions at this time according to your advice above which is really helpful. We will be able to add 3rd and 4th payload support later easily(I didn't meet the use case yet 😎 ).

crazyoptimist commented 3 years ago

A very basic working example can be found here now.