@@ -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
0 commit comments