Alexa Skills KitをAWS Lamdaから使う

前回はRaspberry PiからAVS (Alexa Voice Services) を使ってみましたが、今回は、Alexa Skills Kitを使ってみたいと思います。

完成したもの

Alexaが自分の好みの色を覚えてくれるようになりました。

Alexa Skill Kitとは

AVSには好みの機能を追加できるSkillという機能があり、「カスタムスキル」と「スマートホームスキル」の2種類を登録することができます。

https://developer.amazon.com/public/solutions/alexa/alexa-skills-kit/docs/understanding-the-different-types-of-skills

カスタムスキル

  • ピザを注文したり、タクシーを呼んだり色々なことができる
  • Invocation Name (スキルの呼び名) で呼び出す
  • リクエストは「intent」としてマッピングされる
    • ピザの注文 → OrderPizza intent

スマートホームスキル

  • Smart home device (灯りやエアコンなど) を操作できる
  • Invocation Nameで呼び出すのは不要

今回作るもの

公式の ドキュメントポスト を参考に、今回は「Color Expert」のSkillを使ってみます。
Alexa SkillsはLambdaファンクション上で実行されるので、AWS LambdaとAlexa Skillsの設定が必要になります。

AWS Lambdaの作成

AWSマネジメントコンソールにログインし、Lambda のページを開きます。

リージョンがバージニア北部(US East (N. Virginia))になっていることを確認し、なっていなければ変更します。Lambdaファンクションを利用してAlexa Skillsを使うのに、現在他のリージョンはサポートされていません。

Create a Lambda functionをクリックするとBlueprint一覧画面になります。ここからalexa-skills-kit-color-expertを選択します。

Lambdaファンクションを呼び出すトリガーの選択画面になるので、灰色の点線のボックスをクリックし、Alexa Skills Kitを選びNextをクリックします。

Lambdaファンクションの構成画面になります。Nameには「colorExpertTest」などと入力します。

RoleにはLambdaを使うのが初めてであれば、Create new role from template(s)から新しくRoleを作成し、Role Nameには「lambda_basic_execution」などと入力します。

Policy templatesにはAMI read-only permissionsなどを選択すればOKです。

Lambda function codeなど他の項目はデフォルトのままでも問題ありません。

一通り入力・変更が終わったらNextをクリックします。

そうすると、下記のような確認画面になります。問題なければCreate functionをクリックします。

トリガーのテスト画面になります。 Testをクリック → Alexa Start Sessionを選択 → save and testをクリックと進むとTestが走ります。 実行結果がSuceededとなること、ログ出力に先ほどのLambda function codeの出力結果が表示されていればOKです。

これで作成は完了です。最後にLambdaファンクションの呼び出し先となるARNをメモしておきます。上記スクリーンショットで右上の一部灰色でマスクしている文字列です。

Alexa Skillの作成

Raspberry Piが登録されているアカウントでAmazon Developer Consoleにログインし、Alexa のページに進みます。

Alexa Skills KitのGet Startedをクリックします。

Add a New Skillから新規にSkillを登録します。実際に話しかけて呼び出すときの名前となるInvocation Nameには「color expert」と入力して、Nextをクリックします。

Interaction Modelの定義画面になります。これがAlexaに話しかけてやり取りをする内容になります。今回は公式ドキュメントのとおりにIntent Schame, Custom Slot Types, Sample Utterancesを下記のようにします。

Intent_Schema

{
  "intents": [
    {
      "intent": "MyColorIsIntent",
      "slots": [
        {
          "name": "Color",
          "type": "LIST_OF_COLORS"
        }
      ]
    },
    {
      "intent": "WhatsMyColorIntent"
    },
    {
      "intent": "AMAZON.HelpIntent"
    }
  ]
}

Custom_Slot_Type

LIST_OF_COLORS

Custom_Slot_Type_Values

green
red
blue
orange
gold
silver
yellow
black
white

Sample_Utterances

WhatsMyColorIntent what's my favorite color
WhatsMyColorIntent what is my favorite color
WhatsMyColorIntent what's my color
WhatsMyColorIntent what is my color
WhatsMyColorIntent my color
WhatsMyColorIntent my favorite color
WhatsMyColorIntent get my color
WhatsMyColorIntent get my favorite color
WhatsMyColorIntent give me my favorite color
WhatsMyColorIntent give me my color
WhatsMyColorIntent what my color is
WhatsMyColorIntent what my favorite color is
WhatsMyColorIntent yes
WhatsMyColorIntent yup
WhatsMyColorIntent sure
WhatsMyColorIntent yes please
MyColorIsIntent my favorite color is {Color}

次にEndpointなどの設定画面になります。先ほどメモしておいたARNを入力します。

次にTest画面になります。Enter Utteranceに先ほどSample Utteranceに定義した文章を入力してAsk color expertをクリックします。するとLambdaで処理が実行されて返答される文章などを含んだレスポンスが返ってきます。

残りの設定項目に Publishing infomation, Privacy & Compliance がありますが、これらはAlexa Skillをpubulishingするときに必要で、手元の実機での実行には必要ないので今回は割愛します。

動作確認

まずAmazon Developer Consoleと同じアカウントでAmazon AlexaにログインしてSkill一覧画面から先ほど作成したSkillがあることを確認します。

あとは冒頭の動画のように話しかけて動作するか確認します。

次回予告

次回はソースコードの中身を見てみます。

著者紹介
阪神タイガースと天下一品が好きなエンジニア。