Alexaスキル開発メモ:ngrokからBespokenに変更

Alexaスキル開発

こんにちは、ハルアキです。

僕はAlexaのスキル開発をするときに、ngrokをつかてローカルデバッグをしているのですが、ある日いつものようにテストしようとするとAlexaが返答しなくなってしまいました。

アレクサ
アレクサ

リクエストされたスキルから有効な応答がありませんでした

アレクサ
アレクサ

The requested skill did not provide a valid response

これはまずい、、Alexa開発でローカルデバッグができないと開発効率がすごくさがってしまいます。

調べた結果、Bespokenというサービスでなんとかローカルデバッグ環境を作れそうだったのでメモを残します。

ngrokが使えなくなった原因

Alexaが応答しなくなった理由をまず調査しました。

JSON出力が全くの空白になっていて、ngrokを立ち上げているコンソールにもアクセスされた形跡がありません。
AlexaからEndpointへの通信がうまく行っていないようです。

ブラウザからEndpointへアクセスすると、コンソールにログはでているのでngrokがダメになっているわけではなさそうです。
と思ったのですが、ネットを調べているうちにAmazon開発者フォーラムで次の投稿を発見しました。

ngrok detected a spike on requests coming from Amazon and decided to block IP ranges that originated those requests. This ended up impacting Alexa as well. Until the ranges are unblocked, it will not be possible to host Alexa’s endpoints in ngrok.

https://forums.developer.amazon.com/questions/226962/ngrok-not-working-as-endpoint.html

4ヶ月前くらいの投稿なので今の状況とは違うかもしれませんが、過去にngrok側でAmazonのIPからのアクセスをブロックしたことがあったようです。
今回もその影響の可能性はありますね・・

この投稿のベストアンサーをみると代替手段で Bespoken が紹介されていました。
早速試してみます。

Bespokenを試してみる

早速Bespokenをサイトを見てみます。

Bespoken | Tools and Resources for Testing and Monitoring Voice Apps
We’ve made testing 10X faster and deeper. The world's leader in automated testing and monitoring for Alexa skills and Google Actions. Try our tools today!

スマートスピーカーに特化したサービスのようですね。

料金を見てみると、無料プランも用意されています。
有料プランは月額2万円を超えるので、企業向けのサービスですね。

早速無料プランのCLIをインストールします。

$ npm install -g bespoken-tools

そして、Proxyを立ち上げます。Node.jsのlamdbaであれば次のコマンドで立ち上げることができます。

$ bst proxy lambda index.js

実行すると次のようなメッセージが表示されます。
このhttpsのURLをendpointに指定すればOKです。

BST: v2.4.79  Node: v12.13.1
 Did you know? bst proxy works for more than just Alexa. Use bst proxy function to start a proxy to a Google Cloud Function.

Your public URL for accessing your local service:
https://boiling-lydon-jCgAe8.bespoken.link
INFO 2020-09-13T21:18:52.668Z Connected - proxy.bespoken.tools:80

ソースコードの修正もモニタリングしていて保存するとリロードしてくれます。
これでローカルデバッグもできそうです。

※僕のソースではngrok用にサーバーを立てる処理があるとリロード後の処理がうまく動かなかったのでコメントアウトしました。コメントアウト後は問題なく動作しています。

まとめ

Alexaスキル開発を効率よく行うためにはローカルデバッグ環境が重要です。

いつも使っていたngrokが使えなくなってしまって、急遽Bespokenを試してみました。
今のところは代替手段としてうまく動いてそうです。

Bespokenを調べてみると、コマンドラインでテストなどもできるようので、活用範囲も広げていけそうです。

それでは、今日も素敵なアレクサライフを!

コメント

タイトルとURLをコピーしました