handler_input.response_builder.response先ほどのハンドラー同様、このハンドラーはIntentRequestを想定されるインテント名と照合します。基本的なヘルプ手順が返され、.ask(speech_text)によってユーザーのマイクがオンになりユーザーの応答を待ちます。CancelAndStopIntentハンドラーCancelAndStopIntentHandlerもビルトインインテントAMAZON.CancelIntentまたはAMAZON.StopIntentによって呼び出されるため、HelpIntentハンドラーに似ています。以下は、1つのハンドラーを使用して両方のインテントに応答する例です。以下のコードをhello_world.pyファイルの、前述のハンドラーの後に入力するか貼り付けます。handler_input.response_builder.response上記の例では、can_handleには渡す関数が必要です。is_intent_nameは関数を返しますが、リクエストがAMAZON.CancelIntentなのかAMAZON.StopIntentなのかを確認する必要があります。これを行うには、Pythonの組み込みlambda関数を使用して、途中に無名関数を作成します。両方のインテントに対する応答は同じであるため、1つのハンドラーを使うことで重複するコードを減らせます。SessionEndedRequestハンドラーSessionEndedRequestを受け取った後は音声、カード、ディレクティブを使った応答を返すことはできませんが、クリーンアップロジックを追加するにはSessionEndedRequestHandlerが最適な場所です。以下のコードをhello_world.pyファイルの、前述のハンドラーの後に入力するか貼り付けます。all例外ハンドラーをスキルに追加して、すべての例外に対してスキルが意味のあるメッセージを返すようにする例です。以下のコードをhello_world.pyファイルの、前述のハンドラーの後に入力するか貼り付けます。"すみません、わかりませんでした。Lambdaでホスティングするか、独自のエンドポイントでウェブサービスとしてホスティングできます。Lambdaでスキルコードをホスティングするのが最も簡単です。以下のセクションでは、その方法を説明します。他のクラウドホスティングプロバイダーでホスティングする場合は、SDKにいくつか用意されているサポートパッケージ(ask-sdk-webservice-support、flask-ask-sdk、django-ask-sdk)を使用してください。このコンフィギュレーションについて詳しくは、こちらを参照してください。Lambda関数のエントリポイントとなります。以下は、スキルが受信するすべてのリクエストのルーティングを行うLambdaハンドラー関数のコードサンプルです。Lambdaハンドラー関数は、作成したリクエストハンドラーを使用して設定されたSDKのスキルインスタンスを作成します。以下のコードをhello_world.pyファイルの、前述のハンドラーの後に入力するか貼り付けます。sb.lambda_handler()デコレーターを使用する場合、リクエストハンドラーと例外ハンドラーはコードの最初にインスタンス化されたスキルビルダーオブジェクトによって自動的に識別されます。ソースコード全文hello_world.pyのソースコード全文はこちらにあります。Lambda用にコードを準備するコードが完成したので、Lambdaにアップロードするファイルを含む.zipファイルを作成する必要があります。Lambdaにアップロードする際に、スキルコードとその依存関係をフラットファイル構造でzipファイル内に含める必要があります。Pythonと同じフォルダに配置されます。仮想環境でのSDKセットアップ特定のフォルダへのSDKセットアップ仮想環境を使ってSDKをセットアップする場合、依存関係は仮想環境のsite-packagesフォルダにインストールされます。そのため、skill_envのsite-packagesフォルダに移動します。Windowsの場合、site-packagesフォルダはskill_env\Libフォルダ内にあります。macOS/Linuxの場合、site-packagesフォルダの場所は使用しているPythonのバージョンによって異なります。3.8ユーザーの場合、skill_env/lib/Python3.6フォルダ内にsite-packagesがあります。hello_world.pyファイルをsite-packagesフォルダにコピーして、(そのフォルダ自体ではなく)そのフォルダのコンテンツの.zipファイルを作成します。ファイルにskill.zipという名前を付けます。Lambdaドキュメントを確認してください。SDKを特定のフォルダにセットアップする場合、依存関係はその特定のフォルダにインストールされます。セットアップガイドの手順に従った場合、そのフォルダはskill_envです。hello_world.pyファイルをskill_envフォルダにコピーして、(そのフォルダ自体ではなく)そのフォルダのコンテンツの.zipファイルを作成します。ファイルにskill.zipという名前を付けます。Lambdaドキュメントを確認してください。Lambda関数を作成する必要があります。Alexa開発者ポータルでスキルを作成する必要があります。Lambda関数としてホスティングするを参照してください。Lambda関数が作成されたら、Alexaサービスでそれを呼び出すことができるようにします。Kitをトリガータイプとして追加します。これが完了したら、前の手順で作成したskill.zipファイルをアップロードし、ハンドラー情報とmodule_name.handlerを入力します。この例ではhello_world.handlerです。Lambdaにアップロードしたら、Alexaのスキルを設定できます。以下の手順に従って新しいスキルを作成します。Kit開発者コンソールにログインします。右上のスキルの作成ボタンをクリックします。スキル名として「HelloWorld」と入力します。カスタムスキルを選択してからスキルを作成をクリックします。次に、スキルの対話モデルを定義します。サイドバーの呼び出し名を選択し、スキルの呼び出し名に「ハローワールド」を入力します。次に、HelloWorldIntentというインテントを対話モデルに追加します。対話モデルのインテントセクションにある追加ボタンをクリックします。カスタムインテントを作成を選択した状態で、インテント名として「HelloWorldIntent」を入力し、インテントを作成します。インテントの詳細ページで、ユーザーがこのインテントを呼び出すのに使用できるサンプル発話をいくつか追加します。この例では、以下のようなサンプル発話が適当ですが、これ以外に追加してもかまいません。ごきげんいかがAMAZON.CancelIntent、AMAZON.HelpIntent、AMAZON.StopIntentはAlexaのビルトインインテントのため、サンプル発話を追加する必要はありません。開発者コンソールでは、スキルモデル全体をJSON形式で編集できます。サイドバーでJSONエディターを選択します。この例では、以下のJSONスキーマを使用できます。}対話モデルの編集が完了したら、モデルを保存してビルドします。次に、スキルのエンドポイントを設定します。これを行うには次の手順に従います。LambdaのARNを選択して、作成したスキルのスキルIDをコピーします。新しいタブでAWS開発者コンソールを開きます。Lambda関数に移動します。Kitトリガーメニューを追加し、スクロールダウンしてスキルID検証コンフィギュレーションにスキルIDを貼り付けます。Lambda関数を更新します。Lambda関数ARNをコピーします。ARNは一意のリソース番号です。Lambda関数を識別します。Kit開発者コンソールに移動して、HelloWorldスキルをクリックします。LambdaのARNを選択して、デフォルトの地域にARNを貼り付けます。残りの設定は、デフォルト値のままで構いません。エンドポイントを保存をクリックします。呼び出し名タブをクリックして、モデルを保存およびビルドします。この時点で、スキルをテストできるようになります。上部メニューでテストをクリックします。このスキルでは、テストは有効になっていますオプションがONになっていることを確認します。テストページを使って、テキストや音声でリクエストをシミュレーションできます。呼び出し名と、サンプル発話のうちの1つを使います。World」カードが表示されるはずです。スマートフォンのAlexaアプリやhttps://alexa.amazon.comでスキルにスキルが表示されていることを確認できます。さまざまなインテントや、スキルコードに対応するリクエストハンドラーを試してみてください。ひととおりのテストが完了したら、スキルの認定を申請して世界中のユーザーに公開するプロセスに進むことができます。