Google Homeのアプリ開発でheroku上にアプリを設置したのですが、jsonの読み込みでエラーが発生してしまっています。どのようにしたらよろしいのでしょうか。
流れとしては、Dialogflowのシミュレーターを使い、heroku側にベーシック認証を用いてアクセスしてレスポンスを返すというものになります。
■出力されているエラー
2018-04-28 09:44:13,497 app.py 1753 ERROR Exception on / [POST] Traceback (most recent call last): File "/app/.heroku/python/lib/python3.6/site-packages/flask/app.py", line 2284, in wsgi_app response = self.full_dispatch_request() File "/app/.heroku/python/lib/python3.6/site-packages/flask/app.py", line 1807, in full_dispatch_request rv = self.handle_user_exception(e) File "/app/.heroku/python/lib/python3.6/site-packages/flask/app.py", line 1710, in handle_user_exception reraise(exc_type, exc_value, tb) File "/app/.heroku/python/lib/python3.6/site-packages/flask/_compat.py", line 35, in reraise raise value File "/app/.heroku/python/lib/python3.6/site-packages/flask/app.py", line 1805, in full_dispatch_request rv = self.dispatch_request() File "/app/.heroku/python/lib/python3.6/site-packages/flask/app.py", line 1791, in dispatch_request return self.view_functions[rule.endpoint](**req.view_args) File "/app/.heroku/python/lib/python3.6/site-packages/flask_httpauth.py", line 93, in decorated return f(*args, **kwargs) File "/app/main.py", line 34, in index input = json.load(sys.stdin) File "/app/.heroku/python/lib/python3.6/json/__init__.py", line 299, in load parse_constant=parse_constant, object_pairs_hook=object_pairs_hook, **kw) File "/app/.heroku/python/lib/python3.6/json/__init__.py", line 354, in loads return _default_decoder.decode(s) File "/app/.heroku/python/lib/python3.6/json/decoder.py", line 339, in decode obj, end = self.raw_decode(s, idx=_w(s, 0).end()) File "/app/.heroku/python/lib/python3.6/json/decoder.py", line 357, in raw_decode raise JSONDecodeError("Expecting value", s, err.value) from None json.decoder.JSONDecodeError: Expecting value: line 1 column 1 (char 0)
■ main.py
from flask import Flask from flask_httpauth import HTTPBasicAuth #HTTP"Basic"Auth import os.path import sys import json #Flask、HTTPBasicAuthクラスのインスタンスを作成 app = Flask(__name__) auth = HTTPBasicAuth() #"id":"パスワード" id_list = { "XXXXXXXXX": "XXXXXXXXX" } #入力されたidに該当するパスワードを #比較のために取得する @auth.get_password def get_pw(id): if id in id_list: return id_list.get(id) return None #実際の処理部分 @app.route('/', methods=['POST', 'GET']) @auth.login_required def index(): input = json.load(sys.stdin) #インテント取得 try: intent = input["result"]["metadata"]["intentName"] except(KeyError, Exception) as e: tb = sys.exc_info()[2] fun.logger.error(e.with_traceback(tb)) # return u"エラー" try: params = input["result"]["contexts"]["parameters"] except(KeyError, Exception) as e: tb = sys.exc_info()[2] fun.logger.error(e.with_traceback(tb)) print ("Content-Type: application/json\n\n") output = { "speech": params } return json.dump(output, sys.stdout) if __name__ == '__main__': app.run()
■Procfile
web: gunicorn main:app --log-file -
■requirements.txt
flask flask-httpauth gunicorn
■runtime.txt
python-3.6.3
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。