Alexa スキル サーバーをpythonで作る
はじめに
スキルの使い方などはこの頃増えてきたけど、AWSが主流なので、自前サーバでやろうという目論見
ここでは、linuxにAlexaのレスポンスを返すpython製のサーバーを作ります。前提条件として、アマゾンと自前サーバー間はhttps通信が必須なので、Nginxやhaproxyなどのリバースプロキシなどを置いてなんとかしてください。この環境では、ルーターにリバースプロキシが内蔵されているので、nanopiには一切インストールしません。
pythonがAlexaのレスポンスを返すためにflask-askを利用します。また、サンプルもそれに従っています。
パッケージのインストール
とりあえずpython3のpipをインストールします。
sudo apt install python3-pip
アマゾンと通信するためのflask-askをpipでインストールします。ちなみに、依存関係があるので、順番に実行してくだい。
githubはこちら
apt install python3-dev libffi-dev pip3 install setuptools pip3 install wheel pip3 install flask-ask pip3 install -U pyOpenSSL
実行のテスト
次のコードを実行して動けば導入できています。
cat test.py #### from flask import Flask from flask_ask import Ask, statement app = Flask(__name__) ask = Ask(app, '/') @ask.intent('HelloIntent') def hello(firstname): speech_text = "Hello %s" % firstname return statement(speech_text).simple_card('Hello', speech_text) if __name__ == '__main__': app.run(host="0.0.0.0",port=5000)
python3 test.py * Running on http://0.0.0.0:5000/ (Press CTRL+C to quit)
アマゾンで新しいスキルの作成画面を出します。こちらからどうぞ
今回のスキル名はhelloworldとします。カスタムを選択し、スキルを作成します。
呼び出し名をスキルにします
「こんにちは」がAlexaに入力されると、HelloIntentが送信されます。
今回はAWSではなく、HTTPSを選択します。変更後はエンドポイントを保存します。
設定が終わったら、ビルドをしましょう。
ビルド後にテストを行えます。
「スキル」で「こんにちは」を入力するとHelloが帰ってきます。
アマゾンから通信があると、pythonにログが表示されます。
python3 test.py * Running on http://0.0.0.0:5000/ (Press CTRL+C to quit) x.x.x.x - - [07/Nov/2018 14:04:08] "POST / HTTP/1.1" 200 -
まとめ
httpsが実装できれば、比較的簡単にスキルを作ることができました。
ディスカッション
コメント一覧
まだ、コメントがありません