自動化
PR

AlexaスキルをClaude Codeで自作した話(Lambda連携)

sanane
記事内に商品プロモーションを含む場合があります

はじめに

Amazon Echoに話しかけたときに、自分が用意した処理を実行してくれるAlexaスキルを自作してみました。

スキルのコード自体はClaude Codeに作成してもらい、AWSへのデプロイもAWS CLIを使って自動化しています。一方で、Alexa Developer Consoleでの設定だけは手動で行う必要があったため、今回はその手順をまとめます。

今回作成したスキルは自分だけが使えれば十分なので、スキルストアへの公開はせず、「開発中」のまま自分のAmazonアカウントのみで利用できる形にしています。

「開発中」のスキルは、開発者アカウントと紐付いたAmazonアカウントのEchoデバイスでのみ動作します。スキルストアへの申請・公開は不要なので、個人利用の自作スキルを手軽に試せます。

事前準備

  • AWSアカウント(Lambda用)
  • Amazon Echoデバイス(Echo Dotなど)
  • Alexa Developer Console用のAmazonアカウント(Echoデバイスと同一のアカウント)

EchoデバイスのAmazonアカウントと、Alexa Developer ConsoleのAmazonアカウントは必ず同じにしてください。別アカウントだと開発中スキルが実機で利用できません。

Lambdaについて

スキルが呼び出されたときの処理(外部APIへのアクセスや応答テキストの生成)は、AWSのサービスである Lambda で動かします。

Lambdaはサーバーを管理せずにコードを実行できるサービスで、月100万リクエストまで無料で利用できます。今回のような個人利用であれば、費用はほぼかかりません。

作成方法

Alexa Developer Consoleでアカウント作成

開発者アカウントを作成し、本人確認を済ませる。

スキルの作成

スキル名・ロケール・モデル・ホスティングを設定して新規スキルを作成。

対話モデルの設定

呼び出し名と発話サンプルをJSONで定義しビルドする。

エンドポイントの設定

Lambda関数のARNをエンドポイントに登録する。

テストと実機確認

シミュレーターと実機(Echo)で発話を確認する。

STEP1. Alexa Developer Consoleでアカウントを作成する

Alexa Developer Consoleにアクセスし、開発者アカウントを作成します。

このとき本人確認として、身分証などによる認証が必要です。

STEP2. スキルを作成する

「スキルの作成」をクリックします。

スキルの作成ボタン

スキルに名前をつけて、プライマリロケールに「日本語(日本)」を選択します。

スキル名とロケールの設定

モデルには「カスタム」を選択します。

モデルの選択

ホスティングサービスには「独自のプロビジョニング」を選択します。今回はLambda関数を自分で用意するためです。

ホスティングサービスの選択

テンプレートは「スクラッチで作成」を選び、スキルを作成します。

スクラッチで作成を選択

STEP3. 対話モデルを設定する

左メニューの「JSONエディター」を開き、対話モデルのJSONを貼り付けます。

対話モデルとは、Alexaへの話しかけ方のルールを定義するものです。主に以下の2つを設定します。

対話モデルで定義する主な項目
  • invocationName(呼び出し名): スキルを起動するときに呼ぶ名前(例: 銭湯)
  • samples(発話サンプル): スキルを開いた後にどんな言葉で操作するか(例: 混雑度を教えて今混んでる

JSONの中身は以下のような形式です。

{
  "interactionModel": {
    "languageModel": {
      "invocationName": "銭湯",
      "intents": [
        {
          "name": "GetCongestionIntent",
          "slots": [],
          "samples": [
            "混雑度を教えて",
            "今混んでる",
            "空いてる"
          ]
        },
        { "name": "AMAZON.StopIntent", "samples": [] },
        { "name": "AMAZON.CancelIntent", "samples": [] },
        { "name": "AMAZON.HelpIntent", "samples": [] }
      ]
    }
  }
}

AMAZON.StopIntent などはAlexaの組み込みインテントで、「終了して」などの標準的な言葉に反応するため、合わせて定義しておきます。

JSONを貼り付けたら「モデルを保存」→「モデルをビルド」の順にクリックします。

JSONエディターでの対話モデル設定

STEP4. エンドポイントを設定する

左メニューの「エンドポイント」を開き、「AWS LambdaのARN」を選択します。事前にAWS CLIなどでデプロイしておいたLambda関数のARNを入力して保存します。

ARNの形式は以下のとおりです。

arn:aws:lambda:ap-northeast-1:(AWSアカウントID):function:(関数名)

STEP5. テストする

上部の「テスト」タブを開き、テストの実行段階を「開発中」に切り替えてから、テキストで発話を入力して動作を確認します。

シミュレーターでのテスト

STEP6. Alexaアプリでスキルを確認する

開発中スキルは作成すると自動的に有効化されます。念のため、Alexaアプリの「その他」→「スキル・ゲーム」→「マイスキル」→「開発」タブを開いて、作成したスキルが表示されていることを確認しておきましょう。

Screenshot
Screenshot

つまずいたポイント

「〇〇を開いて」と言ってもスキルが起動しない

実際に「アレクサ、(スキル名)を開いて」と話しかけても、Alexaに認識してもらえずうまく起動しないことがありました。

この場合、Alexaの定型アクションと組み合わせることで解決しました。

定型アクションとは、「おはよう」「おやすみ」などの決まったフレーズをトリガーに、複数のアクションをまとめて実行できる機能です。この定型アクションのアクションとしてスキルの起動を登録しておくと、安定して動作するようになりました。

設定はAlexaアプリの「その他」→「定型アクション」から行えます。

「おはよう」の定型アクションにスキル起動を組み込んでおくと、毎朝声をかけるだけで自作スキルの結果を自動で読み上げてもらうこともできます。

まとめ

Alexa Developer Consoleでの操作自体は難しくありませんが、エンドポイント設定を忘れると実機で動かないため注意が必要です。

スキルを「開発中」のまま運用すれば、自分のAmazonアカウントだけで使い続けられるので、個人用の自作スキルとして手軽に試せます。

もしスキルがうまく起動しない場合は、定型アクションと組み合わせることで安定して動作するようになります。

記事URLをコピーしました