クリスマスっぽいAlexaスキルをつくって申請してみた
もうすぐクリスマスですね!
先日、運良くAmazon Echoを入手できたので、早速スキルをつくって申請してみました。
つくったもの
Alexaのスキルには、話しかけた内容に応じてスマホのAlexaアプリに補足情報を表示する機能があります。
「今日の天気は?」で週間天気を表示したり、かけた音楽の履歴を表示したり。
これを応用して、子どもがEchoにクリスマスプレゼントで何が欲しいか話しかけると、サンタさんのAlexaアプリにカードを表示するような「クリスマスプレゼント」スキルを考えました。
例) 「アレクサ、クリスマスプレゼントで仮面ライダーのベルトが欲しい」と発話すると、以下のカードをスマホアプリに表示する。
開発手順については、公式のドキュメントやチュートリアルが充実しています。
https://developer.amazon.com/ja/docs/ask-overviews/build-skills-with-the-alexa-skills-kit.html
https://developer.amazon.com/ja/alexa-skills-kit/training/building-a-skill
困ったこと
1.すでに同様のアイデアのスキルがある
KANTETSU WORKSさんから「お願いサンタ!」というスキルがすでにリリースされていました。(しかもGoogle Homeにも対応)
https://torusnote.goat.me/6x6T2vc8
完全に出遅れましたね。。。
若干アプローチが異なるので、強い意志をもって我が道を進むことにします。
2.フリーワードスロットが使えない
スキルにはスロットと呼ばれる引数をもつことができます。
例えば天気スキルだと、「東京の天気が知りたい」の”東京”の部分ですね。
で、スロットにどんな値が入るのかは予めすべて列挙しておくことが推奨されています。
天気の例だと47都道府県名や市町村名すべてですね。
もし未登録の値が話されても文字列として取得することはできますが、登録済みの値に丸め込まれる可能性があるので注意です。
今回作りたいスキルだと、子どもが欲しがるものすべてが対象になってしまいます。
発話をそのまま拾えるといいのですが、フリーワード用のAMAZON.LITERAL型は英語しか対応していないようです。残念。
(実は対処法があるようですが後述)
しょうがないので、ランダムな文字列をおもちゃ名のスロットとして定義し、あらゆる単語を検出することにしました。
ゕうをかすヰるぷとム
にッうゥブソァヶゅモ
ばテづめコィぴヹへィ
ジゼグヮデてポズヌベ
ズぉでベホュォぺミん
申請〜リジェクト
最低限動作するものができたので早速申請してみました。ネタ的に大急ぎでリリースせねばなりません。
・・・が、結果はリジェクト。
Amaozonからのフィードバックには詳しく理由も明記されていたので、いくつか紹介したいと思います。
リジェクト理由
子供向けのAlexaスキルの禁止
13歳以下を対象にしてはいけないと、ポリシーに明記されています。(米国除く)
Alexaスキルのポリシーのテスト
https://developer.amazon.com/ja/docs/custom-skills/policy-testing-for-an-alexa-skill.html
米国でも今年の夏から親の承諾があればOKになったばかりのようで、日本での整備に期待です。
中の人のブログ
https://developer.amazon.com/ja/blogs/alexa/post/a311e51b-da95-40d7-bb5e-8ce591016e03/alexa-now-supports-kid-skills
どうもGoogle Home向けのアクションでも同様に制限があるようですね。
今回は、13歳以上と自己申告して申請しましたが、Alexaの応答に「パパやママのいうこときいてね」みたいな明らかに子ども向けな文言があったので、NGでした。
スロットはユーザーが発話できる内容でないといけない
ですよねw
ランダムな文字列なんて当然ダメで、ちゃんとユーザーが発話する可能性のある単語を列挙しないといけません。
フリーワード拾えないしどうしようかと思ったのですが、
改めてドキュメントをよく読むと、ベストプラクティスに、必ずしもすべての要素を列挙しなくても良いようなことが書かれていました。
早く気づけばよかった・・・。
ただし、やはり定義済みの値に偏重されるので注意が必要ですね。
参考) カスタムスロットタイプの値に関する推奨事項
https://developer.amazon.com/ja/docs/custom-skills/best-practices-for-sample-utterances-and-custom-slot-type-values.html#h3_custom_slot_values
他にもエラー処理の仕方や、ストア文言などいろいろ指摘していただきました。
併せて、どう話したらダメだったかの具定例も明記されており、しっかり審査、サポートされているなぁという印象です。
おわりに
結構雑なつくりのまま申請してしまって、Amazonの審査員さんには申し訳ない限りですが、
おかげさまでスキル開発〜申請の全体の流れ&どんな感じで審査されるのか、感覚をつかめました。
次はしっかりと対策して、公開までこぎつけたいと思います。