Alexa SkillのLambda関数の作成は、「設計図」のテンプレートから作成する方法が、Alexa道場では紹介されています。
でも、この場合、もともとの設計図のサンプルコードが入っており、それを編集していくのは面倒だったり、何より、関数名の一部は変更できず、関数名が長く気持ちが悪いです。
そこで、「一から作成」を使って、ローカル環境で作成したプロジェクトをアップロードする方法を紹介します。
どちらかというと備忘録です。
#Node.jsプロジェクトの作成とindex.jsの作成
まず、ローカルドライブで、プロジェクトを作成し、package.json
を作成します。
$ mkdir SKILL_DIRECTORY
$ cd SKILL_DIRECTORY
$ npm init
npm init
では、package nameなどを聞かれますが、とりあえずそのまま[Enter]します。
続いて、Alexaのモジュールを追加します。
$ npm install ask-sdk
すると、node_modulesというフォルダが作成され、ここにask-sdkのモジュールが以下のように追加されます。
フォルダ |
---|
.bin |
ask-sdk |
ask-sdk-core |
ask-sdk-dynamodb-persistence-adapter |
ask-sdk-model |
ask-sdk-runtime |
aws-sdk |
base64-js |
buffer |
... |
ここで、不要と思われるモジュールのフォルダは削除します。必要なモジュールのフォルダのみにします。
aws-sdk
は、Lamdba上に存在するため削除します。
その他base64-js
などask
で始まらないモジュールのフォルダを削除します。
ask
で始まるモジュールは、そのフォルダにpackage.json
ファイルが存在します。
このファイルを開いて_where
を探すとそこには、ローカルフォルダの位置が記載されています。リポジトリで使用するようですが、ローカルフォルダがわかるのが嫌なら削除してしまいましょう。
また、node_modulesと同じフォルダには、package-lock.json
が作成されます。
ここには、インストールしたパッケージのリストと他のパッケージとの依存関係が記載されています。上記で削除したbase64-js
などの記載のブロックは、記載を削除します。
記載を変えなくても、ここで説明する「一から作成」ではなんら影響がないのですが、ASK CLIでdeployする(アップロードする)ようになると、このpackage.json
に記載があるファイルが、ローカルPC上に存在しない場合、自動的にサーバからダウンロードして、それを一緒にdeployするようなので、消しておいたほうが無難です。
続いて、基本となるindex.js
を作成します。このファイルが呼び出しファイルになります。自分でなんらかデフォルトのファイルを用意します。これは、SKILL_DIRECTORYの直下に置きます。
その後、このindex.js
とnode_modules
フォルダをzipで圧縮します。
#zipファイルのLamdbaへのアップロード
AWSのLambdaの関数から「関数の作成」の「一から作成」を選び、関数名を自由につけて、「関数の作成」ボタンを押下します。
続いて、関数コードのコードエントリタイプを「.zipファイルをアップロード」を選択し、zipファイルをアップロードします。
これであとは、エンドポイントなどを設定すれば、Alexa developer consoleから作成した関数を呼び出すことができます。