SlideShare ist ein Scribd-Unternehmen logo
1 von 47
Downloaden Sie, um offline zu lesen
©2020 - TAKARA 1
Alexa ASK CLI を v2 にして
スキルを v2 用にマイグレーション
スキルプロジェクト
した
バージョンアップしたので
TAKARA
寳島 瑞矢(Mitsuya Takarashima)
仕事
株式会社アッシュビー
Oracle Exadata, SAP HANAを使用した DWHシステムの設計、開発
Business Intelligence / ETLシステムの設計、開発
プライベート
サッカー / ギター / サボテン栽培
Amazon Echo Alexaスキル開発(2018年1月~)
©2020 - TAKARA 2
※はじめて作ったスキル
©2020 - TAKARA 3
本日のポイント
v1
v2
使ってない
使ってる 使う気はない
使ってみようかな
スキル作成済み
スキルプロジェクト
マイグレーション
ポイント①
スキルプロジェクト
v2用にセットアップ
使ってみて!
ポイント②
ポイント①マイグレーション
©2020 - TAKARA 4
v1 v2
バージョンアップ
マイグレーション
デプロイ デプロイ
スキルプロジェクト
ASK CLI v1 ASK CLI v2
©2020 - TAKARA 5
マイグレーション大嫌い
①めんどくさい
②必ずトラブる
©2020 - TAKARA 6
なんで v2 にしちゃったのか
Timer APIを使いたかったから
©2020 - TAKARA 7
Timer API
(サンプル)⇒ ANNOUNCEオペレーション
NOTIFY_ONLYオペレーション
(やりたい)⇒ LAUNCH_TASKオペレーション
©2020 - TAKARA 8
LAUNCH_TASKオペレーション
カスタム
タスク
©2020 - TAKARA 9
カスタムタスク
ASK CLI v2 じゃないとデプロイできない
©2020 - TAKARA 10
何も考えず v2 にしちゃった
npm install -g ask-cli@2
©2020 - TAKARA 11
あれ?カスタムタスク 動かない
©2020 - TAKARA 12
あれ?カスタムタスク 動かない
Skill Connectionsは開発者プレビュー中だった
©2020 - TAKARA 13
Timer API 熱 冷めた
Timer API ASK CLI v2
▲
©2020 - TAKARA 14
結果 ASK CLI v2 にしただけ
マイグレーションと向き合う気になった
©2020 - TAKARA 15
マイグレーションの流れ
①ASK CLI v1 で ask deploy しておく
②ASK CLI を v2 へバージョンアップ
④デプロイ
③スキルプロジェクトをマイグレーション
©2020 - TAKARA 16
ASK CLI v1 で ask deploy しておく
スキルが正しく動作する状態にしておくこと
©2020 - TAKARA 17
ask deploy --target ない
ASK CLI v1
skill 〇 × ×
model 〇 〇 ×
lambda 〇 〇 〇
ASK CLI v2
skill 〇
model 〇
lambda 〇
©2020 - TAKARA 18
ASK CLI を v2へバージョンアップ
npm install -g ask-cli@2
©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
スキルのルートフォルダで
スキルプロジェクトをマイグレーション
©2020 - TAKARA 20
スキルプロジェクトをマイグレーション
ask util upgrade-project
©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)
©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.
©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
©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
©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
©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
©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
©2020 - TAKARA 28
ファイルがなかったら?
ASK CLI v1
skill config ×
skill.json ×
model ja-JP.json ×
lambda index.js ×
ASK CLI v2
skill エラーになる
自動生成される
model 自動生成される
lambda 生成されない
©2020 - TAKARA 29
デプロイ
ask deploy
©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>
©2020 - TAKARA 31
おさらい
①ASK CLI v1 で ask deploy しておく
②npm install -g ask-cli@2
④ask deploy
③ask util upgrade-project
ポイント②セットアップ
©2020 - TAKARA 32
v2セットアップ
関数アップロード デプロイ
スキルプロジェクト
Lambda関数 ビルド
コンソール
ASK CLI v2
©2020 - TAKARA 33
セットアップの流れ
①ASK CLI v2 をインストール
②Lambda関数をエクスポート
④スキルプロジェクトを初期化
③スキルパッケージをダウンロード
⑤デプロイ
©2020 - TAKARA 34
ASK CLI を インストール
npm install -g ask-cli
©2020 - TAKARA 35
Lambda関数をエクスポート
スキルプロジェクトフォルダ
└─lambda
└─lambdacustom
│ index.js
│ local-debugger.js
│ package-lock.json
│ package.json
│ util.js
│
└─node_modules
│ :
©2020 - TAKARA 36
スキルパッケージをダウンロード
ask smapi export-package -s <スキルID> -g <ステージ>
development
live
©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フォルダが存在しているとエラーになる
©2020 - TAKARA 38
スキルプロジェクトを初期化
ask init
©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
©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"
}
}
}
}
}
©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?
©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
©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": ""
}
}
}
©2020 - TAKARA 44
デプロイ
ask deploy
©2020 - TAKARA 45
おさらい
①npm install -g ask-cli
②Lambda関数エクスポート
④ask init
③ask smapi export-package
⑤ask deploy
©2020 - TAKARA 46
おしまい
参考
◆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

Weitere ähnliche Inhalte

Kürzlich hochgeladen

HTML Injection Attacks: Impact and Mitigation Strategies
HTML Injection Attacks: Impact and Mitigation StrategiesHTML Injection Attacks: Impact and Mitigation Strategies
HTML Injection Attacks: Impact and Mitigation StrategiesBoston Institute of Analytics
 
Apidays New York 2024 - Scaling API-first by Ian Reasor and Radu Cotescu, Adobe
Apidays New York 2024 - Scaling API-first by Ian Reasor and Radu Cotescu, AdobeApidays New York 2024 - Scaling API-first by Ian Reasor and Radu Cotescu, Adobe
Apidays New York 2024 - Scaling API-first by Ian Reasor and Radu Cotescu, Adobeapidays
 
Scaling API-first – The story of a global engineering organization
Scaling API-first – The story of a global engineering organizationScaling API-first – The story of a global engineering organization
Scaling API-first – The story of a global engineering organizationRadu Cotescu
 
Real Time Object Detection Using Open CV
Real Time Object Detection Using Open CVReal Time Object Detection Using Open CV
Real Time Object Detection Using Open CVKhem
 
Data Cloud, More than a CDP by Matt Robison
Data Cloud, More than a CDP by Matt RobisonData Cloud, More than a CDP by Matt Robison
Data Cloud, More than a CDP by Matt RobisonAnna Loughnan Colquhoun
 
Boost Fertility New Invention Ups Success Rates.pdf
Boost Fertility New Invention Ups Success Rates.pdfBoost Fertility New Invention Ups Success Rates.pdf
Boost Fertility New Invention Ups Success Rates.pdfsudhanshuwaghmare1
 
Exploring the Future Potential of AI-Enabled Smartphone Processors
Exploring the Future Potential of AI-Enabled Smartphone ProcessorsExploring the Future Potential of AI-Enabled Smartphone Processors
Exploring the Future Potential of AI-Enabled Smartphone Processorsdebabhi2
 
Boost PC performance: How more available memory can improve productivity
Boost PC performance: How more available memory can improve productivityBoost PC performance: How more available memory can improve productivity
Boost PC performance: How more available memory can improve productivityPrincipled Technologies
 
The 7 Things I Know About Cyber Security After 25 Years | April 2024
The 7 Things I Know About Cyber Security After 25 Years | April 2024The 7 Things I Know About Cyber Security After 25 Years | April 2024
The 7 Things I Know About Cyber Security After 25 Years | April 2024Rafal Los
 
Advantages of Hiring UIUX Design Service Providers for Your Business
Advantages of Hiring UIUX Design Service Providers for Your BusinessAdvantages of Hiring UIUX Design Service Providers for Your Business
Advantages of Hiring UIUX Design Service Providers for Your BusinessPixlogix Infotech
 
Handwritten Text Recognition for manuscripts and early printed texts
Handwritten Text Recognition for manuscripts and early printed textsHandwritten Text Recognition for manuscripts and early printed texts
Handwritten Text Recognition for manuscripts and early printed textsMaria Levchenko
 
Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...
Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...
Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...Miguel Araújo
 
From Event to Action: Accelerate Your Decision Making with Real-Time Automation
From Event to Action: Accelerate Your Decision Making with Real-Time AutomationFrom Event to Action: Accelerate Your Decision Making with Real-Time Automation
From Event to Action: Accelerate Your Decision Making with Real-Time AutomationSafe Software
 
Developing An App To Navigate The Roads of Brazil
Developing An App To Navigate The Roads of BrazilDeveloping An App To Navigate The Roads of Brazil
Developing An App To Navigate The Roads of BrazilV3cube
 
Automating Google Workspace (GWS) & more with Apps Script
Automating Google Workspace (GWS) & more with Apps ScriptAutomating Google Workspace (GWS) & more with Apps Script
Automating Google Workspace (GWS) & more with Apps Scriptwesley chun
 
Axa Assurance Maroc - Insurer Innovation Award 2024
Axa Assurance Maroc - Insurer Innovation Award 2024Axa Assurance Maroc - Insurer Innovation Award 2024
Axa Assurance Maroc - Insurer Innovation Award 2024The Digital Insurer
 
Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...
Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...
Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...Drew Madelung
 
Finology Group – Insurtech Innovation Award 2024
Finology Group – Insurtech Innovation Award 2024Finology Group – Insurtech Innovation Award 2024
Finology Group – Insurtech Innovation Award 2024The Digital Insurer
 
How to Troubleshoot Apps for the Modern Connected Worker
How to Troubleshoot Apps for the Modern Connected WorkerHow to Troubleshoot Apps for the Modern Connected Worker
How to Troubleshoot Apps for the Modern Connected WorkerThousandEyes
 
Strategies for Landing an Oracle DBA Job as a Fresher
Strategies for Landing an Oracle DBA Job as a FresherStrategies for Landing an Oracle DBA Job as a Fresher
Strategies for Landing an Oracle DBA Job as a FresherRemote DBA Services
 

Kürzlich hochgeladen (20)

HTML Injection Attacks: Impact and Mitigation Strategies
HTML Injection Attacks: Impact and Mitigation StrategiesHTML Injection Attacks: Impact and Mitigation Strategies
HTML Injection Attacks: Impact and Mitigation Strategies
 
Apidays New York 2024 - Scaling API-first by Ian Reasor and Radu Cotescu, Adobe
Apidays New York 2024 - Scaling API-first by Ian Reasor and Radu Cotescu, AdobeApidays New York 2024 - Scaling API-first by Ian Reasor and Radu Cotescu, Adobe
Apidays New York 2024 - Scaling API-first by Ian Reasor and Radu Cotescu, Adobe
 
Scaling API-first – The story of a global engineering organization
Scaling API-first – The story of a global engineering organizationScaling API-first – The story of a global engineering organization
Scaling API-first – The story of a global engineering organization
 
Real Time Object Detection Using Open CV
Real Time Object Detection Using Open CVReal Time Object Detection Using Open CV
Real Time Object Detection Using Open CV
 
Data Cloud, More than a CDP by Matt Robison
Data Cloud, More than a CDP by Matt RobisonData Cloud, More than a CDP by Matt Robison
Data Cloud, More than a CDP by Matt Robison
 
Boost Fertility New Invention Ups Success Rates.pdf
Boost Fertility New Invention Ups Success Rates.pdfBoost Fertility New Invention Ups Success Rates.pdf
Boost Fertility New Invention Ups Success Rates.pdf
 
Exploring the Future Potential of AI-Enabled Smartphone Processors
Exploring the Future Potential of AI-Enabled Smartphone ProcessorsExploring the Future Potential of AI-Enabled Smartphone Processors
Exploring the Future Potential of AI-Enabled Smartphone Processors
 
Boost PC performance: How more available memory can improve productivity
Boost PC performance: How more available memory can improve productivityBoost PC performance: How more available memory can improve productivity
Boost PC performance: How more available memory can improve productivity
 
The 7 Things I Know About Cyber Security After 25 Years | April 2024
The 7 Things I Know About Cyber Security After 25 Years | April 2024The 7 Things I Know About Cyber Security After 25 Years | April 2024
The 7 Things I Know About Cyber Security After 25 Years | April 2024
 
Advantages of Hiring UIUX Design Service Providers for Your Business
Advantages of Hiring UIUX Design Service Providers for Your BusinessAdvantages of Hiring UIUX Design Service Providers for Your Business
Advantages of Hiring UIUX Design Service Providers for Your Business
 
Handwritten Text Recognition for manuscripts and early printed texts
Handwritten Text Recognition for manuscripts and early printed textsHandwritten Text Recognition for manuscripts and early printed texts
Handwritten Text Recognition for manuscripts and early printed texts
 
Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...
Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...
Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...
 
From Event to Action: Accelerate Your Decision Making with Real-Time Automation
From Event to Action: Accelerate Your Decision Making with Real-Time AutomationFrom Event to Action: Accelerate Your Decision Making with Real-Time Automation
From Event to Action: Accelerate Your Decision Making with Real-Time Automation
 
Developing An App To Navigate The Roads of Brazil
Developing An App To Navigate The Roads of BrazilDeveloping An App To Navigate The Roads of Brazil
Developing An App To Navigate The Roads of Brazil
 
Automating Google Workspace (GWS) & more with Apps Script
Automating Google Workspace (GWS) & more with Apps ScriptAutomating Google Workspace (GWS) & more with Apps Script
Automating Google Workspace (GWS) & more with Apps Script
 
Axa Assurance Maroc - Insurer Innovation Award 2024
Axa Assurance Maroc - Insurer Innovation Award 2024Axa Assurance Maroc - Insurer Innovation Award 2024
Axa Assurance Maroc - Insurer Innovation Award 2024
 
Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...
Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...
Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...
 
Finology Group – Insurtech Innovation Award 2024
Finology Group – Insurtech Innovation Award 2024Finology Group – Insurtech Innovation Award 2024
Finology Group – Insurtech Innovation Award 2024
 
How to Troubleshoot Apps for the Modern Connected Worker
How to Troubleshoot Apps for the Modern Connected WorkerHow to Troubleshoot Apps for the Modern Connected Worker
How to Troubleshoot Apps for the Modern Connected Worker
 
Strategies for Landing an Oracle DBA Job as a Fresher
Strategies for Landing an Oracle DBA Job as a FresherStrategies for Landing an Oracle DBA Job as a Fresher
Strategies for Landing an Oracle DBA Job as a Fresher
 

Empfohlen

PEPSICO Presentation to CAGNY Conference Feb 2024
PEPSICO Presentation to CAGNY Conference Feb 2024PEPSICO Presentation to CAGNY Conference Feb 2024
PEPSICO Presentation to CAGNY Conference Feb 2024Neil Kimberley
 
Content Methodology: A Best Practices Report (Webinar)
Content Methodology: A Best Practices Report (Webinar)Content Methodology: A Best Practices Report (Webinar)
Content Methodology: A Best Practices Report (Webinar)contently
 
How to Prepare For a Successful Job Search for 2024
How to Prepare For a Successful Job Search for 2024How to Prepare For a Successful Job Search for 2024
How to Prepare For a Successful Job Search for 2024Albert Qian
 
Social Media Marketing Trends 2024 // The Global Indie Insights
Social Media Marketing Trends 2024 // The Global Indie InsightsSocial Media Marketing Trends 2024 // The Global Indie Insights
Social Media Marketing Trends 2024 // The Global Indie InsightsKurio // The Social Media Age(ncy)
 
Trends In Paid Search: Navigating The Digital Landscape In 2024
Trends In Paid Search: Navigating The Digital Landscape In 2024Trends In Paid Search: Navigating The Digital Landscape In 2024
Trends In Paid Search: Navigating The Digital Landscape In 2024Search Engine Journal
 
5 Public speaking tips from TED - Visualized summary
5 Public speaking tips from TED - Visualized summary5 Public speaking tips from TED - Visualized summary
5 Public speaking tips from TED - Visualized summarySpeakerHub
 
ChatGPT and the Future of Work - Clark Boyd
ChatGPT and the Future of Work - Clark Boyd ChatGPT and the Future of Work - Clark Boyd
ChatGPT and the Future of Work - Clark Boyd Clark Boyd
 
Getting into the tech field. what next
Getting into the tech field. what next Getting into the tech field. what next
Getting into the tech field. what next Tessa Mero
 
Google's Just Not That Into You: Understanding Core Updates & Search Intent
Google's Just Not That Into You: Understanding Core Updates & Search IntentGoogle's Just Not That Into You: Understanding Core Updates & Search Intent
Google's Just Not That Into You: Understanding Core Updates & Search IntentLily Ray
 
Time Management & Productivity - Best Practices
Time Management & Productivity -  Best PracticesTime Management & Productivity -  Best Practices
Time Management & Productivity - Best PracticesVit Horky
 
The six step guide to practical project management
The six step guide to practical project managementThe six step guide to practical project management
The six step guide to practical project managementMindGenius
 
Beginners Guide to TikTok for Search - Rachel Pearson - We are Tilt __ Bright...
Beginners Guide to TikTok for Search - Rachel Pearson - We are Tilt __ Bright...Beginners Guide to TikTok for Search - Rachel Pearson - We are Tilt __ Bright...
Beginners Guide to TikTok for Search - Rachel Pearson - We are Tilt __ Bright...RachelPearson36
 
Unlocking the Power of ChatGPT and AI in Testing - A Real-World Look, present...
Unlocking the Power of ChatGPT and AI in Testing - A Real-World Look, present...Unlocking the Power of ChatGPT and AI in Testing - A Real-World Look, present...
Unlocking the Power of ChatGPT and AI in Testing - A Real-World Look, present...Applitools
 
12 Ways to Increase Your Influence at Work
12 Ways to Increase Your Influence at Work12 Ways to Increase Your Influence at Work
12 Ways to Increase Your Influence at WorkGetSmarter
 
Ride the Storm: Navigating Through Unstable Periods / Katerina Rudko (Belka G...
Ride the Storm: Navigating Through Unstable Periods / Katerina Rudko (Belka G...Ride the Storm: Navigating Through Unstable Periods / Katerina Rudko (Belka G...
Ride the Storm: Navigating Through Unstable Periods / Katerina Rudko (Belka G...DevGAMM Conference
 
Barbie - Brand Strategy Presentation
Barbie - Brand Strategy PresentationBarbie - Brand Strategy Presentation
Barbie - Brand Strategy PresentationErica Santiago
 

Empfohlen (20)

PEPSICO Presentation to CAGNY Conference Feb 2024
PEPSICO Presentation to CAGNY Conference Feb 2024PEPSICO Presentation to CAGNY Conference Feb 2024
PEPSICO Presentation to CAGNY Conference Feb 2024
 
Content Methodology: A Best Practices Report (Webinar)
Content Methodology: A Best Practices Report (Webinar)Content Methodology: A Best Practices Report (Webinar)
Content Methodology: A Best Practices Report (Webinar)
 
How to Prepare For a Successful Job Search for 2024
How to Prepare For a Successful Job Search for 2024How to Prepare For a Successful Job Search for 2024
How to Prepare For a Successful Job Search for 2024
 
Social Media Marketing Trends 2024 // The Global Indie Insights
Social Media Marketing Trends 2024 // The Global Indie InsightsSocial Media Marketing Trends 2024 // The Global Indie Insights
Social Media Marketing Trends 2024 // The Global Indie Insights
 
Trends In Paid Search: Navigating The Digital Landscape In 2024
Trends In Paid Search: Navigating The Digital Landscape In 2024Trends In Paid Search: Navigating The Digital Landscape In 2024
Trends In Paid Search: Navigating The Digital Landscape In 2024
 
5 Public speaking tips from TED - Visualized summary
5 Public speaking tips from TED - Visualized summary5 Public speaking tips from TED - Visualized summary
5 Public speaking tips from TED - Visualized summary
 
ChatGPT and the Future of Work - Clark Boyd
ChatGPT and the Future of Work - Clark Boyd ChatGPT and the Future of Work - Clark Boyd
ChatGPT and the Future of Work - Clark Boyd
 
Getting into the tech field. what next
Getting into the tech field. what next Getting into the tech field. what next
Getting into the tech field. what next
 
Google's Just Not That Into You: Understanding Core Updates & Search Intent
Google's Just Not That Into You: Understanding Core Updates & Search IntentGoogle's Just Not That Into You: Understanding Core Updates & Search Intent
Google's Just Not That Into You: Understanding Core Updates & Search Intent
 
How to have difficult conversations
How to have difficult conversations How to have difficult conversations
How to have difficult conversations
 
Introduction to Data Science
Introduction to Data ScienceIntroduction to Data Science
Introduction to Data Science
 
Time Management & Productivity - Best Practices
Time Management & Productivity -  Best PracticesTime Management & Productivity -  Best Practices
Time Management & Productivity - Best Practices
 
The six step guide to practical project management
The six step guide to practical project managementThe six step guide to practical project management
The six step guide to practical project management
 
Beginners Guide to TikTok for Search - Rachel Pearson - We are Tilt __ Bright...
Beginners Guide to TikTok for Search - Rachel Pearson - We are Tilt __ Bright...Beginners Guide to TikTok for Search - Rachel Pearson - We are Tilt __ Bright...
Beginners Guide to TikTok for Search - Rachel Pearson - We are Tilt __ Bright...
 
Unlocking the Power of ChatGPT and AI in Testing - A Real-World Look, present...
Unlocking the Power of ChatGPT and AI in Testing - A Real-World Look, present...Unlocking the Power of ChatGPT and AI in Testing - A Real-World Look, present...
Unlocking the Power of ChatGPT and AI in Testing - A Real-World Look, present...
 
12 Ways to Increase Your Influence at Work
12 Ways to Increase Your Influence at Work12 Ways to Increase Your Influence at Work
12 Ways to Increase Your Influence at Work
 
ChatGPT webinar slides
ChatGPT webinar slidesChatGPT webinar slides
ChatGPT webinar slides
 
More than Just Lines on a Map: Best Practices for U.S Bike Routes
More than Just Lines on a Map: Best Practices for U.S Bike RoutesMore than Just Lines on a Map: Best Practices for U.S Bike Routes
More than Just Lines on a Map: Best Practices for U.S Bike Routes
 
Ride the Storm: Navigating Through Unstable Periods / Katerina Rudko (Belka G...
Ride the Storm: Navigating Through Unstable Periods / Katerina Rudko (Belka G...Ride the Storm: Navigating Through Unstable Periods / Katerina Rudko (Belka G...
Ride the Storm: Navigating Through Unstable Periods / Katerina Rudko (Belka G...
 
Barbie - Brand Strategy Presentation
Barbie - Brand Strategy PresentationBarbie - Brand Strategy Presentation
Barbie - Brand Strategy Presentation
 

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

  • 1. ©2020 - TAKARA 1 Alexa ASK CLI を v2 にして スキルを v2 用にマイグレーション スキルプロジェクト した バージョンアップしたので
  • 2. TAKARA 寳島 瑞矢(Mitsuya Takarashima) 仕事 株式会社アッシュビー Oracle Exadata, SAP HANAを使用した DWHシステムの設計、開発 Business Intelligence / ETLシステムの設計、開発 プライベート サッカー / ギター / サボテン栽培 Amazon Echo Alexaスキル開発(2018年1月~) ©2020 - TAKARA 2 ※はじめて作ったスキル
  • 3. ©2020 - TAKARA 3 本日のポイント v1 v2 使ってない 使ってる 使う気はない 使ってみようかな スキル作成済み スキルプロジェクト マイグレーション ポイント① スキルプロジェクト v2用にセットアップ 使ってみて! ポイント②
  • 4. ポイント①マイグレーション ©2020 - TAKARA 4 v1 v2 バージョンアップ マイグレーション デプロイ デプロイ スキルプロジェクト ASK CLI v1 ASK CLI v2
  • 5. ©2020 - TAKARA 5 マイグレーション大嫌い ①めんどくさい ②必ずトラブる
  • 6. ©2020 - TAKARA 6 なんで v2 にしちゃったのか Timer APIを使いたかったから
  • 7. ©2020 - TAKARA 7 Timer API (サンプル)⇒ ANNOUNCEオペレーション NOTIFY_ONLYオペレーション (やりたい)⇒ LAUNCH_TASKオペレーション
  • 8. ©2020 - TAKARA 8 LAUNCH_TASKオペレーション カスタム タスク
  • 9. ©2020 - TAKARA 9 カスタムタスク ASK CLI v2 じゃないとデプロイできない
  • 10. ©2020 - TAKARA 10 何も考えず v2 にしちゃった npm install -g ask-cli@2
  • 11. ©2020 - TAKARA 11 あれ?カスタムタスク 動かない
  • 12. ©2020 - TAKARA 12 あれ?カスタムタスク 動かない Skill Connectionsは開発者プレビュー中だった
  • 13. ©2020 - TAKARA 13 Timer API 熱 冷めた Timer API ASK CLI v2 ▲
  • 14. ©2020 - TAKARA 14 結果 ASK CLI v2 にしただけ マイグレーションと向き合う気になった
  • 15. ©2020 - TAKARA 15 マイグレーションの流れ ①ASK CLI v1 で ask deploy しておく ②ASK CLI を v2 へバージョンアップ ④デプロイ ③スキルプロジェクトをマイグレーション
  • 16. ©2020 - TAKARA 16 ASK CLI v1 で ask deploy しておく スキルが正しく動作する状態にしておくこと
  • 17. ©2020 - TAKARA 17 ask deploy --target ない ASK CLI v1 skill 〇 × × model 〇 〇 × lambda 〇 〇 〇 ASK CLI v2 skill 〇 model 〇 lambda 〇
  • 18. ©2020 - TAKARA 18 ASK CLI を v2へバージョンアップ npm install -g ask-cli@2
  • 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. ©2020 - TAKARA 20 スキルプロジェクトをマイグレーション ask util upgrade-project
  • 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. ©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. ©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. ©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. ©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. ©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. ©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. ©2020 - TAKARA 28 ファイルがなかったら? ASK CLI v1 skill config × skill.json × model ja-JP.json × lambda index.js × ASK CLI v2 skill エラーになる 自動生成される model 自動生成される lambda 生成されない
  • 29. ©2020 - TAKARA 29 デプロイ ask deploy
  • 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. ©2020 - TAKARA 31 おさらい ①ASK CLI v1 で ask deploy しておく ②npm install -g ask-cli@2 ④ask deploy ③ask util upgrade-project
  • 32. ポイント②セットアップ ©2020 - TAKARA 32 v2セットアップ 関数アップロード デプロイ スキルプロジェクト Lambda関数 ビルド コンソール ASK CLI v2
  • 33. ©2020 - TAKARA 33 セットアップの流れ ①ASK CLI v2 をインストール ②Lambda関数をエクスポート ④スキルプロジェクトを初期化 ③スキルパッケージをダウンロード ⑤デプロイ
  • 34. ©2020 - TAKARA 34 ASK CLI を インストール npm install -g ask-cli
  • 35. ©2020 - TAKARA 35 Lambda関数をエクスポート スキルプロジェクトフォルダ └─lambda └─lambdacustom │ index.js │ local-debugger.js │ package-lock.json │ package.json │ util.js │ └─node_modules │ :
  • 36. ©2020 - TAKARA 36 スキルパッケージをダウンロード ask smapi export-package -s <スキルID> -g <ステージ> development live
  • 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. ©2020 - TAKARA 38 スキルプロジェクトを初期化 ask init
  • 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. ©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. ©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. ©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. ©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. ©2020 - TAKARA 44 デプロイ ask deploy
  • 45. ©2020 - TAKARA 45 おさらい ①npm install -g ask-cli ②Lambda関数エクスポート ④ask init ③ask smapi export-package ⑤ask deploy
  • 46. ©2020 - TAKARA 46 おしまい
  • 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