Skip to content

Latest commit

 

History

History
115 lines (88 loc) · 3.98 KB

SKILL_BUILDERS.rst

File metadata and controls

115 lines (88 loc) · 3.98 KB

Skill Builders

The SDK includes a SkillBuilder that provides utility methods, to construct the Skill instance. It has the following structure:

class SkillBuilder(object):
    def __init__(self):
        # Initialize empty collections for request components,
        # exception handlers, interceptors.

    def add_request_handler(self, handler):
        # type: (AbstractRequestHandler) -> None
        ....

    def add_exception_handler(self, handler):
        # type: (AbstractExceptionHandler) -> None
        ....

    def add_global_request_interceptor(self, interceptor):
        # type: (AbstractRequestInterceptor) -> None
        ....

    def add_global_response_interceptor(self, interceptor):
        # type: (AbstractResponseInterceptor) -> None
        ....

    @property
    def skill_configuration(self):
        # type: () -> SkillConfiguration
        # Build configuration object using the registered components
        ....

    def create(self):
        # type: () -> Skill
        # Create the skill using the skill configuration
        ....

    def lambda_handler(self):
        # type: () -> LambdaHandler
        # Create a lambda handler function that can be tagged to
        # AWS Lambda handler.
        # Processes the alexa request before invoking the skill,
        # processes the alexa response before providing to the service
        ....

    def request_handler(self, can_handle_func):
        # type: (Callable[[HandlerInput], bool]) -> None
        # Request Handler decorator

    def exception_handler(self, can_handle_func):
        # type: (Callable[[HandlerInput, Exception], bool]) -> None
        # Exception Handler decorator

    def global_request_interceptor(self):
        # type: () -> None
        # Global Request Interceptor decorator

    def global_response_interceptor(self):
        # type: () -> None
        # Global Response Interceptor decorator

There are two extensions to SkillBuilder class, CustomSkillBuilder and StandardSkillBuilder.

CustomSkillBuilder Class

CustomSkillBuilder is available in both ask-sdk-core and ask-sdk package. In addition to the common helper function above, CustomSkillBuilder also provides functions that allows you to register custom implementations of AbstractPersistentAdapter and ask_sdk_model.services.ApiClient classes.

class CustomSkillBuilder(SkillBuilder):
    def __init__(self, persistence_adapter=None, api_client=None):
        # type: (AbstractPersistenceAdapter, ApiClient) -> None
        ....

    @property
    def skill_configuration(self):
        # Create skill configuration from skill builder along with
        # registered persistence adapter and api client
        ....

StandardSkillBuilder Class

StandardSkillBuilder is available only in the ask-sdk package. It is a wrapper on CustomSKillBuilder with persistence_adapter as ask_sdk_dynamo.adapter.DynamoDbPersistenceAdapter and api_client as ask_sdk_core.api_client.DefaultApiClient to provide Persistence and Service Client features. It also provides optional parameters for configuring the Dynamo DB table options.

class StandardSkillBuilder(SkillBuilder):
    def __init__(self,
            table_name=None, auto_create_table=None,
            partition_keygen=None, dynamodb_client=None):
        # type: (str, bool, Callable[[RequestEnvelope], str], ServiceResource) -> None)
        ....

    @property
    def skill_configuration(self):
        # Create skill configuration from skill builder along with
        # default api client and dynamodb persistence adapter with
        # the passed in table configuration options.
        ....