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)