VSCodeでのAlexaスキル開発をサポートする拡張が発表されました(Alexa Skills Kit (ASK) Toolkit (Beta))

この記事は公開されてから1年以上経過しています。情報が古い可能性がありますので、ご注意ください。

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.jsonAlexa 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.jsaskとタイプすると、

  • 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ファイルでは、interactionModellanguageModelinvocationNameなどの値に対してマウスオーバー時に概要が表示されました。

4. デプロイ対象の選択

VSCodeのエクスプローラーで、lambdaフォルダでオプションメニューを表示するとDeploy to AWS Lambdamodelsフォルダでオプションメニューを表示するとDeploy the interatcion model(s) が表示され、それぞれ対象を絞ってデプロイが可能です。

その他

ASK CLIの機能を利用して、validateやシミュレーション、審査提出も可能です。

終わりに

今回の拡張はBetaとのことですが、すでにAlexaスキル開発には十分な機能を備えていると感じました。皆様もAlexaスキル開発の効率化にぜひどうぞ!