ralyxa 1.4.0 → 1.5.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/Gemfile.lock +1 -1
- data/lib/ralyxa/handler.rb +6 -6
- data/lib/ralyxa/register_intents.rb +3 -4
- data/lib/ralyxa/skill.rb +32 -10
- data/lib/ralyxa/user.rb +2 -2
- data/lib/ralyxa/version.rb +1 -1
- metadata +1 -1
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 356706a000592a8cf4cd64652ef2f61cf2f3f257
|
4
|
+
data.tar.gz: 3f7dbf9429193a8d2dcfbaa254a40fe1d6c80c19
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: f4460af9eecb7d2e4114b168c3d79f80cdccbec3a3e200e664588f7d9654b87353505aad2755955fe212cce8b38206aa93d1100b85f572cb6a28ddc0aeae3f5f
|
7
|
+
data.tar.gz: 0fdac2ee8f5e53bb5394b5bd06b290fafa0a95d265d74339ae90fd91aa38d21072eab9161318b2dd82766abb86b237fdb28bb1d48ec37dca4d7512866279ef48
|
data/Gemfile.lock
CHANGED
data/lib/ralyxa/handler.rb
CHANGED
@@ -1,22 +1,22 @@
|
|
1
1
|
require_relative './response_builder'
|
2
2
|
require_relative './card'
|
3
3
|
|
4
|
+
# Handler Base Class. Each Intent Handler inherits from this, and overwrites the #handle method.
|
4
5
|
module Ralyxa
|
5
6
|
class Handler
|
6
|
-
def initialize(request
|
7
|
-
@request
|
8
|
-
@intent_proc = intent_proc
|
7
|
+
def initialize(request)
|
8
|
+
@request = request
|
9
9
|
end
|
10
10
|
|
11
11
|
def handle
|
12
|
-
|
12
|
+
raise NotImplementedError
|
13
13
|
end
|
14
14
|
|
15
|
-
def respond(response_text, response_details = {}, response_builder = Ralyxa::ResponseBuilder)
|
15
|
+
def respond(response_text = "", response_details = {}, response_builder = Ralyxa::ResponseBuilder)
|
16
16
|
response_builder.build(response_details.merge(response_text: response_text))
|
17
17
|
end
|
18
18
|
|
19
|
-
def tell(response_text, response_details = {})
|
19
|
+
def tell(response_text = "", response_details = {})
|
20
20
|
respond(response_text, response_details.merge(end_session: true))
|
21
21
|
end
|
22
22
|
|
@@ -33,11 +33,10 @@ module Ralyxa
|
|
33
33
|
|
34
34
|
NO_INTENT_DECLARATIONS_FOUND = <<~HEREDOC
|
35
35
|
\e[33m
|
36
|
-
WARNING: You haven't defined any
|
36
|
+
WARNING: You haven't defined any intent declarations.
|
37
37
|
|
38
|
-
Please define
|
39
|
-
on the same directory level as the runfile for your server application
|
40
|
-
or change the default intents directory in alexa/register_intents.rb.
|
38
|
+
Please define intent declarations inside a directory called 'intents',
|
39
|
+
on the same directory level as the runfile for your server application.
|
41
40
|
\e[0m
|
42
41
|
HEREDOC
|
43
42
|
end
|
data/lib/ralyxa/skill.rb
CHANGED
@@ -2,31 +2,53 @@ require_relative './request'
|
|
2
2
|
require_relative './response'
|
3
3
|
require_relative './handler'
|
4
4
|
|
5
|
+
# Routes an incoming request to the correct Handler.
|
5
6
|
module Ralyxa
|
6
7
|
class Skill
|
7
|
-
@@
|
8
|
+
@@handlers = {}
|
8
9
|
|
9
10
|
def initialize(request)
|
10
11
|
@request = request
|
11
12
|
end
|
12
13
|
|
13
|
-
def handle
|
14
|
-
|
15
|
-
handler.new(@request
|
14
|
+
def handle
|
15
|
+
handler = self.class.handlers[@request.intent_name]
|
16
|
+
handler ? handler.new(@request).handle : warn(handler_not_found)
|
16
17
|
end
|
17
18
|
|
18
19
|
class << self
|
19
|
-
def intent(intent_name, &
|
20
|
-
|
21
|
-
|
22
|
-
|
23
|
-
def registered_intents
|
24
|
-
@@intents.dup
|
20
|
+
def intent(intent_name, handler_base_class = Ralyxa::Handler, &intent_block)
|
21
|
+
intent_handler = Class.new(handler_base_class)
|
22
|
+
intent_handler.send(:define_method, :handle, &intent_block)
|
23
|
+
@@handlers[intent_name] = intent_handler
|
25
24
|
end
|
26
25
|
|
27
26
|
def handle(request, alexa_request_wrapper = Ralyxa::Request)
|
28
27
|
new(alexa_request_wrapper.new(request)).handle
|
29
28
|
end
|
29
|
+
|
30
|
+
def handlers
|
31
|
+
@@handlers.dup
|
32
|
+
end
|
33
|
+
end
|
34
|
+
|
35
|
+
private
|
36
|
+
|
37
|
+
def handler_not_found
|
38
|
+
<<~HEREDOC
|
39
|
+
\e[33m
|
40
|
+
WARNING: An intent declaration for intent "#{ @request.intent_name }" was not found.
|
41
|
+
|
42
|
+
To define it, add an intent declaration inside a directory called 'intents',
|
43
|
+
on the same directory level as the runfile for your server application.
|
44
|
+
|
45
|
+
You probably want something like:
|
46
|
+
|
47
|
+
intent "#{ @request.intent_name }" do
|
48
|
+
respond("Hello World!")
|
49
|
+
end
|
50
|
+
\e[0m
|
51
|
+
HEREDOC
|
30
52
|
end
|
31
53
|
end
|
32
54
|
end
|
data/lib/ralyxa/user.rb
CHANGED
@@ -9,8 +9,8 @@ module Ralyxa
|
|
9
9
|
|
10
10
|
def self.build(request)
|
11
11
|
new(
|
12
|
-
id: request.dig(
|
13
|
-
access_token: request.dig(
|
12
|
+
id: request.dig("session", "user", "userId"),
|
13
|
+
access_token: request.dig("session", "user", "accessToken")
|
14
14
|
)
|
15
15
|
end
|
16
16
|
|
data/lib/ralyxa/version.rb
CHANGED