Skip to content

Commit 6970d4c

Browse files
authored
Multip,e recognizer per project (tachyons#20)
Fixes tachyons#19
1 parent 988aecd commit 6970d4c

2 files changed

Lines changed: 29 additions & 8 deletions

File tree

examples/simple_regex/bot.rb

Lines changed: 6 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,8 @@
33
connector.app_secret = ENV['RUBY_CONF_MICROSOFT_APP_PASSWORD']
44
end
55

6-
BotFramework::Bot.recognizer = BotFramework::Dialogs::RegExpRecognizer.new('HelpIntent', /^(help|options)/i)
6+
BotFramework::Bot.add_recognizer(BotFramework::Dialogs::RegExpRecognizer.new('HelpIntent', /^(help|options)/i))
7+
BotFramework::Bot.add_recognizer(BotFramework::Dialogs::RegExpRecognizer.new('HelloIntent', /^(hi|hello|hai)/i))
78

89
BotFramework::Bot.on :activity do |activity|
910
# All activities
@@ -25,6 +26,10 @@
2526
reply(activity, "<HELP TEXT HERE>")
2627
end
2728

29+
BotFramework::Bot.on_intent 'HelloIntent' do |activity, _intents|
30+
reply(activity, "Hello")
31+
end
32+
2833
BotFramework::Bot.on_intent :default do |activity, _intents|
2934
reply(activity, 'Unable to recognize')
3035
end

lib/bot_framework/bot.rb

Lines changed: 23 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,8 @@
11
module BotFramework
22
class Bot
33
class << self
4-
attr_accessor :recognizer
4+
extend Gem::Deprecate
5+
attr_accessor :recognizers
56

67
def on(event, &block)
78
hooks[event] = block
@@ -11,31 +12,46 @@ def on_intent(intent, &block)
1112
intent_callbacks[intent] = block
1213
end
1314

15+
def recognizer=(recognizer)
16+
warn "DEPRECATED: Use add_recognizer method instead"
17+
add_recognizer(recognizer)
18+
end
19+
deprecate :recognizer=, :add_recognizer, 2016, 5
20+
21+
def add_recognizer(recognizer)
22+
recognizers << recognizer
23+
end
24+
25+
def recognizers
26+
@recognizers ||= []
27+
end
28+
1429
def trigger(event, *args)
1530
# hooks.fetch(event).call(*args)
1631
if hooks[event].nil?
1732
p "No call back registered for #{event}"
1833
return false
1934
end
20-
instance_exec *args, &hooks.fetch(event)
35+
instance_exec(*args, &hooks.fetch(event))
2136
end
2237

2338
def trigger_intent_call_back(intent, *args)
2439
if intent_callbacks[intent].nil?
2540
p "No call back registered for #{intent}"
2641
trigger_intent_call_back(:default, *args) if intent_callbacks[:default]
2742
return false
28-
end
29-
instance_exec *args, &intent_callbacks.fetch(intent)
43+
end
44+
instance_exec(*args, &intent_callbacks.fetch(intent))
3045
end
3146

3247
def receive(payload)
3348
trigger(payload.type.to_sym)
3449
# Run on default
3550
trigger(:activity, payload)
36-
return unless recognizer
37-
recognizer.recognize(message: payload.as_json) do |_error, intents|
38-
trigger_intent_call_back(intents[:intent], payload, intents) if intents[:intent]
51+
recognizers.each do |recognizer|
52+
recognizer.recognize(message: payload.as_json) do |_error, intents|
53+
trigger_intent_call_back(intents[:intent], payload, intents) if intents[:intent]
54+
end
3955
end
4056
end
4157

0 commit comments

Comments
 (0)