ralyxa 1.4.0 → 1.5.0
Sign up to get free protection for your applications and to get access to all the features.
- 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