Alexa カスタムスキルを Terraform + Lambda + Python で作成する

概要

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個以上推奨)。

参考

第1回Alexa道場:Alexaについて知ろう

カスタムスキルとは

コメント

タイトルとURLをコピーしました