概要
Alexa カスタムスキル
Alexa のアプリケーションロジックを、開発者が AWS などでバックエンドサービスとして構築したもの。
Alexa Skills Kit が提供されている言語は 3つ。
- Node.js
- Java
- Python
Alexa カスタムスキル作成
「ハロー」と呼んだら「ハローパイソン!」と返すスキルを作成する。
Amazon Developer アカウント作成
Amazon Alexa より Amazon Developer アカウントを作成する。
Developer Console よりスキル(対話モデル)作成
以下を選択し、スキルを作成。
- スキル名
- プライマリーロケール : 日本語
- モデル : カスタム
- バックエンドリソースをホスティングする方法 : ユーザ定義のプロビジョニング
- スキルに追加するテンプレート : スクラッチで作成
以下を設定。
- 呼び出し → スキルの呼び出し名
Alexa スキル ID をメモっておく。
- エンドポイント → スキルID
インテント(話したイベントのこと)からサンプル発話を登録する。
- インテント → HelloWorldIntent → サンプル発話に適当単語を登録
Terraform でエンドポイント用 Lambda 作成
下記コードを Git Clone。Python のコードは hosted skill から持ってきたもの。
Python コード内には Class が複数あるが、とりあえず上 2つだけを利用する。
- LaunchRequestHandler : スキル呼び出し名のみ
- HelloWorldIntentHandler : スキル呼び出し名の後にマッチするインテントがあった場合
- HelpIntentHandler
- CancelOrStopIntentHandler
- FallbackIntentHandler
- SessionEndedRequestHandler
- IntentReflectorHandler
- CatchAllExceptionHandler
AWS アカウントに terraform ユーザが存在すると想定。
variable "profile" {
description = "awsのprofile"
default = "terraform"
}
Alexa Skill ID を変数に設定する。
vi dev.tfvars
alexa_skill_id = "amzn1.ask.skill.xxxx"
Terraform からデプロイ。
terraform apply -var-file=dev.tfvars
Lambda の ARN をメモっておく。
Developer Console より
「ビルド」コンソールより、エンドポイントを登録する。
- Lambda の ARN を「デフォルトの地域」に貼り付け
- エンドポイント保存
モデルをビルドする。
- モデルを保存
- モデルをビルド
以下のように全てグリーンになっていれば OK。
Alexa シミュレータでテスト
「テスト」コンソールより
- テスト -> ステージを「開発中」
以下のようのやり取りとなる。インテントに飛ぶために、サンプル発話を大量に作っておく必要がある(30個以上推奨)。
コメント