v1で開発された既存のスキルをv2に移行する方法を説明します。このバージョンのSDKを使ってスキル開発者はより堅牢なスキルを作成し、コードを適切に整理できます。以下で説明する改善されたコア機能も利用できます。v1バージョンの以下のコードを使用します。<scope>compile</scope></dependency>これを以下の新しい依存関係に置き換えます。artifactIdとversionが変更されています。v2にはリクエストハンドラーの概念が導入されています。リクエストハンドラーは、受け取った1つ以上のタイプのリクエストを処理できる個別のコンポーネントです。ハンドラーには、ハンドラーを呼び出すかどうかを決定するcanHandleメソッドと、処理ロジックを含むhandleメソッドが含まれています。この方法により、スキルロジックが構造化され整理されたものとなり、単一のモノシリックなクラスに含まれなくなります。Worldサンプルの一部です。getWelcomeResponse、getAskResponse、getHelpResponseなどのすべてのヘルパー関数実装は、応答ビルダーのセクションで取り上げられているため、省略しています。"これはサポートされていません。ほかのものをお試しください。"ようこそ、アレクサスキルキットへ。こんにちは、と言ってみてください。v2では、onLaunch、onSessionEnded、onIntentがそれぞれ異なるハンドラーに分けられています。"ようこそ、アレクサスキルキットへ。こんにちは、と言ってみてください。"こんにちは、と言ってみてください。}}リクエストハンドラーの詳細については、技術資料のリクエストハンドラーをご覧ください。v1でサポートされません。v2には、アトリビュートの次のスコープを管理するアトリビュートマネージャーの概念が導入されています。インターセプターを含め、現在のリクエストの間のみ持続します。現在のセッションの間持続します。現在のセッションのスコープを超えて持続し、次回ユーザーがスキルを呼び出すときに取得できます。v2ではこれらのアトリビュートがリクエストハンドラーインターフェース、インターセプター、および例外ハンドラーに自動的に渡されます。これにより、アトリビュートの取得や設定の際に毎回保存して取得する必要がありません。次に、canHandleメソッドでアトリビュートマネージャーを使ってDynamoDBテーブルから永続アトリビュートを取得する例を示します。handleメソッドは、永続アトリビュートの設定方法を示します。input.getResponseBuilder().build();}インターセプターの詳細については、技術資料のリクエストと応答のインターセプターをご覧ください。応答ビルダーを使うと、SpeechletResponseの各要素を作成するヘルパー関数を手動で作成する必要がありません。v1サンプルから取得したnewAskResponseメソッドのスニペットを示します。SDKでは、応答ビルダーを使ってhandleメソッド内に応答を作成すると、コードの冗長性が軽減されます。.build();}応答ビルダーの詳細については、技術資料の応答のビルドをご覧ください。例外ハンドラーはリクエストハンドラーに似ていますが、リクエスト処理中に例外がスローされると呼び出される点が異なります。例外ハンドラーには受信する例外タイプで動作するcanHandleメソッドと、例外を処理するhandleメソッドがあります。例外処理にtry-catchブロックを使う代わりに、特定の例外タイプの例外ハンドラー、またはすべての例外でグローバルに機能する1つの例外ハンドラーを作成できます。以下に、catch-all例外ハンドラーの例を示します。}}例外ハンドラーの詳細については、技術資料の例外ハンドラーをご覧ください。APIを呼び出すためのサポートが制限されていました。API呼び出しに対して低レベルのプラガブルHTTPクライアントをサポートし、API呼び出しでその呼び出しに関連するリクエストアトリビュートに渡すだけで済むようにエンドポイントと認証情報の解決を処理します。v1でデバイスアドレスを取得する方法を示す、デバイスアドレスサンプルから抜粋したスニペットを示します。v2では、少ないコードを使ってデバイスアドレスを取得でき、AlexaDeviceAddressClientを実装する必要はありません。Lambda関数のスキルIDを追加していました。このIDはhttps://developer.amazon.com/alexa/console/askで確認できます。必要なAlexaスキルを「編集」し、関連するアプリケーションIDをこのSetに含めます。v2では、スキルインスタンスの作成とハンドラーの登録にビルダーパターンが使用されます。次に、リクエストハンドラー、例外ハンドラー、その他のハンドラーを設定する例を示します。