Skip to content

Commit a4ebcbf

Browse files
authored
Merge pull request #24 from stephenrob/builtin-intents
Add support for custom built in intent definitions
2 parents ebc057f + 8415a7a commit a4ebcbf

2 files changed

Lines changed: 51 additions & 10 deletions

File tree

lib/BotManager/client.rb

Lines changed: 47 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -31,6 +31,7 @@ def initialize release, release_file, alexa_config={}
3131
@intent_versions = {}
3232
@bots = {}
3333
@bot_versions = {}
34+
@builtin_intents = {}
3435
@alexa_amazon_intents = ["AMAZON.FallbackIntent", "AMAZON.CancelIntent", "AMAZON.HelpIntent", "AMAZON.StopIntent", "AMAZON.YesIntent", "AMAZON.NoIntent"]
3536
@lex_valid_amazon_intents = ["AMAZON.HelpIntent"]
3637
@lex_manager = Lex::Manager.new
@@ -44,7 +45,11 @@ def load_slot_type slot_type_file
4445

4546
def load_intent intent_file
4647
parsed_intent = Parsers::IntentParser.new intent_file
47-
@intents[parsed_intent.name] = parsed_intent
48+
if !parsed_intent.type.nil? && parsed_intent.type.start_with?('AMAZON.')
49+
@builtin_intents[parsed_intent.type] = parsed_intent
50+
else
51+
@intents[parsed_intent.name] = parsed_intent
52+
end
4853
end
4954

5055
def load_bot bot_file
@@ -206,20 +211,43 @@ def register_bots_with_lex
206211

207212
next unless @lex_valid_amazon_intents.include? builtin_intent[:type]
208213

209-
intent_name = generate_lex_full_name builtin_intent[:name]
214+
if @builtin_intents[builtin_intent[:type]].nil?
210215

211-
lex_intent = Lex::BuiltInIntent.new builtin_intent[:type], intent_name
216+
intent_name = generate_lex_full_name builtin_intent[:name]
212217

213-
fulfillment_activity = builtin_intent[:fulfillment_activity]
218+
lex_intent = Lex::BuiltInIntent.new builtin_intent[:type], intent_name
214219

215-
if !fulfillment_activity.nil? && !fulfillment_activity.empty?
216-
lex_fulfillment_activity = Lex::CodeHookFulfillmentActivity.new fulfillment_activity[:uri]
217-
lex_intent.set_fulfillment_activity lex_fulfillment_activity
218-
end
220+
fulfillment_activity = builtin_intent[:fulfillment_activity]
221+
222+
if !fulfillment_activity.nil? && !fulfillment_activity.empty?
223+
lex_fulfillment_activity = Lex::CodeHookFulfillmentActivity.new fulfillment_activity[:uri]
224+
lex_intent.set_fulfillment_activity lex_fulfillment_activity
225+
end
226+
227+
version = @lex_manager.register_intent lex_intent
228+
229+
lex_bot.register_intent intent_name, version
230+
231+
else
232+
233+
custom_builtin_intent = @builtin_intents[builtin_intent[:type]]
234+
235+
intent_name = generate_lex_full_name custom_builtin_intent.name
219236

220-
version = @lex_manager.register_intent lex_intent
237+
lex_intent = Lex::BuiltInIntent.new builtin_intent[:type], intent_name
221238

222-
lex_bot.register_intent intent_name, version
239+
fulfillment_activity = custom_builtin_intent.lex[:fulfillment_activity]
240+
241+
if !fulfillment_activity.nil? && !fulfillment_activity.empty?
242+
lex_fulfillment_activity = Lex::CodeHookFulfillmentActivity.new fulfillment_activity[:uri]
243+
lex_intent.set_fulfillment_activity lex_fulfillment_activity
244+
end
245+
246+
version = @lex_manager.register_intent lex_intent
247+
248+
lex_bot.register_intent intent_name, version
249+
250+
end
223251

224252
end
225253

@@ -598,6 +626,15 @@ def register_interaction_model_with_alexa
598626

599627
language_intent = BotManager::Alexa::LanguageModel::Intent.new intent_name
600628

629+
if !@builtin_intents[intent_name].nil?
630+
631+
custom_builtin_intent = @builtin_intents[intent_name]
632+
633+
custom_builtin_intent.sample_utterances.each do |utterance|
634+
language_intent.add_sample utterance
635+
end
636+
end
637+
601638
language_intents[intent_name] = language_intent
602639

603640
end

lib/BotManager/parsers/intent_parser.rb

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -22,6 +22,10 @@ def description
2222
@intent[:description]
2323
end
2424

25+
def type
26+
@intent[:type]
27+
end
28+
2529
def sample_utterances
2630
@intent[:sample_utterances]
2731
end

0 commit comments

Comments
 (0)