Runtime¶
Request Dispatch Components¶
Abstract Classes¶
-
class
ask_sdk_runtime.dispatch.
AbstractRequestDispatcher
¶ Bases:
object
Dispatcher which handles dispatching input request to the corresponding handler.
User needs to implement the dispatch method, to handle the processing of the incoming request in the handler input. A response may be expected out of the dispatch method.
-
class
ask_sdk_runtime.dispatch_components.request_components.
AbstractRequestHandler
¶ Bases:
typing.Generic
Request Handlers are responsible for processing dispatch inputs and generating output.
Custom request handlers needs to implement
can_handle
andhandle
methods.can_handle
returns True if the handler can handle the current input.handle
processes the input and may return a output.
-
class
ask_sdk_runtime.dispatch_components.request_components.
AbstractRequestInterceptor
¶ Bases:
typing.Generic
Interceptor that runs before the handler is called.
The
process
method has to be implemented, to run custom logic on the input, before it is handled by the Handler.
-
class
ask_sdk_runtime.dispatch_components.request_components.
AbstractResponseInterceptor
¶ Bases:
typing.Generic
Interceptor that runs after the handler is called.
The
process
method has to be implemented, to run custom logic on the input and the dispatch output generated after the handler is executed on the input.
-
class
ask_sdk_runtime.dispatch_components.request_components.
AbstractRequestHandlerChain
¶ Bases:
object
Abstract class containing Request Handler and corresponding Interceptors.
-
request_interceptors
()¶ Returns: List of registered Request Interceptors. Return type: list( ask_sdk_runtime.dispatch_components.request_components.AbstractRequestInterceptor)
-
response_interceptors
()¶ Returns: List of registered Response Interceptors. Return type: list( ask_sdk_runtime.dispatch_components.request_components.AbstractResponseInterceptor)
-
-
class
ask_sdk_runtime.dispatch_components.request_components.
AbstractRequestMapper
¶ Bases:
object
Class for request routing to the appropriate handler chain.
User needs to implement
get_request_handler_chain
method, to provide a routing mechanism of the input to the appropriate request handler chain containing the handler and the interceptors.-
get_request_handler_chain
(handler_input)¶ Get the handler chain that can process the handler input.
Parameters: handler_input (Input) – Generic input passed to the dispatcher. Returns: Handler Chain that can handle the request under dispatch input. Return type: AbstractRequestHandlerChain
-
-
class
ask_sdk_runtime.dispatch_components.request_components.
AbstractHandlerAdapter
¶ Bases:
object
Abstracts handling of a request for specific handler types.
-
supports
(handler)¶ Returns true if adapter supports the handler.
This method checks if the adapter supports the handler execution. This is usually checked by the type of the handler.
Parameters: handler (object) – Request Handler instance. Returns: Boolean denoting whether the adapter supports the handler. Return type: bool
-
-
class
ask_sdk_runtime.dispatch_components.exception_components.
AbstractExceptionHandler
¶ Bases:
typing.Generic
Handles exception types and optionally produce an output.
The abstract class is similar to Request Handler, with methods can_handle and handle. The
can_handle
method checks if the handler can support the input and the exception. Thehandle
method processes the input and exception, to optionally produce an output.-
can_handle
(handler_input, exception)¶ Checks if the handler can support the exception raised during dispatch.
Parameters: Returns: Boolean whether handler can handle exception or not.
Return type:
-
-
class
ask_sdk_runtime.dispatch_components.exception_components.
AbstractExceptionMapper
¶ Bases:
typing.Generic
Mapper to register custom Exception Handler instances.
The exception mapper is used by
ask_sdk_runtime.dispatch.GenericRequestDispatcher
dispatch method, to handle exceptions. The mapper can contain one or more exception handlers. Handlers are accessed through the mapper to attempt to find a handler that is compatible with the current exception.-
get_handler
(handler_input, exception)¶ Returns a suitable exception handler to dispatch the specified exception, if one exists.
Parameters: - handler_input (Input) – Generic input passed to the dispatcher.
- exception (Exception) – Exception thrown by
ask_sdk_runtime.dispatch.GenericRequestDispatcher
dispatch method.
Returns: Exception Handler that can handle the input or None.
Return type: Union[None, AbstractExceptionHandler]
-
Implementations¶
-
class
ask_sdk_runtime.dispatch.
GenericRequestDispatcher
(options)¶ Bases:
ask_sdk_runtime.dispatch.AbstractRequestDispatcher
Generic implementation of
AbstractRequestDispatcher
.The runtime configuration contains the components required for the dispatcher, which is passed during initialization.
When the dispatch method is invoked, using a list of
ask_sdk_runtime.dispatch_components.request_components.RequestMapper
, the Dispatcher finds a handler for the request and delegates the invocation to the supportedask_sdk_runtime.dispatch_components.request_components.HandlerAdapter
. If the handler raises any exception, it is delegated toask_sdk_runtime.dispatch_components.exception_components.ExceptionMapper
to handle or raise it to the upper stack.-
dispatch
(handler_input)¶ Dispatches an incoming request to the appropriate request handler and returns the output.
Before running the request on the appropriate request handler, dispatcher runs any predefined global request interceptors. On successful response returned from request handler, dispatcher runs predefined global response interceptors, before returning the response.
Parameters: handler_input (Input) – generic input to the dispatcher Returns: generic output handled by the handler, optionally containing a response Return type: Union[None, Output] Raises: ask_sdk_runtime.exceptions.DispatchException
-
-
class
ask_sdk_runtime.dispatch_components.request_components.
GenericRequestHandlerChain
(request_handler, request_interceptors=None, response_interceptors=None)¶ Bases:
ask_sdk_runtime.dispatch_components.request_components.AbstractRequestHandlerChain
Generic implementation of
AbstractRequestHandlerChain
.Generic Request Handler Chain accepts request handler of any type.
Parameters: - request_handler (ask_sdk_runtime.dispatch_components.request_components.AbstractRequestHandler) – Registered Request Handler instance of generic type.
- request_interceptors (list( ask_sdk_runtime.dispatch_components.request_components.AbstractRequestInterceptor)) – List of registered Request Interceptors.
- response_interceptors (list( ask_sdk_runtime.dispatch_components.request_components.AbstractResponseInterceptor)) – List of registered Response Interceptors.
-
request_interceptors
¶ Returns: List of registered Request Interceptors. Return type: list( ask_sdk_runtime.dispatch_components.request_components.AbstractRequestInterceptor)
-
response_interceptors
¶ Returns: List of registered Response Interceptors. Return type: list( ask_sdk_runtime.dispatch_components.request_components.AbstractResponseInterceptor)
-
add_request_interceptor
(interceptor)¶ Add interceptor to Request Interceptors list.
Parameters: interceptor (ask_sdk_runtime.dispatch_components.request_components.AbstractRequestInterceptor) – Request Interceptor instance.
-
add_response_interceptor
(interceptor)¶ Add interceptor to Response Interceptors list.
Parameters: interceptor (ask_sdk_runtime.dispatch_components.request_components.AbstractResponseInterceptor) – Response Interceptor instance.
-
class
ask_sdk_runtime.dispatch_components.request_components.
GenericRequestMapper
(request_handler_chains)¶ Bases:
ask_sdk_runtime.dispatch_components.request_components.AbstractRequestMapper
Implementation of
AbstractRequestMapper
that registersRequestHandlerChain
.The class accepts request handler chains of type
GenericRequestHandlerChain
only. Theget_request_handler_chain
method returns theGenericRequestHandlerChain
instance that can handle the request in the handler input.Parameters: request_handler_chains (list(GenericRequestHandlerChain)) – List of GenericRequestHandlerChain
instances.-
request_handler_chains
¶ Returns: List of GenericRequestHandlerChain
instances.Return type: list(GenericRequestHandlerChain)
-
add_request_handler_chain
(request_handler_chain)¶ Checks the type before adding it to the request_handler_chains instance variable.
Parameters: request_handler_chain (RequestHandlerChain) – Request Handler Chain instance. Raises: ask_sdk_runtime.exceptions.DispatchException
if a null input is provided or if the input is of invalid type
-
get_request_handler_chain
(handler_input)¶ Get the request handler chain that can handle the dispatch input.
Parameters: handler_input (Input) – Generic input passed to the dispatcher. Returns: Handler Chain that can handle the input. Return type: Union[None, GenericRequestHandlerChain]
-
-
class
ask_sdk_runtime.dispatch_components.request_components.
GenericHandlerAdapter
¶ Bases:
ask_sdk_runtime.dispatch_components.request_components.AbstractHandlerAdapter
GenericHandler Adapter for handlers of type
ask_sdk_runtime.dispatch_components.request_components.AbstractRequestHandler
.-
supports
(handler)¶ Returns true if handler is
ask_sdk_runtime.dispatch_components.request_components.AbstractRequestHandler
instance.Parameters: handler (ask_sdk_runtime.dispatch_components.request_components.AbstractRequestHandler) – Request Handler instance Returns: Boolean denoting whether the adapter supports the handler. Return type: bool
-
-
class
ask_sdk_runtime.dispatch_components.exception_components.
GenericExceptionMapper
(exception_handlers)¶ Bases:
ask_sdk_runtime.dispatch_components.exception_components.AbstractExceptionMapper
Generic Implementation of exception mapper, to register
AbstractExceptionHandler
instances.The class accepts exception handlers of type
AbstractExceptionHandler
only. Theget_handler
method returns theAbstractExceptionHandler
instance that can handle the dispatch input and the exception raised from the dispatch method.Parameters: exception_handlers (list( ask_sdk_runtime.dispatch_components.exception_components.AbstractExceptionHandler)) – List of ask_sdk_runtime.dispatch_components.exception_components.AbstractExceptionHandler
instances.-
exception_handlers
¶ Returns: List of ask_sdk_runtime.dispatch_components.exception_components.AbstractExceptionHandler
instances.Return type: list( ask_sdk_runtime.dispatch_components.exception_components.AbstractExceptionHandler)
-
add_exception_handler
(exception_handler)¶ Checks the type before adding it to the exception_handlers instance variable.
Parameters: exception_handler (ask_sdk_runtime.dispatch_components.exception_components.AbstractExceptionHandler) – Exception Handler instance. Raises: ask_sdk_runtime.exceptions.DispatchException
if a null input is provided or if the input is of invalid type
-
get_handler
(handler_input, exception)¶ Get the exception handler that can handle the input and exception.
Parameters: - handler_input (Input) – Generic input passed to the dispatcher.
- exception (Exception) – Exception thrown by
ask_sdk_runtime.dispatch.GenericRequestDispatcher
dispatch method.
Returns: Exception Handler that can handle the input or None.
Return type: Union[None, ask_sdk_runtime.dispatch_components.exception_components.AbstractExceptionHandler]
-
Skill Components¶
-
class
ask_sdk_runtime.skill.
RuntimeConfiguration
(request_mappers, handler_adapters, request_interceptors=None, response_interceptors=None, exception_mapper=None, loaders=None, renderer=None)¶ Bases:
object
Configuration Object that represents standard components needed to build the dispatcher in the
AbstractSkill
.Parameters: - request_mappers (list(GenericRequestMapper)) – List of request mapper instances.
- handler_adapters (list(GenericHandlerAdapter)) – List of handler adapter instances.
- request_interceptors (list(AbstractRequestInterceptor)) – List of request interceptor instances.
- response_interceptors (list(AbstractResponseInterceptor)) – List of response interceptor instances.
- exception_mapper (GenericExceptionMapper) – Exception mapper instance.
-
class
ask_sdk_runtime.skill.
RuntimeConfigurationBuilder
¶ Bases:
object
Builder class for creating a runtime configuration object, from base dispatch components.
-
add_request_handler
(request_handler)¶ Register input to the request handlers list.
Parameters: request_handler (AbstractRequestHandler) – Request Handler instance to be registered. Returns: None
-
add_request_handlers
(request_handlers)¶ Register input to the request handlers list.
Parameters: request_handlers (list(AbstractRequestHandler)) – List of Request Handler instances to be registered. Returns: None
-
add_exception_handler
(exception_handler)¶ Register input to the exception handlers list.
Parameters: exception_handler (AbstractExceptionHandler) – Exception Handler instance to be registered. Returns: None
-
add_global_request_interceptor
(request_interceptor)¶ Register input to the global request interceptors list.
Parameters: request_interceptor (AbstractRequestInterceptor) – Request Interceptor instance to be registered. Returns: None
-
add_global_response_interceptor
(response_interceptor)¶ Register input to the global response interceptors list.
Parameters: response_interceptor (AbstractResponseInterceptor) – Response Interceptor instance to be registered. Returns: None
-
add_loader
(loader)¶ Register input to the loaders list.
Parameters: loader ( ask_sdk_runtime.view_resolvers.AbstractTemplateLoader
) – Loader to load the template
-
add_loaders
(loaders)¶ Register input to the loaders list.
Parameters: loaders ( ask_sdk_runtime.view_resolvers.AbstractTemplateLoader
) – List of loaders
-
add_renderer
(renderer)¶ Register input to the renderer.
Parameters: renderer ( ask_sdk_runtime.view_resolvers.AbstractTemplateRenderer
) – Renderer to render the template
-
get_runtime_configuration
()¶ Build the runtime configuration object from the registered components.
Returns: Runtime Configuration Object Return type: RuntimeConfiguration
-
-
class
ask_sdk_runtime.skill.
AbstractSkill
¶ Bases:
typing.Generic
Abstract class that acts as entry level container for skill invocation.
Domain SDKs should implement the supports and invoke methods.
-
supports
(event, context)¶ Check if the skill supports the corresponding input.
Parameters: - event (SkillInput) – input instance containing request information.
- context (Any) – Context passed during invocation
Returns: boolean if this type of request can be handled by this skill.
Return type:
-
invoke
(event, context)¶ Invokes the dispatcher, to handle the skill input and return a skill output.
Parameters: - event (SkillInput) – input instance containing request information.
- context (Any) – Context passed during invocation
Returns: output generated by handling the request.
Return type: SkillOutput
-
-
class
ask_sdk_runtime.skill_builder.
AbstractSkillBuilder
¶ Bases:
object
Abstract Skill Builder with helper functions for building
ask_sdk_runtime.skill.AbstractSkill
object.Domain SDKs has to implement the create method that returns an instance of the skill implementation for the domain type.
-
add_request_handler
(request_handler)¶ Register input to the request handlers list.
Parameters: request_handler (ask_sdk_runtime.dispatch_components.request_components.AbstractRequestHandler) – Request Handler instance to be registered. Returns: None
-
add_exception_handler
(exception_handler)¶ Register input to the exception handlers list.
Parameters: exception_handler (ask_sdk_runtime.dispatch_components.request_components.AbstractExceptionHandler) – Exception Handler instance to be registered. Returns: None
-
add_global_request_interceptor
(request_interceptor)¶ Register input to the global request interceptors list.
Parameters: request_interceptor (ask_sdk_runtime.dispatch_components.request_components.AbstractRequestInterceptor) – Request Interceptor instance to be registered. Returns: None
-
add_global_response_interceptor
(response_interceptor)¶ Register input to the global response interceptors list.
Parameters: response_interceptor (ask_sdk_runtime.dispatch_components.request_components.AbstractResponseInterceptor) – Response Interceptor instance to be registered. Returns: None
-
add_loaders
(loaders)¶ Register input to the loaders list.
Parameters: loaders ( ask_sdk_runtime.view_resolvers.AbstractTemplateLoader
) – List of loaders
-
add_loader
(loader)¶ Register input to loaders list.
Parameters: loader ( ask_sdk_runtime.view_resolvers.AbstractTemplateLoader
) – Loader to load template from a specific data source
-
add_renderer
(renderer)¶ Register renderer to generate template responses.
Parameters: renderer ( ask_sdk_runtime.view_resolvers.AbstractTemplateRenderer
) – Renderer to render the template
-
request_handler
(can_handle_func)¶ Decorator that can be used to add request handlers easily to the builder.
The can_handle_func has to be a Callable instance, which takes a single parameter and no varargs or kwargs. This is because of the RequestHandler class signature restrictions. The returned wrapper function can be applied as a decorator on any function that returns a response object by the skill. The function should follow the signature of the handle function in
ask_sdk_runtime.dispatch_components.request_components.AbstractRequestHandler
class.Parameters: can_handle_func (Callable[[Input], bool]) – The function that validates if the request can be handled. Returns: Wrapper function that can be decorated on a handle function.
-
exception_handler
(can_handle_func)¶ Decorator that can be used to add exception handlers easily to the builder.
The can_handle_func has to be a Callable instance, which takes two parameters and no varargs or kwargs. This is because of the ExceptionHandler class signature restrictions. The returned wrapper function can be applied as a decorator on any function that processes the exception raised during dispatcher and returns a response object by the skill. The function should follow the signature of the handle function in
ask_sdk_runtime.dispatch_components.exception_components.AbstractExceptionHandler
class.Parameters: can_handle_func (Callable[[Input, Exception], bool]) – The function that validates if the exception can be handled. Returns: Wrapper function that can be decorated on a handle function.
-
global_request_interceptor
()¶ Decorator that can be used to add global request interceptors easily to the builder.
The returned wrapper function can be applied as a decorator on any function that processes the input. The function should follow the signature of the process function in
ask_sdk_runtime.dispatch_components.request_components.AbstractRequestInterceptor
class.Returns: Wrapper function that can be decorated on a interceptor process function.
-
global_response_interceptor
()¶ Decorator that can be used to add global response interceptors easily to the builder.
The returned wrapper function can be applied as a decorator on any function that processes the input and the response generated by the request handler. The function should follow the signature of the process function in
ask_sdk_runtime.dispatch_components.request_components.AbstractResponseInterceptor
class.Returns: Wrapper function that can be decorated on a interceptor process function.
-
create
()¶ Create a skill object using the registered components.
Returns: a skill object that can be used for invocation. Return type: AbstractSkill
-
SDK Exceptions¶
-
exception
ask_sdk_runtime.exceptions.
AskSdkException
¶ Bases:
Exception
Base class for exceptions raised by the SDK.
-
exception
ask_sdk_runtime.exceptions.
DispatchException
¶ Bases:
ask_sdk_runtime.exceptions.AskSdkException
Class for exceptions raised during dispatch logic.
-
exception
ask_sdk_runtime.exceptions.
SerializationException
¶ Bases:
ask_sdk_runtime.exceptions.AskSdkException
Class for exceptions raised during serialization/deserialization.
-
exception
ask_sdk_runtime.exceptions.
SkillBuilderException
¶ Bases:
ask_sdk_runtime.exceptions.AskSdkException
Base exception class for Skill Builder exceptions.
-
exception
ask_sdk_runtime.exceptions.
RuntimeConfigException
¶ Bases:
ask_sdk_runtime.exceptions.AskSdkException
Base exception class for Runtime Configuration Builder exceptions.