def setup_skill_builder(service: OpenDataService) -> CustomSkillBuilder: """Helper method to create the custom skill builder instance.""" logger.info({ "operation": "Setting up Custom Skill Builder with Dynamo DB persistence adapter", "dynamo_db_table_name": DYNAMO_DB_TABLE_NAME, }) dynamo_db_adapter = DynamoDbAdapter( table_name=DYNAMO_DB_TABLE_NAME, partition_key_name="id", attribute_name="attributes", create_table=True, dynamodb_resource=resource("dynamodb"), ) skill_builder = CustomSkillBuilder(persistence_adapter=dynamo_db_adapter) logger.info("Adding skill request handlers...") skill_builder.add_request_handler(LaunchRequestHandler()) skill_builder.add_request_handler(SaveTripPreferencesHandler()) skill_builder.add_request_handler(GetArrivalTimesNoPrefsIntentHandler()) skill_builder.add_request_handler(GetArrivalTimesIntentHandler(service)) skill_builder.add_request_handler(StartedInProgressFavoriteStopHandler()) skill_builder.add_request_handler(CompletedFavoriteStopHandler()) skill_builder.add_request_handler(StartedInProgressFavoriteLineHandler()) skill_builder.add_request_handler(CompletedFavoriteLineHandler(service)) skill_builder.add_request_handler(YesIntentHandler()) skill_builder.add_request_handler(NoIntentHandler()) skill_builder.add_request_handler(HelpIntentHandler()) skill_builder.add_request_handler(CancelOrStopIntentHandler()) skill_builder.add_request_handler(RepeatHandler()) skill_builder.add_request_handler(FallBackHandler()) skill_builder.add_request_handler(SessionEndedRequestHandler()) skill_builder.add_request_handler(IntentReflectorHandler()) logger.info("Adding skill exception handlers...") skill_builder.add_exception_handler(OpenDataAPIExceptionHandler()) skill_builder.add_exception_handler(GenericExceptionHandler()) logger.info("Adding skill request interceptors...") skill_builder.add_global_request_interceptor(LocalizationInterceptor()) skill_builder.add_global_request_interceptor(RequestLoggerInterceptor()) logger.info("Adding skill response interceptors...") skill_builder.add_global_response_interceptor(ResponseLoggerInterceptor()) tracer.put_annotation("SKILL_SETUP", "SUCCESS") tracer.put_metadata(key="environment", value=ENVIRONMENT.upper()) return skill_builder
sb.add_request_handler(PlayNewestEpisodeIntentHandler()) sb.add_request_handler(PlayOldestEpisodeIntentHandler()) sb.add_request_handler(ChooseEpisodeIntentHandler()) sb.add_request_handler(PauseIntentHandler()) sb.add_request_handler(ResumeIntentHandler()) sb.add_request_handler(NoIntentHandler()) sb.add_request_handler(NextIntentHandler()) sb.add_request_handler(PreviousIntentHandler()) sb.add_request_handler(RepeatIntentHandler()) sb.add_request_handler(ShuffleOnIntentHandler()) sb.add_request_handler(ShuffleOffIntentHandler()) sb.add_request_handler(LoopOnIntentHandler()) sb.add_request_handler(LoopOffIntentHandler()) sb.add_request_handler(PlaybackStartedEventHandler()) sb.add_request_handler(PlaybackStoppedEventHandler()) sb.add_request_handler(PlaybackNearlyFinishedEventHandler()) sb.add_request_handler(PlaybackFinishedEventHandler()) sb.add_request_handler(PlaybackFailedEventHandler()) sb.add_request_handler(ExceptionEncounteredHandler()) sb.add_request_handler(CancelOrStopIntentHandler()) sb.add_request_handler(HelpIntentHandler()) sb.add_request_handler(FallbackIntentHandler()) sb.add_request_handler(SessionEndedRequesthandler()) sb.add_exception_handler(CatchAllExceptionHandler()) sb.add_global_request_interceptor(LocalizationInterceptor()) sb.add_global_request_interceptor(RequestLogger()) sb.add_global_response_interceptor(ResponseLogger()) lambda_handler = sb.lambda_handler()
return True else: return False # The SkillBuilder object acts as the entry point for your skill, routing all request and response # payloads to the handlers above. Make sure any new handlers or interceptors you've # defined are included below. The order matters - they're processed top to bottom. # Skill Builder object sb = CustomSkillBuilder(api_client=DefaultApiClient()) # Add all request handlers to the skill. sb.add_request_handler(LaunchRequestHandler()) sb.add_request_handler(StartAdventureIntentHandler()) sb.add_request_handler(HelpIntentHandler()) sb.add_request_handler(CancelOrStopIntentHandler()) sb.add_request_handler(SessionEndedRequestHandler()) sb.add_request_handler(FallbackIntentHandler()) sb.add_request_handler(YesIntentHandler()) sb.add_request_handler(NoIntentHandler()) # Add exception handler to the skill. sb.add_exception_handler(CatchAllExceptionHandler()) # Add request and response interceptors sb.add_global_response_interceptor(LoggingResponseInterceptor()) sb.add_global_request_interceptor(LoggingRequestInterceptor()) # Expose the lambda handler function that can be tagged to AWS Lambda handler handler = sb.lambda_handler()
session_attr["reprompt"] = response.reprompt class ResponseLogger(AbstractResponseInterceptor): """Log the response envelope.""" def process(self, handler_input, response): # type: (HandlerInput, Response) -> None logger.debug("Response: {}".format(response)) # register request / intent handlers sb.add_request_handler(LaunchRequestIntentHandler()) sb.add_request_handler(RecipeIntentHandler()) sb.add_request_handler(HelpIntentHandler()) sb.add_request_handler(PreviousHandler()) sb.add_request_handler(RepeatIntentHandler()) sb.add_request_handler(ExitIntentHandler()) sb.add_request_handler(SessionEndedRequestHandler()) # register exception handlers sb.add_exception_handler(CatchAllExceptionHandler()) # register response interceptors sb.add_global_request_interceptor(LocalizationInterceptor()) sb.add_global_request_interceptor(RequestLogger()) sb.add_global_response_interceptor(CacheResponseForRepeatInterceptor()) sb.add_global_response_interceptor(ResponseLogger()) sb.add_global_response_interceptor(ResponseActionnableHistoryInterceptor()) lambda_handler = sb.lambda_handler()
sb.add_request_handler(deeniUpdateIntentHandler()) sb.add_request_handler(YesHandler()) sb.add_request_handler(NoHandler()) #sb.add_request_handler(StartPlaybackHandler()) #sb.add_request_handler(PlayCommandHandler()) #sb.add_request_handler(NextCommandHandler()) #sb.add_request_handler(PreviousCommandHandler()) sb.add_request_handler(PausePlaybackHandler()) #sb.add_request_handler(PauseCommandHandler()) sb.add_request_handler(CancelOrStopIntentHandler()) sb.add_request_handler(PlaybackStartedEventHandler()) sb.add_request_handler(PlaybackFinishedEventHandler()) sb.add_request_handler(PlaybackStoppedEventHandler()) sb.add_request_handler(PlaybackNearlyFinishedEventHandler()) #sb.add_request_handler(PlaybackStartedEventHandler()) sb.add_request_handler(PlaybackFailedEventHandler()) sb.add_request_handler(FallbackIntentHandler()) # Exception handlers sb.add_exception_handler(CatchAllExceptionHandler()) # Interceptors sb.add_global_request_interceptor(RequestLogger()) sb.add_global_request_interceptor(LoadPersistenceAttributesRequestInterceptor()) sb.add_global_response_interceptor(ResponseLogger()) sb.add_global_response_interceptor(SavePersistenceAttributesResponseInterceptor()) # AWS Lambda handler lambda_handler = sb.lambda_handler()
class LocalizationInterceptor(AbstractRequestInterceptor): """ Add function to request attributes, that can load locale specific data. """ def process(self, handler_input): locale = handler_input.request_envelope.request.locale logger.info("Locale is {}".format(locale)) i18n = gettext.translation('data', localedir='locales', languages=[locale], fallback=True) handler_input.attributes_manager.request_attributes["_"] = i18n.gettext # register request / intent handlers sb.add_request_handler(HasBirthdayLaunchRequestHandler()) sb.add_request_handler(LaunchRequestIntentHandler()) sb.add_request_handler(BirthdayIntentHandler()) sb.add_request_handler(HelpIntentHandler()) sb.add_request_handler(CancelAndStopIntentHandler()) sb.add_request_handler(SessionEndedRequestHandler()) # register exception handlers sb.add_exception_handler(CatchAllExceptionHandler()) # register localization interceptor and cache speech interceptor sb.add_global_request_interceptor(LocalizationInterceptor()) sb.add_global_response_interceptor(CacheSpeechForRepeatInterceptor()) lambda_handler = sb.lambda_handler()
sb = CustomSkillBuilder(persistence_adapter=DynamoDbAdapter(**adapter_config)) sb.skill_id = settings.APP_ID sb.add_request_handler(game_play_handlers.AnswerHandler()) sb.add_request_handler(game_play_handlers.DontKnowNextHandler()) sb.add_request_handler(game_play_handlers.GameEventHandler()) sb.add_request_handler(game_play_handlers.PlayGameHandler()) sb.add_request_handler(game_play_handlers.EndGameHandler()) sb.add_request_handler(game_play_handlers.YesHandler()) sb.add_request_handler(roll_call_handlers.YesHandler()) sb.add_request_handler(roll_call_handlers.NoHandler()) sb.add_request_handler(roll_call_handlers.GameEventHandler()) sb.add_request_handler(start_handlers.PlayerCountHandler()) sb.add_request_handler(start_handlers.YesHandler()) sb.add_request_handler(start_handlers.NoHandler()) sb.add_request_handler(start_handlers.LaunchPlayGameHandler()) sb.add_request_handler(start_handlers.StartNewGameHandler()) sb.add_request_handler(global_handlers.HelpHandler()) sb.add_request_handler(global_handlers.StopCancelHandler()) sb.add_request_handler(global_handlers.SessionEndedRequestHandler()) sb.add_request_handler(global_handlers.DefaultHandler()) sb.add_global_request_interceptor(global_handlers.RequestInterceptor()) sb.add_global_response_interceptor(global_handlers.ResponseInterceptor()) # sb.add_exception_handler(global_handlers.ErrorHandler()) handler = sb.lambda_handler()
@APP.route('/', methods=['GET']) def development(): return 'development server/ngrok connected' SB.add_request_handler(launch.Handler()) SB.add_request_handler(district.Handler()) SB.add_request_handler(legislature.Handler()) SB.add_request_handler(legislature.DetailsHandler()) SB.add_request_handler(legislature.CountHandler()) SB.add_request_handler(legislature.PartyStatsHandler()) SB.add_request_handler(session.Handler()) SB.add_request_handler(helping.Handler()) SB.add_request_handler(defaults.ExitIntentHandler()) SB.add_request_handler(defaults.SessionEndedRequestHandler()) SB.add_exception_handler(defaults.CatchAllExceptionHandler()) # Add response interceptor to the skill. # SB.add_global_response_interceptor(CacheResponseForRepeatInterceptor()) SB.add_global_request_interceptor(log.RequestLogger()) SB.add_global_response_interceptor(log.ResponseLogger()) SKILL = SB.create() HANDLER = SB.lambda_handler() if __name__ == '__main__': APP.run(debug=True)
SC_CorrectAnswerHandler, SC_WrongAnswerHandler, ## Gen Questions & Answered GetAnswerHandler, NumQuestionsAnsweredHandler, ## Always True FallbackHandler, ) sb = CustomSkillBuilder(persistence_adapter=skill_s3_adapter) for req_handler in SKILL_REQUEST_HANDLERS: sb.add_request_handler(req_handler()) ########## # Interceptors ########## sb.add_global_request_interceptor(LaunchRequestInterceptor()) sb.add_global_response_interceptor(CacheResponseForRepeatInterceptor()) sb.add_global_response_interceptor(CacheRepromptInterceptor()) ########## # Finalize ########## lambda_handler = sb.lambda_handler()
class ResponseLogger(AbstractResponseInterceptor): """Log the response envelope.""" def process(self, handler_input, response): # type: (HandlerInput, Response) -> None logger.info("Response: {}".format(response)) # Add all request handlers to the skill. sb.add_request_handler(LaunchRequestHandler()) sb.add_request_handler(DemoHandler()) sb.add_request_handler(AllInOneExitIntentHandler()) sb.add_request_handler(DemoAnswerHandler()) sb.add_request_handler(SetCommittedAlarmHandler()) sb.add_request_handler(RepeatHandler()) sb.add_request_handler(HelpIntentHandler()) sb.add_request_handler(SessionEndedRequestHandler()) sb.add_request_handler(FallbackIntentHandler()) # Add exception handler to the skill. sb.add_exception_handler(CatchAllExceptionHandler()) # Add response interceptor to the skill. sb.add_global_response_interceptor(CacheResponseForRepeatInterceptor()) sb.add_global_request_interceptor(RequestLogger()) sb.add_global_response_interceptor(ResponseLogger()) # Expose the lambda handler to register in AWS Lambda. lambda_handler = sb.lambda_handler()