imseldrith commited on
Commit
9cc7fe7
·
verified ·
1 Parent(s): 2bf6a43

Update app.py

Browse files
Files changed (1) hide show
  1. app.py +20 -17
app.py CHANGED
@@ -4,25 +4,32 @@ import os
4
  from helper.openai_api import chat_completion
5
  from helper.messenger_api import send_message, set_typing_on, set_typing_off
6
 
 
7
  load_dotenv()
8
 
9
  app = Flask(__name__)
10
 
 
11
  VERIFY_TOKEN = os.getenv('VERIFY_TOKEN')
12
- print(VERIFY_TOKEN)
 
 
 
 
 
 
 
13
  @app.route('/', methods=['GET'])
14
  def home():
15
- print('FACEBOOK CHATBOT')
16
  return 'FACEBOOK CHATBOT', 200
17
-
18
  @app.route('/facebook', methods=['GET'])
19
  def verify_webhook():
20
  mode = request.args.get('hub.mode')
21
  token = request.args.get('hub.verify_token')
22
  challenge = request.args.get('hub.challenge')
23
 
24
- if mode == 'subscribe' and token == "imseldrith": # VERIFY_TOKEN:
25
- print('WEBHOOK_VERIFIED')
26
  return challenge, 200
27
  else:
28
  return 'Forbidden', 403
@@ -30,9 +37,9 @@ def verify_webhook():
30
  @app.route('/webhook', methods=['POST'])
31
  def handle_messages():
32
  body = request.get_json()
 
33
 
34
  if not body.get('entry') or not body['entry'][0].get('messaging'):
35
- print('Invalid payload structure:', body)
36
  return 'Invalid payload', 400
37
 
38
  messaging_event = body['entry'][0]['messaging'][0]
@@ -40,29 +47,25 @@ def handle_messages():
40
  message_text = messaging_event['message'].get('text')
41
 
42
  if not sender_id or not message_text:
43
- print('Missing sender ID or message text:', {'sender_id': sender_id, 'message_text': message_text})
44
  return 'Invalid message', 400
45
 
46
  set_typing_on(sender_id)
47
 
48
  result = chat_completion(message_text)
49
- print('Chat Completion Result:', result)
50
-
51
  response_text = result.get('response', '')
 
52
  try:
53
  parsed_response = eval(response_text) # Caution: using eval() is dangerous, ensure the content is trusted
 
 
54
  except:
55
- parsed_response = response_text
56
 
57
- if isinstance(parsed_response, dict):
58
- msg = parsed_response.get('msg')
59
- image_url = parsed_response.get('image_url')
60
- send_message(sender_id, msg, image_url)
61
- else:
62
- send_message(sender_id, response_text)
63
 
64
  set_typing_off(sender_id)
65
- print(f'Message sent to {sender_id}: {parsed_response}')
66
  return 'OK', 200
67
 
68
  if __name__ == '__main__':
 
4
  from helper.openai_api import chat_completion
5
  from helper.messenger_api import send_message, set_typing_on, set_typing_off
6
 
7
+ # Load environment variables
8
  load_dotenv()
9
 
10
  app = Flask(__name__)
11
 
12
+ # Retrieve environment variables
13
  VERIFY_TOKEN = os.getenv('VERIFY_TOKEN')
14
+ PAGE_ACCESS_TOKEN = os.getenv('PAGE_ACCESS_TOKEN')
15
+ OPENAI_API_KEY = os.getenv('OPENAI_API_KEY')
16
+
17
+ # Debugging: Print the loaded environment variables
18
+ print(f"VERIFY_TOKEN: {VERIFY_TOKEN}")
19
+ print(f"PAGE_ACCESS_TOKEN: {PAGE_ACCESS_TOKEN}")
20
+ print(f"OPENAI_API_KEY: {OPENAI_API_KEY}")
21
+
22
  @app.route('/', methods=['GET'])
23
  def home():
 
24
  return 'FACEBOOK CHATBOT', 200
25
+
26
  @app.route('/facebook', methods=['GET'])
27
  def verify_webhook():
28
  mode = request.args.get('hub.mode')
29
  token = request.args.get('hub.verify_token')
30
  challenge = request.args.get('hub.challenge')
31
 
32
+ if mode == 'subscribe' and token == VERIFY_TOKEN:
 
33
  return challenge, 200
34
  else:
35
  return 'Forbidden', 403
 
37
  @app.route('/webhook', methods=['POST'])
38
  def handle_messages():
39
  body = request.get_json()
40
+ print('Incoming request body:', body) # Log the entire request body
41
 
42
  if not body.get('entry') or not body['entry'][0].get('messaging'):
 
43
  return 'Invalid payload', 400
44
 
45
  messaging_event = body['entry'][0]['messaging'][0]
 
47
  message_text = messaging_event['message'].get('text')
48
 
49
  if not sender_id or not message_text:
 
50
  return 'Invalid message', 400
51
 
52
  set_typing_on(sender_id)
53
 
54
  result = chat_completion(message_text)
 
 
55
  response_text = result.get('response', '')
56
+
57
  try:
58
  parsed_response = eval(response_text) # Caution: using eval() is dangerous, ensure the content is trusted
59
+ if not isinstance(parsed_response, dict):
60
+ raise ValueError("Response is not a valid dictionary")
61
  except:
62
+ parsed_response = {'msg': response_text, 'image_url': None}
63
 
64
+ msg = parsed_response.get('msg')
65
+ image_url = parsed_response.get('image_url')
66
+ send_message(sender_id, msg, image_url)
 
 
 
67
 
68
  set_typing_off(sender_id)
 
69
  return 'OK', 200
70
 
71
  if __name__ == '__main__':