Successfully reported this slideshow.
We use your LinkedIn profile and activity data to personalize ads and to show you more relevant ads. You can change your ad preferences anytime.

Alexa ASK CLI を v2にバージョンアップしたので、スキルプロジェクトを v2 用にマイグレーションした

122 views

Published on

2020年5月26日【AAJUG Online】ついにGA!ASK CLI v2.0 大特集!【最新Updateも】

Published in: Technology
  • Be the first to comment

  • Be the first to like this

Alexa ASK CLI を v2にバージョンアップしたので、スキルプロジェクトを v2 用にマイグレーションした

  1. 1. ©2020 - TAKARA 1 Alexa ASK CLI を v2 にして スキルを v2 用にマイグレーション スキルプロジェクト した バージョンアップしたので
  2. 2. TAKARA 寳島 瑞矢(Mitsuya Takarashima) 仕事 株式会社アッシュビー Oracle Exadata, SAP HANAを使用した DWHシステムの設計、開発 Business Intelligence / ETLシステムの設計、開発 プライベート サッカー / ギター / サボテン栽培 Amazon Echo Alexaスキル開発(2018年1月~) ©2020 - TAKARA 2 ※はじめて作ったスキル
  3. 3. ©2020 - TAKARA 3 本日のポイント v1 v2 使ってない 使ってる 使う気はない 使ってみようかな スキル作成済み スキルプロジェクト マイグレーション ポイント① スキルプロジェクト v2用にセットアップ 使ってみて! ポイント②
  4. 4. ポイント①マイグレーション ©2020 - TAKARA 4 v1 v2 バージョンアップ マイグレーション デプロイ デプロイ スキルプロジェクト ASK CLI v1 ASK CLI v2
  5. 5. ©2020 - TAKARA 5 マイグレーション大嫌い ①めんどくさい ②必ずトラブる
  6. 6. ©2020 - TAKARA 6 なんで v2 にしちゃったのか Timer APIを使いたかったから
  7. 7. ©2020 - TAKARA 7 Timer API (サンプル)⇒ ANNOUNCEオペレーション NOTIFY_ONLYオペレーション (やりたい)⇒ LAUNCH_TASKオペレーション
  8. 8. ©2020 - TAKARA 8 LAUNCH_TASKオペレーション カスタム タスク
  9. 9. ©2020 - TAKARA 9 カスタムタスク ASK CLI v2 じゃないとデプロイできない
  10. 10. ©2020 - TAKARA 10 何も考えず v2 にしちゃった npm install -g ask-cli@2
  11. 11. ©2020 - TAKARA 11 あれ?カスタムタスク 動かない
  12. 12. ©2020 - TAKARA 12 あれ?カスタムタスク 動かない Skill Connectionsは開発者プレビュー中だった
  13. 13. ©2020 - TAKARA 13 Timer API 熱 冷めた Timer API ASK CLI v2 ▲
  14. 14. ©2020 - TAKARA 14 結果 ASK CLI v2 にしただけ マイグレーションと向き合う気になった
  15. 15. ©2020 - TAKARA 15 マイグレーションの流れ ①ASK CLI v1 で ask deploy しておく ②ASK CLI を v2 へバージョンアップ ④デプロイ ③スキルプロジェクトをマイグレーション
  16. 16. ©2020 - TAKARA 16 ASK CLI v1 で ask deploy しておく スキルが正しく動作する状態にしておくこと
  17. 17. ©2020 - TAKARA 17 ask deploy --target ない ASK CLI v1 skill 〇 × × model 〇 〇 × lambda 〇 〇 〇 ASK CLI v2 skill 〇 model 〇 lambda 〇
  18. 18. ©2020 - TAKARA 18 ASK CLI を v2へバージョンアップ npm install -g ask-cli@2
  19. 19. ©2020 - TAKARA 19 スキルプロジェクトフォルダ │ .gitattributes │ .gitignore │ LICENSE.txt │ README.md │ skill.json │ ├─.ask │ config │ ├─.github │ PULL_REQUEST_TEMPLATE.md │ ├─hooks │ : │ ├─instructions │ : │ ├─lambda │ └─custom │ │ index.js │ │ local-debugger.js │ │ package-lock.json │ │ package.json │ │ util.js │ │ │ └─node_modules │ │ : │ └─models ja-JP.json スキルのルートフォルダで スキルプロジェクトをマイグレーション
  20. 20. ©2020 - TAKARA 20 スキルプロジェクトをマイグレーション ask util upgrade-project
  21. 21. ©2020 - TAKARA 21 ########################################################################## [Info]: New MINOR version (v2.2.0) of ask-cli is available now. Current version v2.1.1. It is recommended to use the latest version. Please update using "npm upgrade -g ask-cli". ########################################################################## Preview of the upgrade result from v1 to v2: - The original v1 skill project will be entirely moved to .¥.legacy¥ - JSON files for Skill ID amzn1.ask.skill.3cde50e1-xxxx-xxxx-xxxx-55431160679e (such as skill.json) will be moved to .¥skill- package¥ - Existing Lambda codebase will be moved into "lambda" folder - Region default: v1 "lambda/custom" -> v2 ".¥lambda¥lambdacustom" for existing Lambda ARN arn:aws:lambda:us-east- 1:xxxxxxxxxxxx:function:ask-custom-MonHun-default ? Do you want to execute the upgrade based on the preview above? (Y/n)
  22. 22. ©2020 - TAKARA 22 ########################################################################## [Info]: New MINOR version (v2.2.0) of ask-cli is available now. Current version v2.1.1. It is recommended to use the latest version. Please update using "npm upgrade -g ask-cli". ########################################################################## Preview of the upgrade result from v1 to v2: - The original v1 skill project will be entirely moved to .¥.legacy¥ - JSON files for Skill ID amzn1.ask.skill.3cde50e1-xxxx-xxxx-xxxx-55431160679e (such as skill.json) will be moved to .¥skill- package¥ - Existing Lambda codebase will be moved into "lambda" folder - Region default: v1 "lambda/custom" -> v2 ".¥lambda¥lambdacustom" for existing Lambda ARN arn:aws:lambda:us-east- 1:xxxxxxxxxxxx:function:ask-custom-MonHun-default ? Do you want to execute the upgrade based on the preview above? Yes Project migration finished.
  23. 23. ©2020 - TAKARA 23 スキルプロジェクトフォルダ │ .gitattributes │ .gitignore │ LICENSE.txt │ README.md │ skill.json │ ├─.ask │ config │ ├─.github │ PULL_REQUEST_TEMPLATE.md │ ├─hooks │ : │ ├─instructions │ : │ ├─lambda │ └─custom │ │ index.js │ │ local-debugger.js │ │ package-lock.json │ │ package.json │ │ util.js │ │ │ └─node_modules │ │ : │ └─models ja-JP.json スキルプロジェクトフォルダ │ .gitattributes │ .gitignore │ ask-resources.json │ ├─.ask │ ask-states.json │ ├─.github │ PULL_REQUEST_TEMPLATE.md │ ├─.legacy │ │ LICENSE.txt │ │ : │ │ │ └─models │ ja-JP.json │ ├─lambda │ └─lambdacustom │ │ index.js │ │ local-debugger.js │ │ package-lock.json │ │ package.json │ │ util.js │ │ │ └─node_modules │ │ : │ └─skill-package │ skill.json │ ├─assets │ └─images │ ja-JP_largeIconUri.png │ ja-JP_smallIconUri.png │ └─interactionModels └─custom ja-JP.json
  24. 24. ©2020 - TAKARA 24 スキルプロジェクトフォルダ │ .gitattributes │ .gitignore │ LICENSE.txt │ README.md │ skill.json │ ├─.ask │ config │ ├─.github │ PULL_REQUEST_TEMPLATE.md │ ├─hooks │ : │ ├─instructions │ : │ ├─lambda │ └─custom │ │ index.js │ │ local-debugger.js │ │ package-lock.json │ │ package.json │ │ util.js │ │ │ └─node_modules │ │ : │ └─models ja-JP.json スキルプロジェクトフォルダ │ .gitattributes │ .gitignore │ ask-resources.json │ ├─.ask │ ask-states.json │ ├─.github │ PULL_REQUEST_TEMPLATE.md │ ├─.legacy ※v1スキルは、.legacy配下にまるっとコピーされている │ │ LICENSE.txt │ │ : │ │ │ └─models │ ja-JP.json │ ├─lambda │ └─lambdacustom │ │ index.js │ │ local-debugger.js │ │ package-lock.json │ │ package.json │ │ util.js │ │ │ └─node_modules │ │ : │ └─skill-package │ skill.json │ ├─assets │ └─images │ ja-JP_largeIconUri.png │ ja-JP_smallIconUri.png │ └─interactionModels └─custom ja-JP.json
  25. 25. ©2020 - TAKARA 25 スキルプロジェクトフォルダ │ .gitattributes │ .gitignore │ LICENSE.txt │ README.md │ skill.json │ ├─.ask │ config │ ├─.github │ PULL_REQUEST_TEMPLATE.md │ ├─hooks │ : │ ├─instructions │ : │ ├─lambda │ └─custom │ │ index.js │ │ local-debugger.js │ │ package-lock.json │ │ package.json │ │ util.js │ │ │ └─node_modules │ │ : │ └─models ja-JP.json スキルプロジェクトフォルダ │ .gitattributes │ .gitignore │ ask-resources.json ※.ask/config ⇒ ask-resources.json │ ├─.ask │ ask-states.json │ ├─.github │ PULL_REQUEST_TEMPLATE.md │ ├─.legacy │ │ LICENSE.txt │ │ : │ │ │ └─models │ ja-JP.json │ ├─lambda │ └─lambdacustom │ │ index.js │ │ local-debugger.js │ │ package-lock.json │ │ package.json │ │ util.js │ │ │ └─node_modules │ │ : │ └─skill-package │ skill.json │ ├─assets │ └─images │ ja-JP_largeIconUri.png │ ja-JP_smallIconUri.png │ └─interactionModels └─custom ja-JP.json
  26. 26. ©2020 - TAKARA 26 スキルプロジェクトフォルダ │ .gitattributes │ .gitignore │ LICENSE.txt │ README.md │ skill.json │ ├─.ask │ config │ ├─.github │ PULL_REQUEST_TEMPLATE.md │ ├─hooks │ : │ ├─instructions │ : │ ├─lambda │ └─custom │ │ index.js │ │ local-debugger.js │ │ package-lock.json │ │ package.json │ │ util.js │ │ │ └─node_modules │ │ : │ └─models ja-JP.json スキルプロジェクトフォルダ │ .gitattributes │ .gitignore │ ask-resources.json │ ├─.ask │ ask-states.json │ ├─.github │ PULL_REQUEST_TEMPLATE.md │ ├─.legacy │ │ LICENSE.txt │ │ : │ │ │ └─models │ ja-JP.json │ ├─lambda │ └─lambdacustom ※フォルダ名が変わっている │ │ index.js │ │ local-debugger.js │ │ package-lock.json │ │ package.json │ │ util.js │ │ │ └─node_modules │ │ : │ └─skill-package │ skill.json │ ├─assets │ └─images │ ja-JP_largeIconUri.png │ ja-JP_smallIconUri.png │ └─interactionModels └─custom ja-JP.json
  27. 27. ©2020 - TAKARA 27 スキルプロジェクトフォルダ │ .gitattributes │ .gitignore │ LICENSE.txt │ README.md │ skill.json │ ├─.ask │ config │ ├─.github │ PULL_REQUEST_TEMPLATE.md │ ├─hooks │ : │ ├─instructions │ : │ ├─lambda │ └─custom │ │ index.js │ │ local-debugger.js │ │ package-lock.json │ │ package.json │ │ util.js │ │ │ └─node_modules │ │ : │ └─models ja-JP.json スキルプロジェクトフォルダ │ .gitattributes │ .gitignore │ ask-resources.json │ ├─.ask │ ask-states.json │ ├─.github │ PULL_REQUEST_TEMPLATE.md │ ├─.legacy │ │ LICENSE.txt │ │ : │ │ │ └─models │ ja-JP.json │ ├─lambda │ └─lambdacustom │ │ index.js │ │ local-debugger.js │ │ package-lock.json │ │ package.json │ │ util.js │ │ │ └─node_modules │ │ : │ └─skill-package │ skill.json ※./skill.json ⇒ ./skill-package/skill.json │ ├─assets │ └─images ※スキルアイコンファイルが生成されている │ ja-JP_largeIconUri.png │ ja-JP_smallIconUri.png │ └─interactionModels └─custom ja-JP.json ※./models/ja-JP.json ⇒ ./skill-package/interactionModels/custom/ja-JP.json
  28. 28. ©2020 - TAKARA 28 ファイルがなかったら? ASK CLI v1 skill config × skill.json × model ja-JP.json × lambda index.js × ASK CLI v2 skill エラーになる 自動生成される model 自動生成される lambda 生成されない
  29. 29. ©2020 - TAKARA 29 デプロイ ask deploy
  30. 30. ©2020 - TAKARA 30 PS C:¥MonHun> ask deploy ########################################################################## [Info]: New MINOR version (v2.2.0) of ask-cli is available now. Current version v2.1.1. It is recommended to use the latest version. Please update using "npm upgrade -g ask-cli". ########################################################################## ==================== Deploy Skill Metadata ==================== Skill package deployed successfully. Skill ID: amzn1.ask.skill.3cde50e1-xxxx-xxxx-xxxx-55431160679e ==================== Build Skill Code ==================== npm WARN hello-world@1.1.0 No repository field. Skill code built successfully. Code for region default built to C:¥work¥AlexaSkills¥MonHun¥.ask¥lambda¥lambdacustom¥build.zip successfully with build flow nodejs-npm. ==================== Deploy Skill Infrastructure ==================== √ Deploy Alexa skill infrastructure for region "default" Skill infrastructures deployed successfully through @ask-cli/lambda-deployer. ==================== Enable Skill ==================== Skill is already enabled, skip the enable process. PS C:¥MonHun>
  31. 31. ©2020 - TAKARA 31 おさらい ①ASK CLI v1 で ask deploy しておく ②npm install -g ask-cli@2 ④ask deploy ③ask util upgrade-project
  32. 32. ポイント②セットアップ ©2020 - TAKARA 32 v2セットアップ 関数アップロード デプロイ スキルプロジェクト Lambda関数 ビルド コンソール ASK CLI v2
  33. 33. ©2020 - TAKARA 33 セットアップの流れ ①ASK CLI v2 をインストール ②Lambda関数をエクスポート ④スキルプロジェクトを初期化 ③スキルパッケージをダウンロード ⑤デプロイ
  34. 34. ©2020 - TAKARA 34 ASK CLI を インストール npm install -g ask-cli
  35. 35. ©2020 - TAKARA 35 Lambda関数をエクスポート スキルプロジェクトフォルダ └─lambda └─lambdacustom │ index.js │ local-debugger.js │ package-lock.json │ package.json │ util.js │ └─node_modules │ :
  36. 36. ©2020 - TAKARA 36 スキルパッケージをダウンロード ask smapi export-package -s <スキルID> -g <ステージ> development live
  37. 37. ©2020 - TAKARA 37 スキルパッケージをダウンロード スキルプロジェクトフォルダ ├─lambda │ └─lambdacustom │ │ index.js │ │ local-debugger.js │ │ package-lock.json │ │ package.json │ │ util.js │ │ │ └─node_modules │ │ : │ └─skill-package │ skill.json │ ├─assets │ └─images │ ja-JP_largeIconUri.png │ ja-JP_smallIconUri.png │ └─interactionModels └─custom ja-JP.json PS C:¥work¥AlexaSkills¥inittest> ask smapi export-package -s <スキルID> -g <ステージ> [Error]: A skill-package fold already exists in the current working directory. (注)skill-packageフォルダが存在しているとエラーになる
  38. 38. ©2020 - TAKARA 38 スキルプロジェクトを初期化 ask init
  39. 39. ©2020 - TAKARA 39 PS C:¥work¥AlexaSkills¥inittest> ask init This utility will walk you through creating an ask-resources.json file to help deploy your skill. This only covers the most common attributes and will suggest sensible defaults using AWS Lambda as your endpoint. This command is supposed to be running at the root of your ask-cli project, with the Alexa skill package and AWS Lambda code downloaded already. - Use "ask smapi export-package" to download the skill package. - Move your Lambda code into this folder depending on how you manage the code. It can be downloaded from AWS console, or git-cloned if you use git to control version. This will utilize your 'default' ASK profile. Run with "--profile" to specify a different profile. Press ^C at any time to quit. ? ask-resources.json already exists in current directory. Do you want to overwrite it? Yes ? Skill Id (leave empty to create one): amzn1.ask.skill.64f3c973-xxxx-xxxx-xxxx-4403c381e7b9 ? Skill package path: ./skill-package ? Lambda code path (for default region): ./lambda/lambdacustom/ ? Use AWS CloudFormation to deploy Lambda? No ? Lambda runtime: nodejs10.x ? Lambda handler: index.handler
  40. 40. ©2020 - TAKARA 40 Writing to C:¥work¥AlexaSkills¥inittest¥ask-resources.json: { "askcliResourcesVersion": "2020-03-31", "profiles": { "default": { "skillMetadata": { "src": "./skill-package" }, "code": { "default": { "src": "./lambda/lambdacustom/" } }, "skillInfrastructure": { "type": "@ask-cli/lambda-deployer", "userConfig": { "runtime": "nodejs10.x", "handler": "index.handler" } } } } }
  41. 41. ©2020 - TAKARA 41 Writing to C:¥work¥AlexaSkills¥inittest¥.ask¥ask-states.json: { "askcliStatesVersion": "2020-03-31", "profiles": { "default": { "skillId": "amzn1.ask.skill.64f3c973-xxxx-xxxx-xxxx-4403c381e7b9", "skillInfrastructure": { "@ask-cli/lambda-deployer": { "deployState": {} } } } } } ? Does this look correct?
  42. 42. ©2020 - TAKARA 42 Writing to C:¥work¥AlexaSkills¥inittest¥.ask¥ask-states.json: { "askcliStatesVersion": "2020-03-31", "profiles": { "default": { "skillId": "amzn1.ask.skill.64f3c973-xxxx-xxxx-xxxx-4403c381e7b9", "skillInfrastructure": { "@ask-cli/lambda-deployer": { "deployState": {} } } } } } ? Does this look correct? Yes Project bootstrap from deployer "@ask-cli/lambda-deployer" succeeded. Success! Run "ask deploy" to deploy your skill. スキルプロジェクトフォルダ │ ask-resources.json │ ├─.ask │ ask-states.json │ ├─infrastructure │ └─lambda-deployer │ ├─lambda │ └─lambdacustom │ │ index.js │ │ local-debugger.js │ │ package-lock.json │ │ package.json │ │ util.js │ │ │ └─node_modules │ │ : │ └─skill-package │ skill.json │ ├─assets │ └─images │ ja-JP_largeIconUri.png │ ja-JP_smallIconUri.png │ └─interactionModels └─custom ja-JP.json
  43. 43. ©2020 - TAKARA 43 ask-states.json "deployState": {} "deployState": { "default": { "iamRole": "arn:aws:iam::032972243388:role/ask-lambda-xxxxxxx", "lambda": { "arn": "arn:aws:lambda:us-east-1:032972243388:function:ask-custom-xxxxxxx-default", "lastModified": "", "revisionId": "" } } }
  44. 44. ©2020 - TAKARA 44 デプロイ ask deploy
  45. 45. ©2020 - TAKARA 45 おさらい ①npm install -g ask-cli ②Lambda関数エクスポート ④ask init ③ask smapi export-package ⑤ask deploy
  46. 46. ©2020 - TAKARA 46 おしまい
  47. 47. 参考 ◆ASK CLI v1 to v2 Migration Guide https://developer.amazon.com/en-US/docs/alexa/smapi/ask-cli-v1-to-v2-migration-guide.html ◆ASK CLIコマンドリファレンス(v2) https://developer.amazon.com/ja-JP/docs/alexa/smapi/ask-cli-command-reference.html ◆スキルパッケージAPIリファレンス https://developer.amazon.com/ja-JP/docs/alexa/smapi/skill-package-api-reference.html ◆スキルマニフェストのスキーマ https://developer.amazon.com/ja-JP/docs/alexa/smapi/skill-manifest.html ©2020 - TAKARA 47

×