diff --git a/webhook/webhook.py b/webhook/webhook.py index 8761d53..4e1cadc 100644 --- a/webhook/webhook.py +++ b/webhook/webhook.py @@ -1,5 +1,5 @@ import os -from flask import Flask, request, jsonify, send_from_directory +from flask import Flask, request, jsonify, send_from_directory, make_response import sqlite3 from datetime import datetime @@ -33,10 +33,10 @@ def serve_data_file(filename): @app.route('/webhook', methods=['POST']) def webhook(): try: - data = request.get_json(silent=True) # 비어있어도 None 반환, 예외 안남 - # 필요시 data['userRequest']['utterance'] 사용 가능 + data = request.get_json(silent=True) # 비어있어도 None 반환, 예외 없음 + # 필요 시 data['userRequest']['utterance'] 사용 가능 today = datetime.today().strftime('%Y%m%d') - + time_rain_list, total_rainfall = get_rain_data(today) if not time_rain_list: @@ -68,16 +68,20 @@ def webhook(): } }) - return jsonify({ + response_body = { "version": "2.0", "template": { "outputs": outputs } - }) + } + + # JSON 응답 생성 및 Content-Type 명시 (charset=utf-8 포함) + resp = make_response(jsonify(response_body)) + resp.headers['Content-Type'] = 'application/json; charset=utf-8' + return resp except Exception as e: - # 에러 발생 시 카카오 챗봇이 받을 수 있는 기본 메시지 반환 - return jsonify({ + error_body = { "version": "2.0", "template": { "outputs": [{ @@ -86,7 +90,10 @@ def webhook(): } }] } - }) + } + resp = make_response(jsonify(error_body)) + resp.headers['Content-Type'] = 'application/json; charset=utf-8' + return resp if __name__ == '__main__': app.run(host='0.0.0.0', port=5000, debug=DEBUG_MODE)