在 Alexa 技能開發中,視覺呈現能大幅提升使用者經驗。本文將引導開發者使用 APL (Alexa Presentation Language) 建立視覺介面,從 APL 檔案載入、資料來源整合到 APLA (Audio Presentation Language) 的應用,逐步講解如何打造更具互動性的語音應用。過程中將示範如何修改 APL 檔案、設定資料來源 JSON 檔案,並在 Python 程式碼中正確匯入,同時也包含了測試與佈署的流程說明,確保開發者能順利整合 APL 與 APLA,讓 Alexa 技能更具吸引力。

載入APL檔案

首先,需要載入APL檔案,以下是載入APL檔案的程式碼:

.add_directive(
    RenderDocumentDirective(
        token="pagerToken",
        document=_load_apl_document("APLA.json"),
        datasources={}
    )
)

在這裡,_load_apl_document("APLA.json")用於載入APL檔案。

測試程式

佈署程式後,需要測試程式。啟用測試並呼叫技能(輸入技能名稱),然後輸入或說“Hello”。應該會聽到“Hello World!”和“Hello from A.P.L.A.”。

使用資料來源

現在,讓我們修改程式以使用資料來源。首先,需要修改APL檔案APLA.json,將“content”改為“${payload.myData.text.welcome}”。

然後,需要建立一個新的檔案datasource.json,內容如下:

{
    "myData": {
        "text": {
            "welcome": "Hi. This uses data sources"
        }
    }
}

這裡,“Hi. This uses data sources”是從資料來源中提取出來的。

修改程式碼

最後,需要修改程式碼,以使用資料來源。將datasources:{}改為:

datasources=_load_apl_document("datasource.json")

儲存所有檔案,佈署並測試程式。現在,應該會聽到“Hi. This uses data sources”。

新增APLA reprompt

可以新增一個標準的回應到APLA中,使用.ask("...")。也可以新增一個APLA reprompt,使用以下程式碼:

{
    "type": "APLA",
    "version": "0.91",
    "description": "Simple document to say hello",
    "mainTemplate": {
        "parameters": [
            "payload"
        ]
    }
}

這裡,需要建立一個新的檔案reprompt.json,內容如下:

{
    "type": "APLA",
    "version": "0.91",
    "description": "Simple document to say hello",
    "mainTemplate": {
        "parameters": [
            "payload"
        ]
    }
}

圖表翻譯:

  graph LR
    A[載入APL檔案] --> B[測試程式]
    B --> C[使用資料來源]
    C --> D[修改程式碼]
    D --> E[新增APLA reprompt]

內容解密:

以上程式碼展示瞭如何使用APL進行語音應用開發。首先,需要載入APL檔案,然後測試程式。接下來,需要修改程式以使用資料來源。最後,需要新增APLA reprompt。這些步驟可以幫助開發者建立豐富的視覺體驗。

APL簡介

APL是一種讓開發者能夠為Alexa裝置建立視覺化體驗的語言。它允許開發者定義視覺化元件、繫結資料來源並建立多模態回應。

APL檔案

APL檔案是JSON檔案,定義了視覺化體驗的結構和內容。它包含了一個或多個視覺化元件,例如文字、影像和按鈕。

資料源

資料源是APL檔案中使用的資料。它可以是靜態資料或動態資料,例如從API取得的資料。

繫結資料源

繫結資料源是指將資料源與APL檔案中的視覺化元件連線起來的過程。這樣可以讓視覺化元件顯示動態資料。

APLA

APLA是APL的音訊版本。它允許開發者建立音訊回應,包括音訊播放和語音合成。

RenderDocumentDirective

RenderDocumentDirective是一個APL指令,用於渲染APL檔案。它可以用於建立視覺化回應和音訊回應。

add_directive_to_reprompt

add_directive_to_reprompt是一個方法,用於向重複提示新增指令。它可以用於建立重複提示,包括視覺化回應和音訊回應。

ask-sdk-core

ask-sdk-core是Alexa技能套件的核心函式庫。它提供了建立Alexa技能所需的功能,包括APL和APLA支援。

從使用者經驗視角來看,整合Alexa Presentation Language (APL) 能顯著提升Alexa技能的互動性與資訊呈現效果。本文逐步展示了從載入APL檔案、使用資料來源到加入APLA reprompt的完整流程,涵蓋了APL開發的核心環節。分析APL的實作過程,可以發現其關鍵優勢在於能將靜態的語音回應轉化為動態的視覺互動體驗,有效提升使用者理解和參與度。然而,目前APL的設計仍存在一定限制,例如不同裝置的螢幕尺寸和解析度適配問題,以及開發者需要額外學習APL語法和相關工具。

展望未來,APL與語音互動的融合將更加緊密。預計將出現更多更精細的視覺化元件和更便捷的開發工具,降低開發門檻並提升設計效率。同時,APL與其他Alexa服務的整合,例如音樂、影片和智慧家庭控制,也將創造更多元的應用場景。對於技能開發者而言,掌握APL不僅能提升技能的使用者經驗,更能提升技能在競爭激烈的Alexa生態系統中的差異化優勢。玄貓認為,隨著智慧顯示裝置的普及,APL將成為打造高品質Alexa技能不可或缺的技術。