利用方法 - actindi/serverless-alexa-ts GitHub Wiki

利用方法

このテンプレートの導入方法を次の項目に沿って説明します。

  • 事前準備
  • テンプレートをコピー
  • モジュールのインストール
  • 設定ファイルの作成
  • ASK CLI の初期化
  • モデルのアップロード
  • 動作確認
  • テストの実行

事前準備

次の 3 つを用意します。 すでにできていれば、飛ばして次に進んでください。

  • AWS アカウント
  • Amazon Developper アカウント
  • Node.js

順に説明します。

AWS アカウントの準備

AWS のアカウントを用意します。IAM でも構いません。 アカウントにはAdministratorAccess[1]のロールを与えてください。

注意 AdministratorAccessの権限は小さくありません。より少ない権限で利用するにはNarrowing the Serverless IAM Deployment Policy · Issue #1439 · serverless/serverlessなどを参考にしてみてください。

Amazon Developper アカウントの準備

Alexa | アレクサ| Amazon 開発者ポータルにアクセスして、Amazon Developper アカウントを作ります。

注意 Amazon.com のアカウントも持っている場合、ハマることがあります。Alexa 開発者アカウント作成時のハマりどころ : Alexa Blogsを参考に回避してください。

Node.js のインスト ー ル

インストールしていない場合には、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 スキルの作成

Alexa | アレクサ| Amazon 開発者ポータルにアクセスしてスキルを作成します。名前は何でも構いません。 とりあえず作るだけでいいです。

スキル作成

作成したら、スキル ID を控えておきます。

設定ファイルの作成

次の 2 つの設定ファイルを作ります。

  • .npmrc
  • config/config.yml

.npmrc

次の内容で*.npmrc* ファイルを作成します。

skill_id = <先程控えた スキルID>

config/config.yml

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"

Lambda のデプロイ

はじめてのデプロイの前に AWS アカウントの設置をする必要があります。 次のページを参考に設定してください。

アカウントの設定ができれば次のコマンドでデプロイできます。

$ npm run sls:deploy

デプロイできれば、AWS コンソールの Lambda の管理画面を開いてください。 Lambda 関数がデプロイされていることを確認するとともに、ARN を確認します。

lambda関数

ASK CLI の初期化

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:開いているテストコードのみデバッガで実行する

コードにブレークポイントを設定して実行してみてください。 そこで処理が一時停止し、変数の値を確認しながらステップ実行できます。

バグつぶしの強力な武器になるので活用してください。

さあ、あなたのスキルを作りましょう

動作確認ができたら、スキルを作る準備が整いました。

あなたのアイデアで素敵なスキルを作ってください。

⚠️ **GitHub.com Fallback** ⚠️