GitHubじゃ!Pythonじゃ!

GitHubからPython関係の優良リポジトリを探したかったのじゃー、でも英語は出来ないから日本語で読むのじゃー、英語社会世知辛いのじゃー

johnwheeler

flask-ask – PythonのAlexaスキルキット

投稿日:

PythonのAlexaスキルキット https://developer.amazon.com/blogs/po…

Amazon Echo with Pythonをプログラムする

Flask-AskはFlaskの拡張機能で、Amazon EchoのためのAlexaスキルを簡単に、より楽しく構築できます。

基礎

Flask-Askアプリケーションは次のようになります。

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()

上のコードでは:

  1. Askオブジェクトは、Flaskアプリケーションと、Alexaリクエストを転送するルートを渡すことによって作成されます。
  2. intentデコレータは、 HelloIntentをビュー関数helloマップします。
  3. インテントのfirstnameスロットは、 hellofirstnameパラメータに暗黙的にマップされます。
  4. 最後に、ビルダーが音声応答を作成し、Alexaスマートフォン/タブレットアプリにコンテキストカードを表示します。

より多くのコード例はsamplesディレクトリにあります。

ジンジャーテンプレート

Alexaの回答は通常短いフレーズであるため、同じファイルに入れるのが便利かもしれません。 Flask-Askには、単一のYAMLファイルから複数のテンプレートを読み込むJinjaテンプレートローダーがあります。 たとえば、上記の最小音声インターフェイスをサポートするテンプレートは次のとおりです。

hello: Hello, {{ firstname }}

テンプレートは、アプリケーションルートにあるtemplates.yamlというファイルに格納されます。 Tidepoolerの例をチェックして、話し言葉の数が増えるにつれて、コードから、そしてテンプレートにスピーチを抽出することが理にかなっているかどうかを確認してください。

特徴

Flask-Askは定型文を処理するので、きれいなコードを書くことに集中することができます。 フラスコ – 質問:

  • Alexaリクエストとインテントスロットを表示機能にマップするデコレータを持っている
  • askとtell応答、repromptsとカードを構築するのに役立ちます
  • セッション管理を容易にする
  • Jinjaテンプレートによるコードと音声の分離が可能
  • Alexaリクエストの署名を検証する

インストール

Flask-Askをインストールするには:

pip install flask-ask

ドキュメンテーション

これらのリソースを利用すると、すぐに起動して実行できます。

ハリソン・キンズレーの素晴らしい3部構成のチュートリアルシリーズ

配置

任意のWSGI準拠のフレームワーク(uWSGI、Gunicorn)を使用して展開できます。 プロダクションにFlaskアプリをデプロイしていない場合は、 checkout flask-live-starterをチェックアウトしてください。

AWS Lambdaにデプロイするには、2つの方法があります。 Zappaを使用して、AWS Lambda関数とAWS API Gatewayの配置を自動化し、Lambda関数の公開エンドポイントを提供します。 このブログ記事は、ZappaでFlask-Askをゼロから展開する方法を示しています。 注意:Zappaを使用してAWS Lambdaにデプロイするときは、Alexaのスキルが、Lambda関数のARNではなく、Zappaが作成するHTTPS APIゲートウェイを指していることを確認してください。

また、AWS API Gatewayエンドポイントを必要とせずにAWS Lambdaを直接使用することもできます。 この場合は、Lambda関数を自分で展開しvirtualenvを使用してFlask-Askアプリケーションとその依存関係を含む展開パッケージを作成し、Lambdaにアップロードする必要があります。 Lambdaハンドラがlambda_function.lambda_handlerとして設定されている場合は、上のアプリケーション例をlambda_function.pyというファイルに保存し、次の2行を追加します。

def lambda_handler(event, _context):
    return ask.run_aws_lambda(event)

開発

Flask-Askソースから作業したい場合は、プロジェクトをクローンして実行します。

pip install -r requirements-dev.txt

これにより、tests.txtからのすべての基本要件と、testsディレクトリからのテストの実行に必要な要件がインストールされます。

テストは次のように実行できます。

python setup.py test

または:

python -m unittest

プロジェクトのローカルクローンまたはフォークからインストールするには、次のコマンドを実行します。

python setup.py install

関連プロジェクト

cookiecutter-flask-askは、ドキュメンテーション、音声資産、基本的な組み込みの意図を含むFlask-Askプロジェクトを簡単にブートストラップするCookiecutterです。

Googleホームをお持ちですか? チェックアウト・フラスコ・アシスタント (早期アルファ)

ありがとうございました

このライブラリをチェックしていただきありがとうございます! 私はそれが役に立つと思う。

もちろん、常に改善の余地があります。 私たちがFlask-Askをより良くするために問題開いてください。

@kennethreitzスタイルに対する感謝の気持ちは特にありがたいです。もちろん、 Flaskのための@mitsuhiko







-johnwheeler
-, , , , , ,

執筆者: