カスタムスキルのサンプルコードの使用



Alexa Skills Kitサンプルを使用する(カスタムスキル)

Alexa Skills Kitには、Node.js(JavaScript)およびJavaで記述されたカスタムスキルのサンプルがいくつか用意されています。これらのサンプルは、AWS Lambdaアマゾンウェブサービスが提供するサービスの1つ)上のAWS Lambda関数としてデプロイおよびテストできます。または、AWS Elastic Beanstalkアマゾンウェブサービスで提供されるサービスの1つ)などのプラットフォーム上でウェブサービスとしてJavaサンプルをデプロイすることもできます。

サンプルでは、新しいAlexaの機能を設計および実装するのに役立つ概念がいくつか示されています。たとえば、データベースやその他のAWSサービスに接続したり、サービス呼び出しの間で情報を格納したりする方法などです。

サンプルのソースコードおよびJavaライブラリを入手する

サンプルは、GitHubのリポジトリとして入手できます。リポジトリを自分のアカウントにフォークし、デスクトップにクローンを作成することができます。または、GitHubからリポジトリ全体のzipファイルをダウンロードします。

  • JavaScriptのサンプルは、Alexaの公式GitHubアカウントのリポジトリに用意されています。サンプルはそれぞれ独自のリポジトリにあります。たとえば、「Hello World」サンプルは、https://github.com/alexa/skill-sample-nodejs-hello-worldにあります。

  • Javaサンプルは、amzn/alexa-skills-kit-javaリポジトリにあります。

    • サンプルは、samples/src/main/javaフォルダーにあります。サンプルごとにフォルダーが存在します。
    • JavaライブラリのJARファイルは、repoフォルダーにあります。MavenでJavaサンプルをビルドすると、ライブラリがローカルリポジトリに自動でインストールされます。
    • Javaライブラリのソースコードは、src/com/amazon/speechフォルダーにあります。

各サンプルには、以下が含まれます。

  • README.mdには、サンプル固有の追加情報が含まれます。
  • speechAssetsには、テキストファイルに記載されたインテントスキーマとサンプル発話が含まれます。
    • IntentSchema.jsonには、インテントを定義するJSONが含まれます。開発者コンソールでスキルを作成したら、ビルド > 対話モデルページのJSONエディターボックスに移動し、ファイルをウィンドウにドラッグアンドドロップすると内容を確認できます。
    • Utterances(またはSampleUtterances.txt)には、プレーンテキストのサンプル発話が含まれます。これらのサンプル発話を、スキルの公開 > 日本語(日本)のストアでのプレビューページ(**サンプルフレーズセクション)に入力します。

      Alexa Skills Kitの理解のためにサンプルを確認する際は、インテントスキーマとサンプル発話も確認するようにしてください。適切なサンプル発話を提供することは、優れたユーザーエクスペリエンス開発にとって重要です。推奨されるサンプル発話については、「サンプル発話とカスタムスロットタイプの値を作成する際のベストプラクティス」を参照してください。

  • サンプルのコード:
    • JavaScriptサンプルのコードは、srcフォルダーにあります。サンプル固有のコードは、index.jsにあります。
    • Javaサンプルのコードは、一連の.javaファイルとして提供されています。通常、サンプル固有のコードは、「speechlet」クラス(HistoryBuffSpeechlet.javaなど)にあります。各サンプルには、AWS Lambdaにサンプルをデプロイするときにハンドラーとして使用するSpeechletRequestStreamHandlerクラスも含まれます。

サンプルをデプロイおよびテストする

サンプルのセットアップとテストは、テキストベースのサービスシミュレーターまたはAlexa搭載デバイスで実行できます。

プログラミングの概念

この表には、具体的なコーディング概念とそれらを説明するためのサンプルが示されています。

概念 説明 サンプル
DATEスロット DATEスロットタイプは、絶対および相対的に日付を表現するフレーズを日付形式に変換します。 Alexa向けのカレンダーリーダーを作成する方法
NUMBERスロット NUMBERスロットタイプは、数字を表す単語を数値に変換し、その後数値として処理できるようにします。 Trivia
ハイ&ローゲーム
カスタムスロットタイプ これらのタイプは、スロットを定義する値のリストを使用します。アイテムがAmazonの標準タイプセットでは変換不可能で、スロット値が想定される一式のスロット値のいずれかである多くの場合に使用します。 How toスキル
データベースストレージ スキルでは、ユーザーが一旦中断したセッションを再開したときにも前回のデータを利用できるように、セッション間でデータを保持しておく必要がある場合があります。Alexa Skills Kit SDK for Node.jsでは、AWS DynamoDBを使用したデータ保持の処理を提供しています。 ハイ&ローゲーム
長い音声 スキルでは、ポッドキャストなど、音声をストリーミングするディレクティブをAlexaサービスに送信することができます。詳細については、AudioPlayerインターフェースのリファレンスを参照してください。 Audio Player Sample Project
複数ステージにわたる会話 サービスでは、複数のステージにわたるユーザーの会話を処理できます。ユーザーが現在どのステージにいるかは追跡されます。 Trivia
Audio Player Sample Project
複数言語対応 複数言語に対応するスキルを作成することもできます。Alexa Skills Kit SDK for Node.jsでは、スキルの読み上げテキストの複数言語への翻訳を含み、ユーザーのロケールに応じて正しい言語バージョンを返す処理を標準で提供します。 Trivia
How toスキル
Factスキル
セッションの状態 ユーザーが特定のスキルにマッピングされたアクションを実行するようにAlexaにリクエストすると、新しいセッションが開きます。このユーザーからのすべてのリクエストは、このセッションが閉じるまでサービスに送られます。サービスに送られた各リクエストには、新規のセッションか既存のセッションかを判断するために使用できるフラグが含まれます。また、セッションのアトリビュートを使用して、セッション中の応答とデータを保存できます。

Alexa Skills Kit SDK for Node.jsには、セッション状態の処理が提供されています。
Trivia
ハイ&ローゲーム
意思決定
Factスキル

次のステップ

スキルのサンプルやテンプレートのいずれかを使って作成してみてください。

Alexa Skills Kit SDK for Node.jsをダウンロードしてください。

続いて以下のドキュメントを参照してください。