Alexaのスキルを開発する ~その1~ スキルの作成(Amazon Developer Console)

更新履歴:
2018/05/20 Amazon Developer Consoleの画面を最新版に合わせて更新しました。旧記事はこちら

先日ようやく招待が届いて購入できたEcho Dot。スキルを自分で開発したい、というのが一番の目的だったので勉強を兼ねて早速スキルを作ってみました。

”アレクサ、計算開いて1プラス2は”と問いかけると”3”と答えてくれる計算スキルです。Alexaは標準で計算のスキルを持っているので必要ないのですが、あくまでもスキル開発の勉強ということで…

スキルの処理の流れ

スキルの処理の流れですが、

  1. ユーザーがEchoに話しかける
  2. Echoが音声データをAmazon Alexaサービスに送る
  3. Alexaが文章を解析、どのスキル・処理が呼び出されたのか判断して該当のスキル・処理を呼び出す
  4. 呼び出されたプログラムが処理を行い、結果を返す

という流れになります。

スキル開発者が作るのはAlexaがどういう言葉を受け取った時に自分のスキルを起動するか、どういうパラメータでどの処理を呼び出すのか、というモデルを定義するところとLambda or HTTPSでの処理の部分です。

今回はAmazon Developer Consoleで前者のモデルの定義の部分を作成します。

Amazon Developer Console

事前準備

スキルを開発するにはAmazon Developer Consoleのアカウントが必要です。自分のAmazonのアカウントに紐づくことになります。

なお今回はスキルは公開せずに自分のEcho Dotのみでテスト的に使用するのでAmazonアカウントはEcho Dotで使用しているのと同じAmazonアカウントである必要があります。

アカウント作成方法については以下等を参考にしてください。

スキルの対話モデル

スキルを作るにあたって決めておくことがあります。

  • どういう言葉でスキルを起動するか→呼び出し名
  • どういう機能を使うか→インテント(機能)とそれを呼び出す文章(発話サンプル)
  • どういうパラメータを渡すか→スロット

今回の場合、呼び出し名は”計算”、インテントは計算スキルなので四則演算くらいはできるようにしたいですがまずは足し算のみ、スロットは数値2つ(〇+〇)、で作成していきます。

”開いて”の部分は使える言葉が決まっているのですが以下に詳しく説明があります。

最初は”アレクサ、計算開いて〇足す〇”で作ってたんですが、どうも聞き間違いが多くて…”アレクサ1足す2”というと何故か1の頭に”万”という言葉がくっついて”万一”になって(スマホのAlexaアプリで確認)、それが”10000”と認識されて、”10002”って答えが返ってきました。

しょうがないので”足す”をやめて”プラス”にしたら、ましになりました。音声認識はまだまだ改善の余地があるんでしょうね…

追記:
結局”プラス”でも誤認識が多いです。

スキルを作成する

Amazon Developer Consoleで”amazon alexa”を選択します。

”サインイン”をクリックします。

おなじみのログイン画面がでるのでログインします。

”あなたのAlexaコンソール”から”Skills”を選択します。

スキル一覧画面が表示されるので”スキルの作成”ボタンを押します。

スキル名を入力します。

”スキル作成時のデフォルト”を”日本語”に変更して”次へ”を押します。

ここで日本語にしておかないと、日本語の呼び出し名だとビルドに失敗します。

”カスタム”を選択して”スキルを作成”ボタンを押します。

スキルビルダー画面が表示されます。

画面左の”呼び出し名”をクリックし、”スキルの呼び出し名”に”計算”と入れます。

”アレクサ、計算を開いて”と話しかけるとこの計算スキルが起動されるようになります。

画面左の”インテント”をクリックし、”インテントを追加”ボタンを押します。

インテント名”Addition”と入力して”カスタムインテントを作成”ボタンを押します。

次の画面の”サンプル発話”に”{one} プラス {two}”と入力して右にある”+”を押します。

この”Sample Utterances”が実際にユーザーが声で話しかける部分になります。{one}と{two}が引数、”スロット”です。処理するプログラムにパラメータとして渡されます。スロットの前後には半角のスペースを入れてください。

スロットが自動的に認識され、画面下の”インテントスロット”の所に追加されます。

次に各スロットの属性をセットします。”インテントスロット”の1番目の”ダイアログを編集”をクリックします。

スロットの編集画面が表示されます。

”スロットのタイプ”ではスロットの型を指定します。数値なのでデフォルトで用意されているAMAZON.NUMBER型を選択しました。

このスロットは必須項目なので、その下にある”このインテントを完了させるために、このスロットは必須ですか?”をONにします。

”Alexaの音声プロンプト”ではユーザーが{one}を指定しなかった場合に、ここに書かれた文章でAlexaがユーザーに質問してきます。上でこのスロットを必須項目としたので、この項目も必須になります。

入力したら忘れずに”+”を押しましょう。

画面左から”two”のスロットを選択して、同じように入力します。

入力したら、画面左上の”モデルを保存”を押します。保存完了のメッセージが出たら、”モデルをビルド”のボタンを押します。

保存されると以下のメッセージが表示されます。

ビルドを開始すると下のメッセージが表示され…

完了するとこのメッセージが表示されます。

次にこのスキルが呼び出されたら、どの処理を呼び出すかを指定するのですが…

今はまだ処理を作ってないのでAmazon Developer Console側は一旦ここで離れて、次はAWS Lambdaで実際の処理を作成していきます。

Lambda側を作成したらAmazon Developer Consoleに戻り、左の”エンドポイント”をクリックし、”AWS LambdaのARN”を選択します。

”デフォルトの地域”にLambdaのARNを貼り付け、”エンドポイントを保存”ボタンを押します。

これでスキルの作成は完了です。