Spaces:
Sleeping
Sleeping
File size: 2,251 Bytes
67793ba adf4e97 92b3530 67793ba 92b3530 9cc7fe7 92b3530 9cc7fe7 67793ba 9cc7fe7 67793ba adf4e97 67793ba 97d51f3 67793ba adf4e97 67793ba adf4e97 97d51f3 67793ba 92b3530 67793ba 97d51f3 67793ba adf4e97 67793ba adf4e97 67793ba 97d51f3 67793ba 92b3530 67793ba |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 |
from flask import Flask, request, jsonify
import requests
from dotenv import load_dotenv
import os
# Load environment variables from .env file
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')
# Define the API endpoint for sending messages
API_URL = f"https://graph.facebook.com/v13.0/me/messages?access_token={PAGE_ACCESS_TOKEN}"
@app.route("/facebook", methods=['GET'])
def fbverify():
mode = request.args.get("hub.mode")
token = request.args.get("hub.verify_token")
challenge = request.args.get("hub.challenge")
print(f"Verification request - mode: {mode}, token: {token}, challenge: {challenge}")
if mode == "subscribe" and challenge:
if token == VERIFY_TOKEN:
return challenge, 200
else:
return "Verification token mismatch", 403
return "Hello world", 200
@app.route("/", methods=['POST'])
def fbwebhook():
data = request.get_json()
print("Received data:", data)
try:
# Extract the message and sender ID from the request
messaging_event = data['entry'][0]['messaging'][0]
message = messaging_event.get('message', {})
sender_id = messaging_event['sender']['id']
print(f"Sender ID: {sender_id}, Message: {message}")
# Check if the received message is "hi"
if message.get('text') == "hi":
request_body = {
"recipient": {
"id": sender_id
},
"message": {
"text": "Hello, world!"
}
}
response = requests.post(API_URL, json=request_body)
print(f"Response Status Code: {response.status_code}")
print(f"Response Body: {response.text}")
return jsonify(response.json()), response.status_code
except KeyError as e:
print(f"KeyError: {e}")
return "Invalid payload structure", 400
except Exception as e:
print(f"Exception: {e}")
return "Internal Server Error", 500
if __name__ == '__main__':
app.run(host="0.0.0.0", port=7860, debug=True)
|