「node.js」タグアーカイブ

Node.js バージョンアップ

Node.js バージョンアップメモ

バージョンアップ

バージョン確認

node v

現在の推奨版バージョンを確認

Node.js のサイトで推奨版を確認すると現在は 10.16.3 なのでこちらを入れる事にする

インストール

nvm install v10.16.3

再びバージョン確認

バージョンアップ完了

デフォルトバージョンの設定

その後、、勝手にバージョンが戻ってしまい、nvm use で切り替えてもまた戻ってしまったので、調べたらデフォルトバージョンの切り替えが必要だった。

設定後はターミナルを再起動しないと反映されない。

ターミナル再起動後

 

 

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

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

 

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

スキル概要

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

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

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

Alexaスキル公開 「夏休みの友」

Alexa Developer Console

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

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

インテントを追加

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

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

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

参考

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

https://dev.classmethod.jp/cloud/4-digit-number-custom-slot/

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で行いました。

Alexaスキル公開 「夏休みの友」

せっかくAmazon Echo Dot を手に入れたのでスキル作成に挑戦してみました。

 

作成したAlexaスキル「夏休みの友」は夏休みや冬休みなどの長期休業中の宿題集の進捗を管理してくれます。
報告した宿題ページと始業式の日程は記憶され、おすすめの宿題の進め方も提案します。

 

スキル作成で勉強したこと

以下の資料で勉強しながらスキル制作を進めました。

Alexa道場

非常にわかりやすかったです。順を追って観ることをおすすめします。

「夏休みの友」は Alexa Skills Kit SDK for Node.js Version 2 を使用して作成しました。SDK Version 2については第9回で説明されています。

公開の流れは第7回が参考になります。

Alexa SDK for Node.js Ver2入門

SDK Version 2について詳しく説明されています。非常に参考になりました。

セッション間での変数共有などはその4のSession attributesの節で説明されています。
 

スキル公開までの道のり

公開までに2回申請がリジェクトされました。夜に申請すると翌日午前中には修正内容とともに回答がありスピードに驚きました。しかも細かくチェックして修正案や読むべきドキュメントも教えてくれて非常に親切でした。

1度目の申請リジェクト内容

  1. セッション管理
    スキルがタスクを完了した後、ユーザーへのプロンプトが提示されていないにもかかわらずセッションが開いたままになっていると指摘。

    ユーザー「アレクサ、夏休みの友を開いて。 」
    スキル 「宿題はすでに終了しています。頑張りましたね。おめでとう。」
          →ユーザのリセットやストップを待つ
    これがユーザーに何も問いかけていないのでだめとのこと。

    「宿題はすでに終了しています。頑張りましたね。おめでとう。始業式の日にちと宿題ページ数を修正したい場合はリセットと言ってください。」
    に修正した。
     

  2. ページ回答のエラー対応
    ページの回答でエラー値が介された際に対応できずスキル終了してしまっていた。。。

    エラー値のときにもう一度ページ数を聞く仕様に修正した。
     

  3. サポートされていない起動フレーズ
    スキル説明のページでサポートされていない起動フレーズの記載があると指摘された。

    「アレクサ、夏休みの友を起動」

これを「アレクサ、夏休みの友をスタートして 」に修正した。

2度目の申請リジェクト内容

  1. サンプル発話の不足
    宿題ページの問いかけに対してページ数の回答や「してない」などのゼロ回答はケアしていたのですが、「宿題は終わった」には対応しておらず発話対応が不十分であると指摘されました。

    「宿題は終わった」、「宿題はもうない」などに対応するインテントと発話を追加して対応しました。
     

  2. 発話対応に不自然な点
    宿題の残り枚数を聞いた際に「ゼロページ」などのゼロ回答のときに「もう一度、宿題の残り枚数を教えてください」と再度聞く仕様にしていたのですが、対応が不自然であると指摘されました。

    宿題の残りページ問いかけの際にゼロ回答で「宿題はもうないのですね?」と確認する仕様に変更しました。
     

  3. 日にちのエラー対応
    始業式の日にちの回答の際に「十三月三十五日」などとエラーのある回答に対応していなかった。

    正常でない日付や○月○日以外のスロット値が帰ってくる回答の際にもう一度、日にちを聞くように仕様変更した。

    日付のスロット(AMAZON.DATE)に関する詳細は以下の通り
     https://developer.amazon.com/ja/docs/custom-skills/slot-type-reference.html#date

 
以上を対応して3回目で無事公開されました。

 

すんごく勉強になりました 🙂 。
またなんか作りたいなぁ。