Spaces:
Sleeping
Sleeping
from flask import Flask, request, jsonify | |
from dotenv import load_dotenv | |
import os | |
from helper.openai_api import chat_completion | |
from helper.messenger_api import send_message, set_typing_on, set_typing_off | |
# Load environment variables | |
load_dotenv() | |
app = Flask(__name__) | |
# Retrieve environment variables | |
VERIFY_TOKEN = os.getenv('VERIFY_TOKEN') | |
PAGE_ACCESS_TOKEN = os.getenv('PAGE_ACCESS_TOKEN') | |
OPENAI_API_KEY = os.getenv('OPENAI_API_KEY') | |
# Debugging: Print the loaded environment variables | |
print(f"VERIFY_TOKEN: {VERIFY_TOKEN}") | |
print(f"PAGE_ACCESS_TOKEN: {PAGE_ACCESS_TOKEN}") | |
print(f"OPENAI_API_KEY: {OPENAI_API_KEY}") | |
def home(): | |
return 'FACEBOOK CHATBOT', 200 | |
def verify_webhook(): | |
mode = request.args.get('hub.mode') | |
token = request.args.get('hub.verify_token') | |
challenge = request.args.get('hub.challenge') | |
if mode == 'subscribe' and token == VERIFY_TOKEN: | |
return challenge, 200 | |
else: | |
return 'Forbidden', 403 | |
def handle_messages(): | |
body = request.get_json() | |
print('Incoming request body:', body) # Log the entire request body | |
if not body.get('entry') or not body['entry'][0].get('messaging'): | |
return 'Invalid payload', 400 | |
messaging_event = body['entry'][0]['messaging'][0] | |
sender_id = messaging_event['sender']['id'] | |
message_text = messaging_event['message'].get('text') | |
if not sender_id or not message_text: | |
return 'Invalid message', 400 | |
set_typing_on(sender_id) | |
result = chat_completion(message_text) | |
response_text = result.get('response', '') | |
try: | |
parsed_response = response_text # Caution: using eval() is dangerous, ensure the content is trusted | |
if not isinstance(parsed_response, dict): | |
raise ValueError("Response is not a valid dictionary") | |
except: | |
parsed_response = {'msg': response_text, 'image_url': None} | |
msg = parsed_response.get('msg') | |
image_url = parsed_response.get('image_url') | |
send_message(sender_id, msg, image_url) | |
set_typing_off(sender_id) | |
return 'OK', 200 | |
if __name__ == '__main__': | |
app.run(host="0.0.0.0", port=7860, debug=True) | |