alexa-sdkでEcho Showのディスプレイ表示に対応する(part.1)
この記事は一人Alexa Skills Kit for Node.js Advent Calendar 2017の20日目の記事です。 Echo ShowのようなディスプレイがあるデバイスではCardのように以下のような […]
広告ここから
広告ここまで
目次
この記事は一人Alexa Skills Kit for Node.js Advent Calendar 2017の20日目の記事です。
Echo ShowのようなディスプレイがあるデバイスではCardのように以下のような専用の表示に関する記述があります。
{
"directives": [
{
"type": "Display.RenderTemplate",
"template": {
"type": "BodyTemplate1",
"token": "CheeseFactView",
"backButton": "HIDDEN",
"backgroundImage": ImageURL,
"title": "Did You Know?",
"textContent": {
"primaryText": {
"type": "RichText",
"text": "The world’s stinkiest cheese is from Northern France"
}
}
}
}
]
}
alexa-sdkでは、Alexa.templateBuilders
を使用することでこれらのObject(JSON)を比較的簡単に作ることができます。
Shiftermanでトライしたケース
実際にトライしてみたケースです。
'use strict'
const Alexa = require('alexa-sdk')
const http = require('https')
const makePlainText = Alexa.utils.TextUtils.makePlainText
const makeImage = Alexa.utils.ImageUtils.makeImage
const handlers = {
'LaunchRequest': function () {
// Build template
const builder = new Alexa.templateBuilders.BodyTemplate2Builder()
const template = builder.setTitle('skill tittle')
.setImage(makeImage('https://getshifter.io/app/uploads/2017/05/Shifter_KO__Full_Bkg-01-1024x1024.png'))
.setTextContent(makePlainText('this is some description about the fact'), makePlainText('sample'))
.build()
this.response.renderTemplate(template)
this.response.cardRenderer(SKILL_NAME, 'this is some description about the fact')
this.response.speak(speechOutput)
this.emit(':responseReady')
}
}
text / image共に専用のオブジェクトとして格納する必要がありますので、Alexa.utils
から必要なものを取得します。
あとは作りたいタイプのテンプレートビルダーをew Alexa.templateBuilders.BodyTemplate2Builder()
のような形で呼び出して、メソッドチェーンで表示する内容を追加していきます。
なお、これらに対応する場合はthis.emit()
ではなくthis.emit(':responseReady')
を使います。