Amazon AlexaAWS

alexa-sdkで作ったスキルでカードを表示するようにする

この記事は一人Alexa Skills Kit for Node.js Advent Calendar 2017の18日目の記事です。 Alexa Skillでは音声でのレスポンスだけでなく、管理アプリに表示されるカード […]

広告ここから
広告ここまで

この記事は一人Alexa Skills Kit for Node.js Advent Calendar 2017の18日目の記事です。

Alexa Skillでは音声でのレスポンスだけでなく、管理アプリに表示されるカードについてもカスタマイズができます。

参考:スキルカード設計のベストプラクティス

tellでカードを表示する

返事をしてセッションを終了させるTellでは、以下のように実装をします。

const speechOutput = 'Speech output'
this.emit(':tell', speechOutput)

Cardを含める場合は以下のようになります。

const speechOutput = 'Speech output'
const cardTitle = 'cardtitle'
const cardContent = 'cardContent'
const imageObj = imageObj = {
    smallImageUrl: 'https://imgs.xkcd.com/comics/standards.png',
    largeImageUrl: 'https://imgs.xkcd.com/comics/standards.png'
}
this.emit(':tellWithCard', speechOutput, cardTitle, cardContent, imageObj)

cardTitlecardContentimageObjの3つが増えました。
それぞれカードで表示する「タイトル」「本文」「画像」となります。

これらのデータは以下のようなJSONにまとめられます。

{
  "shouldEndSession": false,
  "outputSpeech": {
    "type": "SSML",
    "ssml": "<speak> Speech output </speak>"
  },
  "card": {
    "type": "Simple",
    "title": "cardtitle",
    "content": "cardContent"
  }
}

cardは音声再生側では使用されないデータですので、視覚情報として出すことを前提にした内容で構わないかなと思います。

:askについてもrepromptが増えるだけでほぼ同じです。

const speechOutput = 'Speech output'
const repromptSpeech = 'reprompt'
const cardTitle = 'cardtitle'
const cardContent = 'cardContent'
const imageObj = 'https://example.com'
this.emit(':askWithCard', speechOutput, repromptSpeech, cardTitle, cardContent, imageObj)

カードを出すようにすることで、住所などの覚えるのが大変なデータを「アプリに住所出したからみてね」のようにすることができます。

Echo Showなどのディスプレイのあるデバイスではまた別の出力方法がありますが、そちらについてはまた次回以降に紹介します。

ブックマークや限定記事(予定)など

WP Kyotoサポーター募集中

WordPressやフロントエンドアプリのホスティング、Algolia・AWSなどのサービス利用料を支援する「WP Kyotoサポーター」を募集しています。
月額または年額の有料プランを契約すると、ブックマーク機能などのサポーター限定機能がご利用いただけます。

14日間のトライアルも用意しておりますので、「このサイトよく見るな」という方はぜひご検討ください。

広告ここから
広告ここまで

Related Category posts