Home Made Garbage

Alexa 画面付きデバイス向けスキル公開 「カラーデコード」

お父ちゃん お父ちゃん  2019.2.4 
ホーム
電子工作
Raspberry Pi
IOT
WEB

去年の2018年後半から画面付きのAmazon Echoが続々発売されて、Fire TVもAlexa対応になりましたね。

 

んで この度、画面表示向けのAlexaスキルを作ってみたいと思い立ったのです。SpotもShowまだもってないんだけどね 🙄 。
 

スキル概要

今回つくったスキル「カラーデコード」は、16進数 6桁のカラーコードを言うと、画面にその色を表示するといういたってシンプルなスキルです。

でもふと口にしたカラーコードが色として目の前に現れるって素敵なことですよね。ファンタジーです。これまではカラーコードを言っても何も起きなかったのですから。

Alexa SDK for Node.js Ver2をつかってコーディングしてます。スキル作成の基本設定などは以下のブログの通りです。ご参照ください。

Alexaスキル:AudioPlayer で音楽配信スキル作成から公開まで

Alexa Developer Console

スキルの呼び出し名を設定

スキル名を「カラーデコード」としました。

インテントを追加

カラーコードが発話されると呼び出されるColorCodeインテントを作成します。

6桁のカラーコードを識別するために、{first} ~ {sixth}という6個のスロットを作りました。スロットタイプは以下のLIST_OF_NUMを作成して6つのスロットすべてに適用しました。

0~Fの16進数を検出します。

参考

6桁のカラーコード発話の認識として以下が大変参考になりました!

[日本語Alexa] 4桁の数字を確実に受けとるためには 〜より自然に会話できるスキル作成のために〜

Lambda Management Console

index.js

 

起動時のインテント、エラーやキャンセル、ヘルプのインテント発動時の動作をそれぞれ記載しています。

supportsDisplay()でスキルが画面付きデバイスで動作しているかを判断しています。
ColorCodeインテントでカラーコードを識別して、phpで動的に1ドットの対応する色のpng画像を生成して、画面付きデバイスであれば画面に表示させます。

スロットタイプLIST_OF_NUMでスロットIDを追加しておいたのでカラーコードの文字列生成を容易にできました。

スキル停止時に画面表示を明確に切らないとダメですよと申請時にリジェクトされました。全然修正がわからなくてググりにググって以下を見つけました。
 画面表示付きのskillを作成したが、対話が終了しても画面が消えない

こちらを参考にindex.jsの101行に .withShouldEndSession(true) を追加で、スキル停止時に画面表示も止まるようになりました。

index.php

1ドットの色画像を生成するphpコードです。

参考

スキル動作検証

スキルの動作検証はAlexa DeveloperコンソールのAlexaシミュレータや

 
Fire TVで行いました。

Related Posts

コメントはこちらから

メールアドレスが公開されることはありません。コメントのみでもOKです。

このサイトはスパムを低減するために Akismet を使っています。コメントデータの処理方法の詳細はこちらをご覧ください