VSCodeでのAlexaスキル開発をサポートする拡張が発表されました(Alexa Skills Kit (ASK) Toolkit (Beta))
VSCodeでのAlexaスキル開発をサポートする拡張が発表されました(Alexa Skills Kit (ASK) Toolkit (Beta))
AIソリューション部の大阪の方の持田です。
Alexa Blogsにて、ASK Toolkit for Visual Studio Code が発表されましたので、使ってみました。
ASK CLIを使って Node.js で Lambdaを書いている場合に、よく使う ASK CLI のコマンドをメニューなどで補助してくれる点と、model.json
や Alexa SDK V2
のコードを生成してくれる機能が便利でした。
Accelerate Skill Development Using the ASK Toolkit for Visual Studio Code (Beta)
必要なもの
利用環境には、次のものが必要です。
- git
- Visual Studio Code 1.22.0 以降
- ASK CLI Ver.1.4.0 以降
- ASK CLIを使ってデプロイができるAmazonアカウントおよびLambdaをホストするAWSアカウント
インストール
Visual Studio Marketplace にアクセスして "Install" ボタンをクリックするか、エディタの拡張機能にて "Alexa Skills Kit" で検索して結果のトップをインストールする、の両方で可能です。
ドキュメント
英語ですが、詳細なドキュメントがすでに用意されています。
使い方と主な機能
1. ワークスペースの作成
To create files and folders for your skill project, VS Code requires that a workspace folder first be open.
とありますので、まずワークスペースを作成します。
今回は ask-vscode.code-workspace
というワークスペースを作成、そこに ask-vscode
というフォルダを追加しました。
2. スキルテンプレートの作成
- スキルテンプレートからスキルを作成
- 既存のスキルをクローンする
の2つの方法を選ぶことができます。
それぞれ、VSCodeのコマンドパレットから ASK: Create a skill from a template
および ASK: Clone a skill
を選択することで実行できます。
前者のテンプレートから生成の場合、VSCodeのターミナルが開いて
$ ask new --profile "default" --template "Fact" --skill-name "myfirst-helloword"
このようなコマンドが入力され実行されました。
なお、ASK CLIでプロファイルが複数ある場合は、実行するプロファイルをメニューから選択可能でした。
VSCodeで扱うプロファイルを固定したい場合は、VSCodeのユーザー設定でask.profile
にて指定可能です。
3. スニペットの生成
便利な機能にスニペットの生成があります。
例えば、index.js
でask
とタイプすると、
askSDKDelegateDirective
askSDKIntentHandler
askSDKSpeak
のメニューが表示され、それぞれ、次のようなスニペットが挿入されます。
askSDKDelegateDirective
handlerInput.responseBuilder .addDelegateDirective() .getResponse();
askSDKIntentHandler
const IntentHandler = { canHandle(handlerInput) { return handlerInput.requestEnvelope.request.type === "IntentRequest" && handlerInput.requestEnvelope.request.intent.name === "IntentIntent"; }, handle(handlerInput) { return handlerInput.responseBuilder .speak("Replace this text") .getResponse(); } }
askSDKSpeak
handlerInput.responseBuilder .speak("") .getResponse();
そのほか、model.json
を開いた状態でask
とタイプすると、ビルトインインテントとカスタムインテントをJSON
形式で追加するためのメニューが表示されます。
ビルトインインテント
askModelCancelIntent
を選んだ場合
{ "name": "AMAZON.CancelIntent", "samples": [] }
カスタムインテント
askModelCustomIntent
を選んだ場合
{ "name": "", "slots": [ { "name": "", "type": "", "samples": [ "" ] } ], "samples": [ "" ] }
また、インタラクションモデルのJSONファイルでは、interactionModel
、languageModel
、invocationName
などの値に対してマウスオーバー時に概要が表示されました。
4. デプロイ対象の選択
VSCodeのエクスプローラーで、lambda
フォルダでオプションメニューを表示するとDeploy to AWS Lambda
、models
フォルダでオプションメニューを表示するとDeploy the interatcion model(s)
が表示され、それぞれ対象を絞ってデプロイが可能です。
その他
ASK CLIの機能を利用して、validateやシミュレーション、審査提出も可能です。
終わりに
今回の拡張はBetaとのことですが、すでにAlexaスキル開発には十分な機能を備えていると感じました。皆様もAlexaスキル開発の効率化にぜひどうぞ!