slackify 0.1.5 → 0.2.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +4 -4
- data/CHANGELOG.md +4 -0
- data/README.md +19 -6
- data/app/controllers/slackify/slack_controller.rb +8 -1
- data/lib/slackify/configuration.rb +9 -4
- metadata +2 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: ca58d1a63e649165df6caccc7092ee6ab04ee2fa9edaa5b3225a156cb66d4566
|
4
|
+
data.tar.gz: 3d3ae1cdd0f6f78ba32361fa61d858402968643819359fa363b15f4ee1547b49
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 51f0928b97da9b9839317b550ae616299ed4fb6692ed020f6ebfd6e0f14e0e222cc34aa7d225bfb0dc197441d6bb7988e3b2318369efe44814a0a60c4837770c
|
7
|
+
data.tar.gz: 3c7a7e4d3e394c0024df2523716f92a6e556f43e6cb00e620257d0148c2f889daabb4dbd67db3a977e3524e8b0fc05f5f3acaa2f4bb78e734fa062f3a73c9f8e
|
data/CHANGELOG.md
CHANGED
@@ -1,3 +1,7 @@
|
|
1
|
+
## V0.2.0
|
2
|
+
|
3
|
+
Update `custom_event_subtype_handlers` to `custom_message_subtype_handlers` and add support for `custom_event_type_handlers`. This is a breaking change since we rename the field that was previously used. To fix, update any calls from `custom_event_subtype_handlers` to `custom_message_subtype_handlers` and you should be good to go.
|
4
|
+
|
1
5
|
## V0.1.5
|
2
6
|
|
3
7
|
Update how the `bot_id` is set in the handler configuration. You can disable the slack auth test (which is used to obtain the bot_id) by setting `SLACK_AUTH_SKIP=1` in your environment variables. If you are running in a Rails environment other than production, development or staging and would like to use the bot for real requests, you can trigger a manual auth test by calling `Slackify.configuration.handlers.bot_auth_test`. Gemfile.lock was removed.
|
data/README.md
CHANGED
@@ -8,7 +8,8 @@ Slackify is a gem that allows to build slackbots on Rails using the [Event API](
|
|
8
8
|
* [Plain messages](#handling-plain-messages)
|
9
9
|
* [Interactive messages](#handling-interactive-messages)
|
10
10
|
* [Slash Command](#handling-slash-commands)
|
11
|
-
* [Custom handler for
|
11
|
+
* [Custom handler for message subtypes](#custom-handler-for-message-subtypes)
|
12
|
+
* [Custom handler for event types](#custom-handler-for-event-types)
|
12
13
|
* [Custom unhandled handler](#custom-unhandled-handler)
|
13
14
|
* [Slack client](#slack-client)
|
14
15
|
* [Sending a simple message](#sending-a-simple-message)
|
@@ -85,17 +86,29 @@ class DummyHandler < Slackify::Handlers::Base
|
|
85
86
|
end
|
86
87
|
```
|
87
88
|
|
88
|
-
### Custom handler for
|
89
|
+
### Custom handler for message subtypes
|
89
90
|
|
90
|
-
If you wish to add more functionalities to your bot, you can specify define new behaviours for different
|
91
|
+
If you wish to add more functionalities to your bot, you can specify define new behaviours for different message subtypes. You can specify a hash with the event subtype as a key and the handler class as the value. Slackify will call `.handle_event` on your class and pass the controller params as parameters.
|
91
92
|
|
92
93
|
```ruby
|
93
|
-
Slackify.configuration.
|
94
|
+
Slackify.configuration.custom_message_subtype_handlers = {
|
95
|
+
file_share: MessageImageHandler
|
96
|
+
}
|
97
|
+
```
|
98
|
+
|
99
|
+
In this example, all message of subtype `file_share` will be sent to the `MessageImageHandler` class.
|
100
|
+
|
101
|
+
### Custom handler for event types
|
102
|
+
|
103
|
+
If you wish to add more functionalities to your bot, you can specify define new behaviours for different event types. You can specify a hash with the event type as a key and the handler class as the value. Slackify will call `.handle_event` on your class and pass the controller params as parameters.
|
104
|
+
|
105
|
+
```ruby
|
106
|
+
Slackify.configuration.custom_event_type_handlers = {
|
94
107
|
file_share: ImageHandler
|
95
108
|
}
|
96
109
|
```
|
97
110
|
|
98
|
-
In this example, all events of
|
111
|
+
In this example, all events of type `file_share` will be sent to the `ImageHandler` class.
|
99
112
|
|
100
113
|
### Custom unhandled handler
|
101
114
|
|
@@ -223,7 +236,7 @@ Slackify.load_handlers
|
|
223
236
|
```ruby
|
224
237
|
# config/initializers/slackify.rb
|
225
238
|
Slackify.load_handlers
|
226
|
-
Slackify.configuration.
|
239
|
+
Slackify.configuration.custom_message_subtype_handlers = {
|
227
240
|
file_share: ImageHandler,
|
228
241
|
channel_join: JoinHandler,
|
229
242
|
...
|
@@ -9,6 +9,8 @@ module Slackify
|
|
9
9
|
def event_callback
|
10
10
|
if params[:type] == "url_verification"
|
11
11
|
render plain: params["challenge"]
|
12
|
+
elsif Slackify.configuration.custom_event_type_handlers[params[:event][:type]]
|
13
|
+
handle_custom_event_type
|
12
14
|
elsif params[:event][:type] == "message"
|
13
15
|
handle_direct_message_event
|
14
16
|
head :ok
|
@@ -51,7 +53,7 @@ module Slackify
|
|
51
53
|
private
|
52
54
|
|
53
55
|
def handle_direct_message_event
|
54
|
-
if handler = Slackify.configuration.
|
56
|
+
if handler = Slackify.configuration.custom_message_subtype_handlers[params[:event][:subtype]]
|
55
57
|
handler.handle_event(params[:slack])
|
56
58
|
head :ok
|
57
59
|
return
|
@@ -65,6 +67,11 @@ module Slackify
|
|
65
67
|
raise e unless e.message == "Component not found for a command message"
|
66
68
|
end
|
67
69
|
|
70
|
+
def handle_custom_event_type
|
71
|
+
Slackify.configuration.custom_event_type_handlers[params[:event][:type]].handle_event(params[:slack])
|
72
|
+
head :ok
|
73
|
+
end
|
74
|
+
|
68
75
|
def handler_from_callback_id(callback_id)
|
69
76
|
class_name, method_name = callback_id.split('#')
|
70
77
|
class_name = class_name.camelize
|
@@ -4,7 +4,7 @@ require 'slack'
|
|
4
4
|
|
5
5
|
module Slackify
|
6
6
|
class Configuration
|
7
|
-
attr_reader :
|
7
|
+
attr_reader :custom_message_subtype_handlers, :slack_bot_token, :unhandled_handler, :custom_event_type_handlers
|
8
8
|
attr_accessor :handlers, :slack_secret_token, :slack_client
|
9
9
|
|
10
10
|
def initialize
|
@@ -12,7 +12,8 @@ module Slackify
|
|
12
12
|
@slack_secret_token = nil
|
13
13
|
@handlers = nil
|
14
14
|
@slack_client = nil
|
15
|
-
@
|
15
|
+
@custom_message_subtype_handlers = {}
|
16
|
+
@custom_event_type_handlers = {}
|
16
17
|
@unhandled_handler = Handlers::UnhandledHandler
|
17
18
|
end
|
18
19
|
|
@@ -32,8 +33,12 @@ module Slackify
|
|
32
33
|
@slack_client = Slack::Web::Client.new(token: token).freeze
|
33
34
|
end
|
34
35
|
|
35
|
-
def
|
36
|
-
@
|
36
|
+
def custom_message_subtype_handlers=(event_subtype_hash)
|
37
|
+
@custom_message_subtype_handlers = event_subtype_hash.with_indifferent_access
|
38
|
+
end
|
39
|
+
|
40
|
+
def custom_event_type_handlers=(event_type_hash)
|
41
|
+
@custom_event_type_handlers = event_type_hash.with_indifferent_access
|
37
42
|
end
|
38
43
|
end
|
39
44
|
end
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: slackify
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.
|
4
|
+
version: 0.2.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Justin Leger
|
@@ -9,7 +9,7 @@ authors:
|
|
9
9
|
autorequire:
|
10
10
|
bindir: bin
|
11
11
|
cert_chain: []
|
12
|
-
date: 2019-
|
12
|
+
date: 2019-12-11 00:00:00.000000000 Z
|
13
13
|
dependencies:
|
14
14
|
- !ruby/object:Gem::Dependency
|
15
15
|
name: rails
|