ASK CLI 提供簡化的指令介面,方便開發者管理和佈署 Alexa 技能。開發者可以透過 ASK CLI 快速建立技能專案、佈署程式碼到 Lambda,並進行測試。VS Code 結合 ASK 擴充套件,更能提升開發效率。透過 VS Code 的檔案管理、程式碼編輯器和整合終端機,開發者可以在單一環境中完成所有開發工作,包含撰寫技能程式碼、設定佈署環境以及進行本地端除錯。此流程能有效縮短開發週期,並提升開發體驗。

建立技能與ASK CLI

在建立Alexa技能的過程中,瞭解如何使用ASK CLI(Alexa Skills Kit Command-Line Interface)是一個非常重要的步驟。ASK CLI提供了一種簡便的方式來管理和佈署Alexa技能。

安裝ASK CLI

要開始使用ASK CLI,首先需要在您的PC上安裝它。您可以在Alexa開發者官網找到安裝ASK CLI的相關指導。

啟用ASK CLI

安裝完成後,需要使用ask configure命令來啟用ASK CLI,並輸入您的Amazon和AWS憑證。

建立新技能

使用ask new命令可以建立一個新的Alexa技能。這個命令會建立一個包含基本程式碼的目錄。

佈署技能

使用ask deploy命令可以佈署您的技能程式碼到AWS Lambda。

測試技能

使用ask run命令可以啟動一個除錯會話來測試您的技能。另外,使用ask dialog命令可以向您的技能傳送請求。

使用Visual Studio Code

Visual Studio Code(VS Code)是一個流行的IDE,提供了檔案管理、編輯器和終端機等功能。您可以使用ASK擴充功能來建立和管理Alexa技能。

建立新技能

  1. 啟動VS Code。
  2. 輸入ask new命令建立新技能。
  3. 根據提示選擇語言、平臺和技能名稱等資訊。

檢視技能程式碼

建立完成後,您可以在檔案管理器中檢視技能的程式碼結構。skill.json檔案包含了技能的基本資訊,包括技能名稱、語言、示例短語等。

interactionModels目錄

在interactionModels目錄中,您可以找到定義技能對話模型的JSON檔案,例如en-US.json。

範例程式碼
import os

# 啟用ASK CLI
os.system("ask configure")

# 建立新技能
os.system("ask new")

# 佈署技能
os.system("ask deploy")

# 測試技能
os.system("ask run")

Plantuml圖表

圖表翻譯

此圖表展示了使用ASK CLI建立和佈署Alexa技能的流程。首先,需要啟用ASK CLI,然後建立新技能,接著佈署技能,最後測試技能。

建立技能與Lambda和ASK CLI

在建立技能的過程中,我們需要使用Lambda和ASK CLI來實作語音控制的IoT應用。在這個章節中,我們將介紹如何使用Python和ASK CLI來建立一個簡單的技能。

安裝ASK CLI

首先,需要安裝ASK CLI。ASK CLI是一個命令列工具,允許您建立、測試和佈署Alexa技能。

建立技能

建立技能的第一步是建立一個新的技能目錄。然後,需要建立一個hello_world.py檔案,這個檔案包含了技能的程式碼。

# hello_world.py
import ask_sdk_core
from ask_sdk_core.dispatch_components import AbstractRequestHandler
from ask_sdk_core.utils import is_intent_name

class SolveIntentHandler(AbstractRequestHandler):
    """Handler for Help Intent."""
    def can_handle(self, handler_input):
        # type: (HandlerInput) -> bool
        return is_intent_name("SolveIntent")(handler_input)

    def handle(self, handler_input):
        # type: (HandlerInput) -> Response
        speak_output = "Tell me the letters followed by 玄貓"
        return handler_input.response_builder.speak(speak_output).ask(speak_output).response

# 註冊handler
sb.add_request_handler(SolveIntentHandler())

佈署技能

修改程式碼後,需要佈署技能。可以使用ask deploy命令來佈署技能。

測試技能

佈署技能後,可以使用ASK CLI的ask dialog命令來測試技能。

本地除錯

ASK CLI也提供了本地除錯的功能。可以使用ask util generate-lwa-tokens命令來生成一個存取令牌。然後,需要建立一個新的檔案叫做local_debug.py,這個檔案包含了本地除錯的程式碼。

# local_debug.py
from ask_sdk_local_debug.local_debugger_invoker import LocalDebuggerInvoker

圖表翻譯:

@startuml
!define DISABLE_LINK
!define PLANTUML_FORMAT svg
!theme _none_

skinparam dpi auto
skinparam shadowing false
skinparam linetype ortho
skinparam roundcorner 5
skinparam defaultFontName "Microsoft JhengHei UI"
skinparam defaultFontSize 14
skinparam minClassWidth 150

title Alexa技能開發ASK CLI與VS Code整合開發環境架構

package "開發環境設定" {
    component "ASK CLI\n命令列工具" as CLI
    component "VS Code IDE" as VSCode
    component "ASK Toolkit\nVS Code 擴充套件" as Toolkit
    component "Python/Node.js\n執行環境" as Runtime
}

package "Alexa技能專案結構" {
    component "skill.json\n技能清單" as SkillManifest
    component "interactionModels/\n對話模型定義" as InteractionModel
    component "lambda/\nLambda 函式程式碼" as LambdaCode
    component "ask-resources.json\n資源配置檔" as Resources
}

package "AWS Lambda服務" {
    component "Lambda 函式\n執行環境" as LambdaFunc
    component "CloudWatch Logs\n日誌服務" as CloudWatch
    component "IAM 角色\n權限管理" as IAM
}

package "Alexa平台服務" {
    component "Alexa Skills Kit\n技能管理" as ASK
    component "Alexa 模擬器\n測試工具" as Simulator
    component "技能清單\n雲端儲存" as SkillMetadata
}

package "本地除錯工具" {
    component "ask run\n本地除錯伺服器" as DebugServer
    component "ask dialog\n對話測試工具" as Dialog
    component "VS Code Debugger\nPython 除錯器" as Debugger
}

CLI --> VSCode : 整合指令
VSCode --> Toolkit : 載入擴充套件
Toolkit --> CLI : 呼叫ASK指令
CLI --> Runtime : 執行腳本

CLI ..> SkillManifest : ask new\n建立專案
CLI ..> InteractionModel : 生成模板
CLI ..> LambdaCode : 初始化程式碼
CLI ..> Resources : 配置資源

CLI --> LambdaFunc : ask deploy\n部署函式
LambdaFunc --> CloudWatch : 寫入日誌
LambdaFunc --> IAM : 權限檢查

CLI --> ASK : ask deploy\n更新技能
ASK --> SkillMetadata : 同步清單
ASK --> Simulator : 載入模型

DebugServer --> LambdaCode : 載入本地程式碼
Debugger --> DebugServer : 連接除錯埠:3001
Dialog --> DebugServer : 發送測試請求
CloudWatch --> CLI : ask logs\n取得日誌

note right of CLI
  核心指令:
  • ask configure: 設定憑證
  • ask new: 建立技能
  • ask deploy: 部署技能
  • ask run: 本地除錯
  • ask dialog: 對話測試
  • ask logs: 查看日誌
end note

note right of Debugger
  VS Code除錯配置:
  • launch.json設定
  • 連接埠: 3001
  • 支援中斷點除錯
  • 即時變數檢視
  • 堆疊追蹤
end note

note right of LambdaFunc
  Lambda配置:
  • Runtime: Python 3.x
  • Handler: lambda_function.lambda_handler
  • Timeout: 8 seconds
  • Memory: 512 MB
  • 環境變數設定
end note

@enduml

內容解密:

此圖表完整呈現了Alexa技能開發的核心架構,清楚展示ASK CLI、VS Code、AWS Lambda與Alexa平台之間的互動關係。開發者透過ASK CLI建立技能專案(ask new)、部署到Lambda(ask deploy)、啟動本地除錯伺服器(ask run),並使用VS Code Debugger連接除錯埠3001進行即時除錯。圖中詳細標註了技能專案結構(skill.json、interactionModels、lambda程式碼)、AWS服務(Lambda函式、CloudWatch日誌、IAM權限)以及除錯工具(ask dialog、VS Code Debugger),提供開發者完整的技術參考架構圖。

7.4 設定 Alexa Debugger 組態

為了讓您的技能連線到 Alexa 代理,您需要在您偏好的開發環境(IDE)中新增 Alexa debugger 組態。以下步驟將指導您如何在 VS Code 中設定 Alexa debugger 組態。

從技術架構視角來看,ASK CLI 作為連線開發者和 Alexa 技能生態系統的橋樑,其便捷的指令集與 VS Code 等 IDE 的整合,大幅簡化了技能開發、佈署和測試的流程。本文深入探討了 ASK CLI 的核心功能,涵蓋從初始化設定、技能建立到本地除錯和雲端佈署的完整工作流程。其中,利用 ask newask deployask dialog 等指令,開發者得以快速構建技能雛形並驗證功能。此外,整合 Lambda 函式更進一步提升了技能的運算能力和彈性,讓開發者能專注於業務邏輯的實作。

然而,ASK CLI 的易用性背後也隱藏著一些技術限制。例如,對於複雜的技能架構,單純依靠指令集管理可能會顯得力不從心,此時更需要結合 VS Code 等 IDE 提供的圖形化介面和除錯工具,才能更有效率地進行開發。此外,技能的本地除錯和雲端佈署環境的差異,也可能導致一些難以預料的問題,需要開發者具備一定的除錯和排錯能力。

展望未來,隨著 Alexa 技能生態的持續擴張和技術的演進,預期 ASK CLI 也將持續迭代更新,提供更豐富的功能和更最佳化的開發體驗。例如,更進階的程式碼自動生成、更完善的本地除錯工具、以及更便捷的跨平臺佈署功能,都將是未來發展的重點方向。此外,與 CI/CD 流程的更緊密整合,也將進一步提升技能開發的效率和自動化程度。

玄貓認為,ASK CLI 作為 Alexa 技能開發的必備工具,其價值不僅在於簡化開發流程,更在於其背後所體現的雲原生開發理念。對於 aspiring Alexa 技能開發者而言,熟練掌握 ASK CLI 的使用,無疑是邁向專業技能開發的第一步,也是構建更複雜、更具商業價值的語音應用程式的重要根本。