スキルインスタンスのコンフィギュレーション



スキルインスタンスのコンフィギュレーション

Skill

Skillオブジェクトは、すべてのスキルロジックを統合したものです。このオブジェクトは、AttributesManagerServiceClientFactoryなどのSDKユーティリティを初期化し、リクエスト処理プロセスを開始します。

利用可能なメソッド

def invoke(self, request_envelope, context):
# type: (RequestEnvelope, Any) -> ResponseEnvelope

スキルビルダー

SDKには、Skillインスタンスの作成、カスタムユーザーエージェントの設定、Lambda統合ハンドラーの作成を行うユーティリティメソッドを提供するSkillBuilderが含まれています。構造は次のとおりです。

class SkillBuilder(object):
    def __init__(self):
        # リクエストコンポーネント、例外ハンドラー、インターセプターの
        # 空のコレクションを初期化します。

    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
        # 登録されたコンポーネントを使用してコンフィギュレーションオブジェクトを作成します
        ....

    def create(self):
        # type: () -> Skill
        # スキルコンフィギュレーションを使用してスキルを作成します
        ....

    def lambda_handler(self):
        # type: () -> LambdaHandler
        # AWS Lambdaハンドラーにタグ付けできるLambdaハンドラー関数を
        # 作成します。
        # スキルを呼び出す前にAlexaのリクエストを処理し、
        # サービスに提供する前にAlexaの応答を処理します
        ....

    def request_handler(self, can_handle_func):
        # type: (Callable[[HandlerInput], bool]) -> None
        # リクエストハンドラーのデコレーター

    def exception_handler(self, can_handle_func):
        # type: (Callable[[HandlerInput, Exception], bool]) -> None
        # 例外ハンドラーのデコレーター

    def global_request_interceptor(self):
        # type: () -> None
        # グローバルリクエストインターセプターのデコレーター

    def global_response_interceptor(self):
        # type: () -> None
        # グローバル応答インターセプターのデコレーター

SkillBuilderクラスには2つの拡張機能CustomSkillBuilderおよびStandardSkillBuilderがあります。

CustomSkillBuilderクラス

CustomSkillBuilderは、ask-sdk-coreask-sdkパッケージの両方で使用できます。上の共通のヘルパー関数に加えて、CustomSkillBuilderにもAbstractPersistentAdapterask_sdk_model.services.ApiClientクラスのカスタム実装を登録できる関数があります。

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

    @property
    def skill_configuration(self):
        # 登録された永続アダプターとAPIクライアントを基に、
        # スキルビルダーからスキルコンフィギュレーションを作成します
        ....

StandardSkillBuilderクラス

StandardSkillBuilderask-sdkパッケージでのみ使用できます。これはpersistence_adapterをask_sdk_dynamo.adapter.DynamoDbPersistenceAdapterとして、api_clientをask_sdk_core.api_client.DefaultApiClientとして使用し、持続性機能およびサービスクライアント機能を提供するCustomSKillBuilderのラッパーです。また、Dynamo DBテーブルオプションを設定するオプションのパラメーターも提供します。

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):
        # 登録された永続アダプターとAPIクライアントを基に、
        # および指定されたテーブルコンフィギュレーションオプションを基に、
        # スキルビルダーからスキルコンフィギュレーションを作成します
        ....