Share
Embed
Transcript
150 slides
-
Amazon Alexa Dev – [email protected] Amazon Alexa Skills Development 101
Ryan Chung III Digital Education Institute 1 -
Amazon Alexa Dev – [email protected] Amazon Alexa Development • 概述
• 開發流程介紹 • 實作:Hello World! • 實作:ASK CLI • 實作:Hello CLI • 實作:讀取使用者輸入 • 實作:Alexa, tell me a cold joke. • 如何除錯? • 實作:增加美式感嘆詞 • 實作:隨機網路笑話 2 -
Amazon Alexa Dev – [email protected] Amazon Alexa Development • 官方範例:Quiz
Game Skill • 官方範例:Trivia Skill • 官方範例:How-To Skill • 官方範例:Team Look up • 上架資訊 3 -
Amazon Alexa Dev – [email protected] Alexa Devices $179.99 US$49.99 US$129.99
插電使用 插電使用 電量充飽 約9hr 聲控 聲控 按鈕 / 聲控 單聲道 立體聲 立體聲 & 杜比 4 -
Amazon Alexa Dev – [email protected] 56,750 第三方技能 Alexa News 13
付費技能 In Skill Purchase Amazon Pay 1億 智慧喇叭銷售 89 國家可訂購Echo 6 語言 (英德西法意日) Source: Voicebot.ai 2018/12 英式英文 美式英文 加拿大式英文 印度式英文 澳洲式英文 -
Amazon Alexa Dev – [email protected] 最熱門的技能種類 (2018/10) 1. Games, Trivia
& Accessories (Over 8000) 2. Music & Audio(Over 5000) 3. News (Over 4000) 4. Education & Reference(Over 4000) 5. Lifestyle(Over 4000) 6. Novelty & Humor (Over 2000) 7. Productivity (Over 1000) 8. Smart Home (Over 1000) 9. Business & Finace (Over 1000) 10.Health & Fitness (Over 1000) 15 -
Amazon Alexa Dev – [email protected] 播放電影預告片 Show me some latest
movies. Play the trailer for number X. 17 https://www.youtube.com/watch?v=aKg85qEFMHs -
Amazon Alexa Dev – [email protected] 播放音樂 • Just say, “Alexa!”
and then… – “Play [song name] by [artist]”. – “Pause” pauses the currently playing track. – “Play [Discover Weekly] playlist”. – “Volume up/down” turns volume up or down. – “Stop” stops the currently playing track. 19 -
Amazon Alexa Dev – [email protected] 可以跟Alexa聊什麼? Who is the president
of united states? The US President is Donald Trump. 20 -
Amazon Alexa Dev – [email protected] 可以跟Alexa聊什麼? Are you hungry? I
don't get hungry or thirsty, but thank you for asking. 21 -
Amazon Alexa Dev – [email protected] 可以跟Alexa聊什麼? Do you have a
brain? I don't have a brain like you do. My smarts live in the cloud. 22 -
Amazon Alexa Dev – [email protected] 可以跟Alexa聊什麼? How old are you?
In years if you're counting it's three. 23 -
Amazon Alexa Dev – [email protected] 可以跟Alexa聊什麼? Are you hot? No,
I don't really feel hot or cold, but thanks for asking. 24 -
Amazon Alexa Dev – [email protected] 可以跟Alexa聊什麼? Can you speak Chinese?
I speak fluent English and conversational Pig Latin. My accent is atrocious, but it's good enough to keep me from getting lost in Pig Latium. 25 -
Amazon Alexa Dev – [email protected] 可以跟Alexa聊什麼? Pick a card Your
card is the four of spades. 26 -
Amazon Alexa Dev – [email protected] 可以跟Alexa聊什麼? Roll a six sided
die I rolled a die and got 4. 27 -
Amazon Alexa Dev – [email protected] 可以跟Alexa聊什麼? Good morning Good morning,
and happy birthday to comedian Ellen Degeneres. She's a funny lady who loves to dance. I'm pretty sure we'd be BFFs, if we ever got a chance to hang out! 29 -
Amazon Alexa Dev – [email protected] 可以跟Alexa聊什麼? How much are you?
You can search on Amazon.com to see how much I cost. 30 -
Amazon Alexa Dev – [email protected] 語音助理技能設計方向 • 讓人們更快達成目的 • 語音控制音樂播放
Fast • 讓人們更簡單地達成目的 • 語音控制電燈開關、語音設定倒數計時 Easy • 增添生活趣味 • 具有挑戰性的遊戲 Fun Source: Voice Design Guide – Amazon Alexa 32 -
Amazon Alexa Dev – [email protected] 設計流程 Dialog Sketch Experience Flow
Interaction Model 33 -
Amazon Alexa Dev – [email protected] 建立應用程式功用與使用者情境 • 界定用途與功能 – 這個技能的用途是什麼?為什麼大家會想要用?
– 人們會怎麼使用這個技能,前中後的情境? – 人們可以從這個技能中得到什麼獨特的體驗,是別 的方式沒有的? • 界定使用者情境 – 使用者可以用這個技能做什麼、不能做什麼 – 使用者可以從這個技能中獲得什麼資訊? – 使用者如何啟動這個技能? – 這個技能有哪些特色? – 是不是有一些資訊需要從網站或APP中取得? 34 -
Amazon Alexa Dev – [email protected] 人機互動腳本準則 • 以人們真正會說的話來設計,而不是那種文章上的口吻 • 不要假設使用者知道要怎麼做或是知道會發生什麼事
真實 • 避免使用有多重含義的詞句、片語 • 引導使用者提供必要的資訊 明確 • 清楚地把選項呈現出來 • 一般而言,一次不要丟出超過三個選項 • 一次向使用者要一個資訊 簡單 35 -
Amazon Alexa Dev – [email protected] Alexa Skill Type • Custom
skill – 網路服務介接 – 互動遊戲 • Smart Home Skill API – 開關燈 – 溫度控制 • Flash Briefing Skill API – 每日笑話 – 定時新聞 • Video Skill API 36 -
Amazon Alexa Dev – [email protected] Alexa Skill Kit • 前端:設定互動模式
– https://developer.amazon.com/alexa – Name, Invokation – Utterances, Slot type, Intent Schema • 後端:程式邏輯開發與儲存 – https://aws.amazon.com/tw/lambda/ – Node.js 37 Source: Codecademy -
Amazon Alexa Dev – [email protected] ASK 設定 • Intent Schema
– 使用者的意圖,以及對應可執行的動作 • Custom Slot Type – 特定資料型態與內容 • Sample Utterance – 例句,將使用者的輸入對應至意圖 38 -
Amazon Alexa Dev – [email protected] 前端:互動模式建立 • 在Amazon Developer站中的Alexa建立新技能 41
https://developer.amazon.com/ -
Amazon Alexa Dev – [email protected] 前端:互動模式建立 • 在Amazon Developer站中的Alexa建立新技能 42
https://developer.amazon.com/alexa -
Amazon Alexa Dev – [email protected] 前端:互動模式建立 • 在Amazon Developer站中的Alexa建立新技能 43
https://developer.amazon.com/alexa-skills-kit • 第一次使用會需要建立帳號 -
Amazon Alexa Dev – [email protected] 前端:互動模式建立 • 在Amazon Developer站中的Alexa建立新技能 44
https://developer.amazon.com/alexa/console/ask -
Amazon Alexa Dev – [email protected] 選擇樣板 Template • 自行建置 Start
from scratch 47 -
Amazon Alexa Dev – [email protected] 設定Invocation Name:my hello robot •
喚醒語,你的語音助理技能的名稱 48 my hello robot -
Amazon Alexa Dev – [email protected] 前端:互動模式建立 • Name:HelloPracticeMMDD – 專案名稱,若有要上架就會是顯示的名稱
– 須介於2-50個字元 • Invocation Name:my hello robot – 喚醒語 – Alexa用以判斷要使用哪一個第三方的技能 – 使用案例「Alexa, open my hello robot.」 – 使用案例二「Alexa, ask my hello robot tell me a joke. 」 • 其他的用預設值 • Save model 49 -
Amazon Alexa Dev – [email protected] 前端:建立Intent • 檢查目前是不是有一個HelloWorldIntent,若無: – 在左邊的Intent區按下+建立新Intent
– 取名為:HelloWorldIntent,建立 50 HelloWorldIntent -
Amazon Alexa Dev – [email protected] 前端:建立Intent • 在HelloWorldIntent中,應該已看到一些例句,可 以增加更多打招呼的方式,然後按下Enter存入 –
What's up – How you doing – Howdy 51 -
Amazon Alexa Dev – [email protected] 前端:建立Intent • 按下Save Model、Build Model
• 模型建立完成後,前端設定即告一段落 52 -
Amazon Alexa Dev – [email protected] 檢視程式碼 • 按下上方分頁中的「Code」分頁 53 •
找到HelloWorldIntentHandler,變更一下回應 文字,按下上方的Save、再按下Deploy -
Amazon Alexa Dev – [email protected] 測試 • 按下上方分頁中的「Test」分頁 • 設定為「Development」
54 • 在測試區輸入「ask my hello robot howdy」 • 如果有順利出現客製化的回應代表完成! -
Amazon Alexa Dev – [email protected] Lab:修改技能開啟歡迎語 • 如何客製化「open my hello
robot」的回應? – 開啟技能是由哪一個Intent處理器來負責的? 55 -
Amazon Alexa Dev – [email protected] 安裝與設定ASK CLI Alexa Skills Kit
Command Line Interface 58 https://developer.amazon.com/docs/smapi/quick-start-alexa-skills-kit-command-line-interface.html 1. Amazon Developer 帳號 2. 電腦安裝Node.js 3. 安裝Node.js的windows-build-tools套件(Win only) npm install -g --production windows-build-tools 4. 建立AWS IAM角色,足以存取Lambda的權限 https://developer.amazon.com/docs/smapi/manage-credentials- with-ask-cli.html#create-aws-credentials 5. 安裝與初始化ASK CLI npm install -g ask-cli ask init -
Amazon Alexa Dev – [email protected] 開發前準備事項 • an Amazon Web
Services (AWS) account • an AWS Profile • an Amazon Developer Portal account • the ASK CLI tool 59 -
Amazon Alexa Dev – [email protected] AWS Profile • 先確定已建立AWS帳號 •
進入 https://console.aws.amazon.com • 搜尋IAM,進入該服務 • Users -> Add user • 取名為cli-user、Access type將Programmatic access打勾 • 將AdministratorAccess打勾,Attach existing policies directly • Create user 60 -
Amazon Alexa Dev – [email protected] AWS Profile Setup • 記下User
Access Key ID 、Secret Access Key 62 -
Amazon Alexa Dev – [email protected] 裡面放config與credentials檔案 64 [my-cli-user-profile] region=us-east 1
aws_access_key_id=YOUR_ACCESS_KEY_ID aws_secret_access_key=YOUR_SECRET_ACCESS_KEY -
Amazon Alexa Dev – [email protected] ASK CLI Setup - Profile
• 終端機 ask init –p my-cli-user-profile • 在指令列中選擇對應的profile • 登入Amazon帳號,允許存取 • 完成設定 66 -
Amazon Alexa Dev – [email protected] 終端機 • ask new •
選擇Node.js V8 • 選擇Hello World Template • 取一個技能名稱:hello-world-cli • cd hello-world-cli • ask deploy (每次修改完程式碼) 68 -
Amazon Alexa Dev – [email protected] VS Code • 用VS Code打開剛才產生的
資料夾 • 看一下models資料夾裡面 的en-US.json • 確認invocationName為何 – hello world • 確認HelloWorldIntent的 samples有哪些 – hello 69 -
Amazon Alexa Dev – [email protected] 終端機進行測試 • ask simulate -l
en-US -t "ask hello world hello" -l:Language -t:text to send 70 -
Amazon Alexa Dev – [email protected] Lab (記得 ask deploy) •
修改打招呼回應的內容 • 修改開啟技能的回應內容 • 增加更多對應至HelloWorldIntent的例句 • 修改Invocation Name (喚醒語) 71 -
Amazon Alexa Dev – [email protected] 實作:讀取使用者輸入 • 先設定好要問使用者的問題與答案 • 接收使用者的回應
– 如果答對,顯示正確無誤 – 如果答錯,則告知錯誤 73 -
Amazon Alexa Dev – [email protected] 讀取使用者輸入 • 透過 reprompt 可以讓使用者進行輸入
• 使用者的輸入會被放在 handlerInput.requestEnvelope.request.intent.slots.yourSlotName.value 74 -
Amazon Alexa Dev – [email protected] 建立技能、設定Intent與Slot • 建立ASK技能,設定Name與Invocation Name –
name : one-quiz-xxx – template:Hello World – Invocation Name:one quiz xxx • 建立新的Intent:AnswerIntent • 建立新的Slot Type:TrainingProgram – Slot Values • Java Developer • App Developer • Artificial Intelligence Engineer 75 -
Amazon Alexa Dev – [email protected] 設定例句句型 • 設定AnswerIntent的例句 – I
think the most popular program is { } – 設定Slot name為Course • Slot Type設定為TrainingProgram 76 -
Amazon Alexa Dev – [email protected] 繼續增加更多例句 • I think it's
{Course} • It is {Course} • The answer is {Course} • It should be {Course} 77 -
Amazon Alexa Dev – [email protected] 終端機 • 建立專案 ask new
• 選擇執行環境 Node.js V8 • 選擇樣板 Hello World • 設定技能名稱 one-quiz • 建立完成 78 -
Amazon Alexa Dev – [email protected] VS Code • 開啟專案資料夾 •
編輯 models/en-US.json – 設定Invocation Name – 增加AnswerIntent、samples、slots – 增加一個type為TrainingProgram、設定相關value 79 -
Amazon Alexa Dev – [email protected] 部署與測試 • 終端機部署 ask deploy
• 終端機測試 ask dialog -l en-US 90 • 網站測試 alexa dev site -> Test -
Amazon Alexa Dev – [email protected] Lab 隨機笑話 Alexa, tell me
a cold joke. 91 -
Amazon Alexa Dev – [email protected] 實作:Alexa, tell me a cold
joke. • 任務 – 讓Alexa隨機說出一個冷笑話 • 建構步驟: – 設定可接受的指令 – 設定可使用的冷笑話 – 進行測試 92 -
Amazon Alexa Dev – [email protected] Alexa Skills Kit 測試 –
模擬使用者行為、檢視回應結果是否正確 部署 – 上傳至Alexa開發前端、AWS Lambda後端 專案建立與修改 – 意圖回應、資訊接收與處理 設計 Voice UI – 意圖、例句、特殊資料型態 93 -
Amazon Alexa Dev – [email protected] 建立技能、設定Intent與Slot • 建立ASK技能,設定Name與Invocation Name –
name : my-cold-joke-xxxx – template:Hello World – Invocation Name:you go cold joke • 建立新的Intent:GetNewJokeIntent 94 -
Amazon Alexa Dev – [email protected] 終端機 • 建立專案 ask new
• 選擇執行環境 Node.js V8 • 選擇樣板 Hello World • 設定技能名稱 my-cold-joke-xxxx • 建立完成 96 -
Amazon Alexa Dev – [email protected] VS Code • 開啟專案資料夾 •
編輯 models/en-US.json – 設定Invocation Name:you go cold joke – 增加Intent:GetNewJokeIntent • 在這個Intent底下增加 samples – suprise me with a cold joke – shoot me a cold joke – give me a joke – give me a cole joke – tell me a joke – tell me a cold joke 97 -
Amazon Alexa Dev – [email protected] index.js • 讓開啟技能、打招呼都引導使用者去觸發隨機 笑話的產生 •
隨機取出一則笑話,回應給使用者 100 -
Amazon Alexa Dev – [email protected] 部署與測試 • 終端機部署 ask deploy
• 終端機測試 ask dialog -l en-US 107 • 網站測試 alexa dev site -> Test -
Amazon Alexa Dev – [email protected] 應用程式邏輯 tell me a joke
tell me a cold joke give me a joke give me a cold joke shoot me a cold jpke Surprise me with a cold joke Joke 1 Joke 2 Joke 3 Joke 4 Joke 5 Joke 6 Joke 7 Joke 8 Joke 9 Joke 10 108 Intent : GetNewJoke -
Amazon Alexa Dev – [email protected] Invocation Name • 兩個單字以上,都小寫,用空格隔開 •
不能用的單字: – launch, ask, tell, load, begin, enable – Alexa, Amazon, Echo, Computer – skill, app 109 -
Amazon Alexa Dev – [email protected] 回到AWS Lambda Function • 在函數列表中,找到技能對應的函數
• 切換至Monitoring分頁 111 https://console.aws.amazon.com/lambda/ • 點擊 View logs in CloudWatch • 依執行時間將Log Streams 展開檢視 • 觀察是否有Error訊息 -
Amazon Alexa Dev – [email protected] 實作:增加美式感嘆詞 • 使用「讀取使用者輸入」範例 one-quiz •
修改答對與答錯的地方,增加美式感嘆詞 114 -
Amazon Alexa Dev – [email protected] 安裝request套件 • 在index.js程式碼前面加上sync-request • 開啟終端機,確認終端機路徑在
custom資料夾 cd lambda cd custom npm-install-all index.js 120 -
Amazon Alexa Dev – [email protected] 部署後進行測試 • 注意 ask deploy
要在專案資料夾根目錄執行 123 -
Amazon Alexa Dev – [email protected] 功能 • 可以直接問美國一個州的相關資訊 • 請電腦出10個題目來答,並能計算分數
125 下載範例程式 • 建立專案 ask new • 選擇執行環境 Node.js V8 • 選擇樣板 Quiz Game • 設定技能名稱 quiz-game-practice-xxx • 建立完成 -
Amazon Alexa Dev – [email protected] VS Code • 開啟專案資料夾 •
編輯 models/en-US.json – 設定Invocation Name:quiz game practice 126 -
Amazon Alexa Dev – [email protected] 功能 • 選擇題問答 • 請電腦出題目來答,並能計算分數
131 下載範例程式 • 建立專案 ask new • 選擇執行環境 Node.js V8 • 選擇樣板 Trivia • 設定技能名稱 trivia-practice-xxx • 建立完成 -
Amazon Alexa Dev – [email protected] VS Code • 開啟專案資料夾 •
編輯 models/en-US.json – 設定Invocation Name:practice trivia 132 -
Amazon Alexa Dev – [email protected] 測試 – 在Alexa開發站或終端機 • ask
dialog -l en-US 133 -
Amazon Alexa Dev – [email protected] 觀察與修改 1. 修改成自己的題目與答案 2. 每次選幾題是在哪裡的程式碼控制的?
3. 每個題目的正確答案是怎麼設定的?對應的程 式在哪裡。 134 -
Amazon Alexa Dev – [email protected] 應用程式邏輯 135 open trivia practice
Q 1 Q 2 Q 3 Q 4 A 1 A 2 A 3 A 4 The answer is two. -
Amazon Alexa Dev – [email protected] 功能 • 問答題問答 • 請電腦選題目來問
137 下載範例程式 • 建立專案 ask new • 選擇執行環境 Node.js V8 • 選擇樣板 How To • 設定技能名稱 howto-practice-xxx • 建立完成 -
Amazon Alexa Dev – [email protected] VS Code • 開啟專案資料夾 •
編輯 models/en-US.json – 設定Invocation Name:practice how to 138 -
Amazon Alexa Dev – [email protected] 測試 – 在Alexa開發站或終端機 • ask
dialog -l en-US 139 -
Amazon Alexa Dev – [email protected] 觀察 • 觀察 index.js –
如何進行比對,找到對應的項目? • 觀察 recipes.js – key : value 140 -
Amazon Alexa Dev – [email protected] 練習 • 將 How To範例改成自己喜歡的問答
– 電影簡介 – 藝人介紹 – 科學名詞查詢 – 球員資料 – .... 141 -
Amazon Alexa Dev – [email protected] 功能 • 依條件找尋Alexa傳教士 – 依所在城市
– 依資訊類別 • twitter、github、linkedin – 依姓名 – 追問詳情 – 追問特定資訊 143 -
Amazon Alexa Dev – [email protected] 144 下載範例程式 • 建立專案 ask
new • 選擇執行環境 Node.js V8 • 選擇樣板 Team Lookup • 設定技能名稱 team-lookup-practice-xxx • 建立完成 -
Amazon Alexa Dev – [email protected] VS Code • 開啟專案資料夾 •
編輯 models/en-US.json – 設定Invocation Name:practice team lookup 145 -
Amazon Alexa Dev – [email protected] 測試 – 在Alexa開發站或終端機 • ask
dialog -l en-US 146 -
Amazon Alexa Dev – [email protected] 觀察資料 • 名字 • 姓氏
• 職稱 • 城市名稱 • twitter帳號 • twitter帳號口語 147 • github帳號 • github帳號口語 • linkedin帳號 • linkedin帳號口語 • 加入日期 • 性別 -
Amazon Alexa Dev – [email protected] 範例綜覽 • Quiz (美國各州) –
每筆資料有各種屬性 • Trivia Test – 自訂選擇題測驗 • How To – 問答集資料庫 • Team Lookup – 依條件查詢人物資料 148 • Hello – 打招呼有回應 • OneQuiz – 一個題目判斷答案 • Tell me a joke – 任意挑選一筆資料 • Tell me a on-line joke – 網路介接資料 -
Amazon Alexa Dev – [email protected] 內建資料型態 • AMAZON.Actor • AMAZON.AggregateRating
• AMAZON.Airline • AMAZON.Airport • AMAZON.Animal • AMAZON.Athlete • AMAZON.Color • ..... 149 https://developer.amazon.com/docs/custom-skills/slot-type-reference.html#list-types -
Amazon Alexa Dev – [email protected] 上架 Publishing Information • 類別
Category • 測試引導:提供給測試者參考 – 特殊指令、權限 • 銷售地區:全部國家或限定部分地區 • 簡短介紹、完整介紹 • 例句(至少3句) – 單一指令型 • Alexa, ask cold joke to tell me a joke. – 進入技能後互動型 • Alexa, open cold joke. • Alexa, give me a joke. 150 -
Amazon Alexa Dev – [email protected] 上架 Publishing Information • 關鍵字:方便搜尋
• 圖片 – 小圖示:108x108 PNG/JPG – 大圖示:512x512 PNG/JPG • 送出審核(需等待數天) 151 -
Amazon Alexa Dev – [email protected] 七個讓顧客愛上你的技能的訣竅 1. 讓一項工作透過語音變得快速又簡單 2. 技能的名稱直覺又好記
3. 設計清楚但又不繁雜的提示來引導使用者 4. 避免模稜兩可 5. 帶給使用者驚喜與樂趣 6. 規律地提供使用者新的內容 7. 服務必須是持續可靠不中斷的 152 Source:Amazon.com -
Amazon Alexa Dev – [email protected] 開啟螢幕顯示 • Developer開發站 -> 左邊
點擊 Interfaces • Display Interface 開關打開 • 上面 Save Interfaces -> Build Model 153