はじめに
この投稿は私がラズパイで自作Alexaを開発した知見を投稿するシリーズ(にしようと思っている)です。
同じ現象に当たった時の助けになればいいなと思ったので、始めることにしました。
現象
カスタムスキルが呼べない。
いつも、僕の alexa は Can"t find the skill と悲しい答えを返してくる。
Echosim で試すと正しくスキルを呼んでくれる。
解決方法
developer.amazon.com で 別のセキュリティプロファイル を作成し、
再認証させる。
原因
同じセキュリティプロファイルを複数のデバイスで使い回している。
詳しく
自作デバイスからAlexaにアクセスするためには、デバイスが自分の持つAmazon.comアカウントへアクセスできるよう、セキュリティプロファイルを通して、アクセス許可を提供する必要がある。
この時に、 developer.amazon.com で作成したセキュリティプロファイルが使われる。
この認証操作は、HTTPリクエストによって行うのだが、このメッセージの中には、デバイスのシリアルナンバーを埋め込む必要がある
{
"alexa:all": {
"productID": "{{productId}}",
"productInstanceAttributes": {
"deviceSerialNumber": "{{deviceSerialNumber}}"
}
}
}
シリアルナンバーが重複すると、alexaがスキルを呼ぶ際にプロファイルを選べなくなり、スキルを見つけることができなくなる。
いろんなデバイスで試していて、「プロファイルを使い回せばいいやー」でやってしまうと、これにハマる。
再認証の手順
再認証のステップは、クライアントの実装により異なるので言及できないのですが、Amazon公式サンプルの手順を補足として載せておきます。
補足
Amazon公式:alexa-avs-sample-app
ラスパイ版
MAC版
補足2 解決までのステップ
それはそれは長い道のりだった。。。(ただの苦労話です。読み物としてどうぞ。)
12月から、ずっと僕のアレクサはスキルを呼び出してくれなかった。
Webを漁ったら「UK対応したからじゃない?」とか、「バグだよ。今Amazonが直してるよ」などなど、右往左往する記事にばかり当たる。
どうにもいかなくなって、昨年のre:Inventでアレクサのすごい人に聞いてみたりもした。
それでもうまくいかない。
ふと、Echosim.io で試す。。。呼べる!!!!
Amazon公式サンプルで試す。セキュリティプロファイルは、自作のalexaで作った時のものを試す。呼べる!!!
ラズパイに戻って、同じセキュリティプロファイルで再認証してみる。やっぱり呼べない。
Amazon公式サンプルで試す。。。。呼べなくなってる!?
そしてドキュメントを漁る。
シリアルナンバー。。。。?
仮説が立つ。
セキュリティプロファイル:デバイス=1:1
そして検証。確信に変わる。
ここまで長かった。。。。
同じ悩みを持ってる人がいて、これで解決できたなら嬉しい限りです。