Alexa Presentation Language(APL)を使用したEcho Dot with clock対応スキルの開発

Arunjeet Singh Nov 24, 2019
Share:
Build Beginner Multimodal Tutorial
Blog_Header_Post_Img

※このブログはBuild Skills on Echo Dot with Clock with Alexa Presentation Language (APL)の翻訳です。

Alexa Presentation Language(APL)を使用して、Amazonの最新Echoデバイスの1つであるEcho Dot with clockに対応したスキルを開発できるようになりました。この機能によって、APLを使うと、文字ベースのディスプレイのある新しいデバイスに、視覚的なエクスペリエンスを開発することができます。また、APLはEcho Show、Echo Spot、Fire TV、LG TV、Lenovo Smart Tabデバイスなど、既にさまざまなデバイスでサポートされています。APLの改良は今後も継続され、さらに多くのデバイスで使用できるようになる予定です。

Echo Dot with Clock

Echo Dot with clockには7つに分割された英数字用ディスプレイが搭載されており、通常はデジタル時計のデザインが表示されます。このデバイスで、画像やビデオを表示することはできません。ユーザーがEcho Dot with clockでAlexaと対話すると、スキルの実行中に、その端末固有の方法で情報が表示されます。たとえばユーザーが温度をたずねると、対話中はデバイスに現在の温度が表示され、対話が終わるとデジタル時計のデザインに戻ります。

文字表示デバイスのAPLサポート

Echo Dot with clockのスキルの開発を始めるには、スキルマニフェストでALEXA_PRESENTATION_APLインターフェースを有効にするか、スキル開発者コンソールからスキルを開き、「ビルド」タブ中の「インターフェース」を使用します。

Echo Dot with clockなどの文字表示デバイスを使用していることを検出するには、スキルのリクエストでAlexa.Presentation.APLTがサポートされているインターフェースを探します。このインターフェースは、ユーザーがEcho Show、Fire TV、Fireタブレットなどのデバイスを使用している場合にスキルリクエストに含まれるAlexa.Presentation.APLインターフェースとは異なります。このスキルリクエストには、デバイスの文字表示に関するViewport情報(表示する情報の形状、向き、サイズなど)も含まれます。SEVEN_SEGMENTなどのフォーマットでは、k、m、v、w、xなどの特定の文字がサポートされないため、これは特に重要です。SEVEN_SEGMENTフォーマットの詳細については、Viewportのドキュメントをご覧ください。このフォーマットでサポートされていないすべての文字は、スペース文字(' ')として扱われます。

Copied to clipboard
{
    "version": "1.0",
    "session": {
        ...
    },
    "context": {
        "system": {
            "device": {
                "deviceId": String,
                "supportedInterfaces": {
                    "Alexa.Presentation.APLT": {
                        "runtime": {
                            "maxVersion": "1.0"
                        }
                    }
                    ...
                }
            }
        },
        ...
        "Viewports": [
            {
                "id": "main",
                "type": "APLT",
                "supportedProfiles": ["FOUR_CHARACTER_CLOCK"],
                "lineLength": 4,
                "lineCount": 1,
                "format": "SEVEN_SEGMENT",
                "interSegments": [
                     {
                         "x": 2,
                         "y": 0,
                         "characters": "':."
                     }
                ]
            }
        ],
        ...
}

Alexa.Presentation.APLTインターフェースをサポートするデバイスでAPLをレンダリングするには、Alexa.Presentation.APLT.RenderDocumentディレクティブを使用してAPLTドキュメントで応答します。以下のコードサンプルは、‘overflow’と’msPerCharacter’プロパティ(APLTドキュメントでのみ使用可能)を使用したシンプルなAPLTドキュメントを示しています。

Echo Dot with clockは、Alexa.Presentation.APLT.ExecuteCommandsディレクティブを使用してデバイスに送信できる一部のAPLコマンドについてもサポートしています。

Copied to clipboard
{
    "outputSpeech": {
        "type": "SSML",
        "ssml": "<speak>This is APL on an Echo Dot with Clock!</speak>"
    },
    "directives": [
        {
            "type": "Alexa.Presentation.APLT.RenderDocument",
            "document": {
                "type": "APLT",
                "version": "1.0",
                "mainTemplate": {
                    "items": [
                        {
                            "type": "Text",
                            "text" : "thIS IS yOUr APL ",
                            "overflow": "marquee",
                            "msPerCharacter": 500
                        }
                    ]
                }
            },
            "datasources": {}
        }
    ]
}
echo dot with clock gif

開発に使用できるAPLコンポーネントとコマンド

Echo Dot with clockのAPLTドキュメントでは、下記に紹介するAPLコンポーネントとコマンドがサポートされています。

  • Text: APLTドキュメントのTextコンポーネントは、フォント情報を設定する機能をサポートしていません。ただし、新しいoverflowプロパティとmsPerCharacterプロパティの導入により、テキストがテキストフィールドの幅よりも長い場合についての機能はサポートしています。これらはAPLTドキュメント固有のプロパティです。
  • Container: APLTドキュメントは、APLドキュメントと同様にContainerをサポートしています。Containerを使用して、ほかのAPLコンポーネントをレイアウトできます。
  • Pager: APLTドキュメントのPagerは、通常のAPL Pagerと同様に機能します。Echo Dot with clockにはタッチスクリーンやリモコンがないため、navigationプロパティはサポートされていません。
  • TimeText: TimeTextはAPLTドキュメント固有のコンポーネントであり、タイマーやカウントダウンなどの表示に使用できます。
  • Idle、Sequential、Parallel: IdleSequentialParallelの各コマンドは、遅延の挿入、複数コマンドの順次実行や並列実行に使用できます。
  • SetValue: SetValueコマンドを使用すると、既にAPLTドキュメントで送信した値を更新できます。
  • SetPage、AutoPage: SetPageAutoPageの各コマンドを使用すると、Pagerコンポーネントの挙動を調整することができます。

既にスキルでAPLインターフェースが有効になっている場合、スキルのLambda関数またはウェブサービスのコードを更新してEcho Dot with clockのAlexa.Presentation.APLTインターフェース向けにAPLTドキュメントを送信することができます。スキルのLambda関数やウェブサービスコードを更新しない場合、スキルはEcho Dotなどのスピーカーデバイスで使用する音声のみのインターフェースを提供します。

開発者の皆さまにこのブログで紹介した機能をご活用いただき、これまでになかったスキル開発を期待しています。ご質問があれば、私(Twitterで@aruntalkstech)までご連絡ください。

さらに詳しいドキュメントが必要である場合はこちらをご覧ください。