Dotを購入したので、カスタムスキルを作ろうと思い、その方法を備忘としてまとめます。2018-10-30Amazon楽天市場YahooショッピングAlexaのカスタムスキルは以前作ったことがあり、そのときに使用したFlask-Askを使用して実装したいと思います。Flask-Askをインストールする際の注意点はこちらの記事にまとめています。今回は作ったプログラムと環境をHerokuにデプロイするので、コンテナをそのままデプロイ出来るようDockerで環境を作ります。簡単に以下のようなDockerfileを作ります。vim以下コマンドでDockerコンテナを起動します。imageを使用しているので、/bin/bashではなくbin/ashであることに注意。qiita.comdocs.docker.jpDockerコンテナに入ったら入ったら、flaskとgunicornインストールします。gunicorn動作確認のためのapp.pyを作成します。app.run()gunicornを起動します。World!"が表示されればOKです。Herokuにデプロイ続いてDockerfileを編集してHerokuにデプロイ出来る環境を作っていきます。requirements.txtを実行しrequirement.txtを作成しておきます。前回の記事にて実施したFlask-Askのパッケージのローカルへのダウンロードと編集したパッケージを/src配下に準備するとともに、build-base,libffi-dev,openssl-devのインストールを追記しておきます。最終的なDockerfileは以下の通り。0.0.0.0:$PORT以前の記事に書いたように、以下コマンドでherokuにデプロイします。World!"が表示されればOKです。スキル作成いよいよここからはカスタムスキルを作成していきます。基本的にはこちらの開発ブログに掲載されているチュートリアルに従って実装していきます。Blogsこちらのチュートリアルでは、数字が3つ読み上げられるのでその数字を覚えて逆から読むというゲームを作っています。Console上での設定と、Flask-Askでのサーバ側の処理実装が必要になります。Consoleで設定チュートリアルとは少し画面構成が違いますが、Console上で設定するものは以下のものです。そのユーザー応答が何を意味するのかを定義します。今回のAnswerIntentでは発話の中で数字を読み上げるので、固定値で発話パターンを定義出来ないので、変数としてスロットを定義したうえで発話を定義します。ConsoleにAmazonアカウントでログインします。開発者アカウントにするために追加で情報入力が必要な際は入力します。https://developer.amazon.com/alexa/console/ask開発者コンソールが開いたらスキルの作成をクリックします。新しいスキルの登録画面で、カスタムスキルを作成します。必要情報を入力すると、スキル編集画面にきます。インテントを登録します。今回は上で説明したとおり、以下の2つを登録します。出された問題に対してユーザーが解答する場合の発話を定義まずはYesIntentを登録します。YesIntentのサンプルを登録し、このIntentがどういった発話パターンを取りうるのかAlexaに知ってもらいます。次にAnswerIntentを登録します。AnserIntentについては、発話パターンのサンプルを登録する前に、発話パターンの中で使用されるスロット(変数、器のようなもの)を登録します。今回は3つの数字のスロットを使用しますので、それぞれfirst、second、thirdの3個を登録します。スロットのタイプはAMAZON.numberとします。次にこのスロットを使用してAnswerIntentの発話パターンを登録します。今回は以下の2パターンを登録しました。次に、このスキルを呼び出した際にそれを処理するサーバーのURLを設定します。先程デプロイしたherokuのURLを設定します。最後に今回のスキルを呼び出すためのスキル名を設定します。設定を保存し、ビルドします。これで開発コンソールでの設定は完了です。左メニューのJSONエディター上は以下のような表示になります。このJSONをそのまま編集してもOKです。}}Flask-ASKで実装サーバ側の処理はFlask-Askで実装していきます。documentationチュートリアルの通り、app.pyを以下のように書き換えます。app.run(debug=True)templateファイルの中にはAlexaが話すセリフを記載します。これから5つの数字を読み上げるので、アタナはその数字を逆の順番で答えてください。反対の順番で読み上げてください。サーバー側の処理はこれでOKなので、再度Herokuにデプロイします。開発用アカウントに紐づけたEcho端末や、アレクサシミュレーターで「アレクサ、メモリーゲームを開いて」と話しかけてゲームがスタートすれば成功です。返事が返ってきません。Herokuのログを確認すると以下のようなエラーが出ていました。'X509V3_EXT_get'調べてみるとpyOpenSSLを再インストールする必要があるようです。electricsheep.hatenadiary.jp記事を参考にDockerfileを以下のように修正します。0.0.0.0:$PORT再度Herokuにデプロイすると無事動作するようになりました。まとめ前回の続きで、Flask-Askを使用してAlexaのカスタムスキルを作成してみました。Flaskを使って簡単に実装できるので、アイデア次第でいろんなスキルが作れそうです。〜〜その2〜〜月別アーカイブ参加グループプログラミングはてなブログをはじめよう!ti_takaさんは、はてなブログを使っています。ブログを報告するスターをつけました引用をストックしましたストック一覧を見る閉じる引用するにはまずログインしてくださいログイン閉じる引用をストックできませんでした。再度お試しください閉じる限定公開記事のため引用できません。