ask-cliで作成済みのAlexa skillの情報を取得する

ask-cliつかってますか?ask-cliを使うと、Alexa Skillの設定をコード化できるため、ある程度運用が固まってきたスキルの管理などに便利です。逆にGUIの対話モデルビルダーが使いやすいため、これからスキル […]

広告ここから
広告ここまで

目次

    ask-cliつかってますか?ask-cliを使うと、Alexa Skillの設定をコード化できるため、ある程度運用が固まってきたスキルの管理などに便利です。逆にGUIの対話モデルビルダーが使いやすいため、これからスキルを作っていこうという方がいきなりcliから始めるのはちょっと大変かもしれません。

    ということで、GUIで作ったスキルの情報をask-cliにインポートする方法をまとめます。

    get-skillコマンドでスキル情報をインポートする

    スキル情報はask api get-skillで取得できます。

    $ ask api get-skill -h
    
      Usage: get-skill <-s|--skill-id <skill-id>> [-g|--stage <stage>] [-p|--profile <profile>] [--debug]
    
      get a skill
    
      Options:
    
        -s, --skill-id <skill-id>  skill-id for the skill
        -g, --stage <stage>        stage for the skill
        -p, --profile <profile>    ask cli profile
        --debug                    ask cli debug mode
        -h, --help                 output usage information

    実行すると、スキルの基本情報がJSONで返ってきます。

    $ ask api get-skill -s amzn1.ask.skill.xxxxx-xxx-xxx-xxxx
    {
      "manifest": {
        "publishingInformation": {
          "locales": {
            "ja-JP": {
              "name": "ハローアレクサ"
            }
          }
        },
        "apis": {
          "custom": {
            "endpoint": {
              "uri": "arn:aws:lambda:ap-northeast-1:9999999:function:example-development-hello"
            },
            "interfaces": []
          }
        },
        "manifestVersion": "1.0"
      }
    }
    

    ask-cliで管理する場合のファイル配置場所

    ask createで作成されたファイルのうち、./skill.jsonがこのアウトプットと同じ構成となります。なので、インポートする場合は以下のような形でファイル出力してもよさそうです。

    $ ask api get-skill -s amzn1.ask.skill.xxxxx-xxx-xxx-xxxx > ./skill.json

    get-modelコマンドで対話モデルを取得する

    インテント・スロット・サンプル発話などのビルド済み対話モデルは、api get-modelコマンドで取得できます。

    $ ask api get-model -h
    
      Usage: get-model <-s|--skill-id <skill-id>> [-g|--stage <stage>] <-l|--locale <locale>> [-p|--profile <profile>] [--debug]
    
      get an interaction model for skill
    
      Options:
    
        -s, --skill-id <skill-id>  skill-id for the skill
        -g, --stage <stage>        stage for the skill
        -l, --locale <locale>      model locale for the skill
        -p, --profile <profile>    ask cli profile
        --debug                    ask cli debug mode
        -h, --help                 output usage information

    実際に取得すると、以下のようになります。

    $ ask api get-model -s amzn1.ask.skill.xxxxx-xxx-xxx-xxxx --stage development -l ja-JP
    
    {
      "interactionModel": {
        "languageModel": {
          "invocationName": "ハローアレクサ",
          "intents": [
            {
              "name": "AMAZON.CancelIntent",
              "samples": []
            },
            {
              "name": "AMAZON.HelpIntent",
              "samples": []
            },
            {
              "name": "AMAZON.StopIntent",
              "samples": []
            },
            {
              "name": "ExampleIntent",
              "slots": [
                {
                  "name": "sample_number",
                  "type": "AMAZON.NUMBER"
                }
              ],
              "samples": [
                "こんにちはアレクサ",
                "正解は {sample_number} 番"
              ]
            }
          ]
        }
      }
    }

    ask-cliで管理する場合のファイル配置場所

    ask craeteで作成されるファイル構成では、models/配下に対話モデルの設定が配置されます。

    $ tree -L 2
    .
    ├── lambda
    │   └── custom
    ├── models
    │   └── en-US.json
    

    そのため、インポートする場合は、以下のようにしてファイル出力しておくとよいでしょう。

    $ ask api get-model -s amzn1.ask.skill.xxxxx-xxx-xxx-xxxx --stage development -l ja-JP > ./models/ja-JP.json

    Lambdaのソースコード配置場所

    ask createした場合、/lambda/custom/配下にファイルが配置されています。

    $ tree -L 3
    .
    ├── lambda
    │   └── custom
    │       ├── index.js
    │       ├── node_modules
    │       ├── package-lock.json
    │       └── package.json
    ├── models
    

    ソースコードをここに移動させることで、Lambdaのコードもask-cliから管理できるようになります。

    広告ここから
    広告ここまで
    Home
    Search
    Bookmark