利用方法 - actindi/serverless-alexa-ts GitHub Wiki
このテンプレートの導入方法を次の項目に沿って説明します。
- 事前準備
- テンプレートをコピー
- モジュールのインストール
- 設定ファイルの作成
- ASK CLI の初期化
- モデルのアップロード
- 動作確認
- テストの実行
次の 3 つを用意します。 すでにできていれば、飛ばして次に進んでください。
- AWS アカウント
- Amazon Developper アカウント
- Node.js
順に説明します。
AWS のアカウントを用意します。IAM でも構いません。 アカウントにはAdministratorAccess[1]のロールを与えてください。
注意 AdministratorAccessの権限は小さくありません。より少ない権限で利用するにはNarrowing the Serverless IAM Deployment Policy · Issue #1439 · serverless/serverlessなどを参考にしてみてください。
Alexa | アレクサ| Amazon 開発者ポータルにアクセスして、Amazon Developper アカウントを作ります。
注意 Amazon.com のアカウントも持っている場合、ハマることがあります。Alexa 開発者アカウント作成時のハマりどころ : Alexa Blogsを参考に回避してください。
インストールしていない場合には、Node.jsからダウンロードしてインストールします。 AWS Lambda の Node ランタイムの最新バージョンは Node.js 8.10.0 なので LTS 版で十分でしょう。 yarnもインストールしてください。
任意の作業ディレクトリで次のコマンドを実行します。
$ npm install serverless
$ node_modules/.bin/serverless install --url https://github.com/HeRoMo/serverless-aws-alexa-ts --name your-app-name
$ cd your-app-name
$ yarn install
Alexa | アレクサ| Amazon 開発者ポータルにアクセスしてスキルを作成します。名前は何でも構いません。 とりあえず作るだけでいいです。
作成したら、スキル ID を控えておきます。
次の 2 つの設定ファイルを作ります。
- .npmrc
- config/config.yml
次の内容で*.npmrc* ファイルを作成します。
skill_id = <先程控えた スキルID>
config/config.template.ymlに雛形があるのでまずコピ ー します。
$ cp config/config.template.yml config/config.yml
config/config.ymlは次の様になっているのでSKILL_ID
の値を先程控えたスキル ID で書き換えます。
develop:
memorySize: 128
timezone: Asia/Tokyo
alexa:
SKILL_ID: "amzn1.ask.skill.your-skill-id"
production:
memorySize: 256
timezone: Asia/Tokyo
alexa:
SKILL_ID: "amzn1.ask.skill.your-skill-id"
はじめてのデプロイの前に AWS アカウントの設置をする必要があります。 次のページを参考に設定してください。
アカウントの設定ができれば次のコマンドでデプロイできます。
$ npm run sls:deploy
デプロイできれば、AWS コンソールの Lambda の管理画面を開いてください。 Lambda 関数がデプロイされていることを確認するとともに、ARN を確認します。
ask-cliは Lambda のデプロイまでサポートしていますが、その機能は使わないので、Skip AWS credential for ask-cli.を選択しても構いません。
$ /node_modules/.bin/ask init
-------------------- Initialize CLI --------------------
Setting up ask profile: [default]
? Please choose one from the following AWS profiles for skill's Lambda function deployment.
(Use arrow keys)
❯ default
──────────────
Skip AWS credential for ask-cli.
Use the AWS environment variables.
──────────────
続いてブラウザが開いて、amazon developer のログインが求められます。 ログインして次のメッセージがブラウザに表示されれば認証成功です。
Sign in was successful. Close this browser and return to the command line interface.
認証設定ができれば、次のコマンドで発話モデルをアップロ ー ドできます。 ※すでに web コンソ ー ル上で発話モデルを作り込んでいる場合、それを上書きで消してしまうので注意。
$ npm run ask:update-model
再び、Alexa コンソールを開きます。
ビルド>エンドポイントを開いて、先程確認した Lambda 関数の ARN をデフォルトの地域にコピー&ペーストして、エンドポイントを保存します。
続いて、テストタブを開いてテストを有効にします。 「サンプルスキルを開いて」と入力して 「今日の気分はいかがですか?」 と帰ってくれば成功です。
今度はローカルでの Jest + VirtualAlexa を利用したテストを実行してみます。 次のコマンドを実行します。
$ npm test
VSCode ではデバッガを利用できます。 そのための設定も .vscode/launch.jsonに用意しています。
VSCode の Debug を開くと、次の 2 つが選択できると思います。
- Jest All: すべてのテストをデバッガで実行する
- Jest File:開いているテストコードのみデバッガで実行する
コードにブレークポイントを設定して実行してみてください。 そこで処理が一時停止し、変数の値を確認しながらステップ実行できます。
バグつぶしの強力な武器になるので活用してください。
動作確認ができたら、スキルを作る準備が整いました。
あなたのアイデアで素敵なスキルを作ってください。