DreamStream-1 commited on
Commit
1b5f12c
·
verified ·
1 Parent(s): 4162538

Update app.py

Browse files
Files changed (1) hide show
  1. app.py +98 -75
app.py CHANGED
@@ -939,30 +939,30 @@ def send_whatsjet_message(phone_number: str, message: str, media_type: str = Non
939
  'phone_number': phone_number,
940
  'message_body': message # Include the message body with the image
941
  }
942
-
943
- logger.info(f"[WhatsJet] Attempting multipart upload for {phone_number}")
944
- logger.info(f"[WhatsJet] Multipart payload - data: {data}")
945
- logger.info(f"[WhatsJet] Multipart payload - files: {list(files.keys())}")
946
-
947
- response = httpx.post(
948
- url,
949
- data=data,
950
- files=files,
951
- timeout=30
952
- )
953
-
954
- # Log response details for debugging
955
- logger.info(f"[WhatsJet] Multipart response status: {response.status_code}")
956
- logger.info(f"[WhatsJet] Multipart response headers: {dict(response.headers)}")
957
  try:
958
- response_text = response.text
959
- logger.info(f"[WhatsJet] Multipart response body: {response_text[:500]}...")
960
- except:
961
- logger.info(f"[WhatsJet] Multipart response body: Unable to read")
962
-
963
- response.raise_for_status()
964
- logger.info(f"[WhatsJet] Media image sent successfully via multipart upload to {phone_number}")
965
- return True
 
 
 
 
 
 
 
 
 
 
 
966
 
967
  except Exception as e:
968
  logger.warning(f"[WhatsJet] Multipart upload failed, trying base64 method: {e}")
@@ -977,42 +977,35 @@ def send_whatsjet_message(phone_number: str, message: str, media_type: str = Non
977
  "media_filename": filename or os.path.basename(media_path) if not media_path.startswith('http') else filename or 'image.jpg',
978
  "message_body": message # Include the message body with the image
979
  }
980
-
981
- logger.info(f"[WhatsJet] Attempting base64 upload for {phone_number}")
982
- logger.info(f"[WhatsJet] Base64 payload keys: {list(payload.keys())}")
983
- logger.info(f"[WhatsJet] Base64 payload - phone_number: {payload['phone_number']}")
984
- logger.info(f"[WhatsJet] Base64 payload - media_type: {payload['media_type']}")
985
- logger.info(f"[WhatsJet] Base64 payload - media_filename: {payload['media_filename']}")
986
- logger.info(f"[WhatsJet] Base64 payload - message_body: '{payload['message_body'][:50]}...'")
987
- logger.info(f"[WhatsJet] Base64 payload - media_content length: {len(payload['media_content'])} chars")
988
-
989
- response = httpx.post(
990
- url,
991
- json=payload,
992
- timeout=30
993
- )
994
-
995
- # Log response details for debugging
996
- logger.info(f"[WhatsJet] Base64 response status: {response.status_code}")
997
- logger.info(f"[WhatsJet] Base64 response headers: {dict(response.headers)}")
998
  try:
999
- response_text = response.text
1000
- logger.info(f"[WhatsJet] Base64 response body: {response_text[:500]}...")
1001
- except:
1002
- logger.info(f"[WhatsJet] Base64 response body: Unable to read")
1003
-
1004
- response.raise_for_status()
1005
- logger.info(f"[WhatsJet] Media image sent successfully via base64 to {phone_number}")
1006
- return True
1007
-
1008
- except Exception as e:
1009
- logger.error(f"[WhatsJet] Base64 method also failed: {e}")
1010
- # Fallback: send text only
1011
- logger.warning(f"[WhatsJet] Both image methods failed, sending text only for {phone_number}")
1012
- return send_whatsjet_message(phone_number, message)
 
 
 
 
 
 
 
1013
 
1014
  except Exception as e:
1015
- logger.error(f"[WhatsJet] Exception preparing media image: {str(e)}")
 
1016
  # Fallback: send text only
1017
  return send_whatsjet_message(phone_number, message)
1018
 
@@ -1028,7 +1021,6 @@ def send_whatsjet_message(phone_number: str, message: str, media_type: str = Non
1028
  else:
1029
  with open(media_path, 'rb') as f:
1030
  media_content = f.read()
1031
-
1032
  # Try multipart first, then base64
1033
  try:
1034
  files = {
@@ -1038,19 +1030,30 @@ def send_whatsjet_message(phone_number: str, message: str, media_type: str = Non
1038
  'phone_number': phone_number,
1039
  'message_body': message
1040
  }
1041
-
1042
- response = httpx.post(
1043
- url,
1044
- data=data,
1045
- files=files,
1046
- timeout=30
1047
- )
1048
- response.raise_for_status()
1049
- logger.info(f"[WhatsJet] Media message sent successfully via multipart to {phone_number}")
1050
- return True
1051
-
1052
- except Exception as e:
1053
- logger.warning(f"[WhatsJet] Multipart upload failed for media, trying base64: {e}")
 
 
 
 
 
 
 
 
 
 
 
1054
 
1055
  media_b64 = base64.b64encode(media_content).decode('utf-8')
1056
  payload = {
@@ -1060,20 +1063,32 @@ def send_whatsjet_message(phone_number: str, message: str, media_type: str = Non
1060
  'media_content': media_b64,
1061
  'media_filename': filename or os.path.basename(media_path) if not media_path.startswith('http') else filename or 'file.bin'
1062
  }
 
 
 
1063
  try:
1064
  response = httpx.post(
1065
  url,
1066
  json=payload,
1067
  timeout=30
1068
  )
 
 
 
 
 
 
 
1069
  response.raise_for_status()
1070
  logger.info(f"[WhatsJet] Media message sent successfully via base64 to {phone_number}")
1071
  return True
1072
  except Exception as e:
1073
- logger.error(f"[WhatsJet] Exception sending media message: {e}")
 
1074
  return False
1075
  except Exception as e:
1076
- logger.error(f"[WhatsJet] Exception preparing media message: {str(e)}")
 
1077
  return False
1078
 
1079
  # Handle text messages (existing logic)
@@ -1083,19 +1098,27 @@ def send_whatsjet_message(phone_number: str, message: str, media_type: str = Non
1083
  for chunk in split_message_for_whatsapp(message):
1084
  try:
1085
  payload = {"phone_number": phone_number, "message_body": chunk}
 
 
 
1086
  try:
1087
  response = httpx.post(
1088
  url,
1089
  json=payload,
1090
  timeout=15
1091
  )
 
 
 
1092
  response.raise_for_status()
1093
  logger.info(f"[WhatsJet] Text chunk sent successfully to {phone_number}")
1094
  except Exception as e:
1095
- logger.error(f"[WhatsJet] Exception sending text chunk: {e}")
 
1096
  return False
1097
  except Exception as e:
1098
- logger.error(f"[WhatsJet] Exception preparing text chunk: {str(e)}")
 
1099
  return False
1100
  logger.info(f"[WhatsJet] Successfully sent complete text message to {phone_number}")
1101
  return True
@@ -4054,4 +4077,4 @@ async def test_whatsjet_payloads(phone: str):
4054
  if __name__ == "__main__":
4055
  # Launch FastAPI app
4056
  import uvicorn
4057
- uvicorn.run(app, host="0.0.0.0", port=7860)
 
939
  'phone_number': phone_number,
940
  'message_body': message # Include the message body with the image
941
  }
942
+ # Enhanced logging
943
+ logger.info(f"[WhatsJet][DEBUG] URL: {url}")
944
+ logger.info(f"[WhatsJet][DEBUG] Multipart data: {data}")
945
+ logger.info(f"[WhatsJet][DEBUG] Multipart files: {list(files.keys())}")
 
 
 
 
 
 
 
 
 
 
 
946
  try:
947
+ response = httpx.post(
948
+ url,
949
+ data=data,
950
+ files=files,
951
+ timeout=30
952
+ )
953
+ logger.info(f"[WhatsJet][DEBUG] Multipart response status: {response.status_code}")
954
+ logger.info(f"[WhatsJet][DEBUG] Multipart response headers: {dict(response.headers)}")
955
+ try:
956
+ response_text = response.text
957
+ logger.info(f"[WhatsJet][DEBUG] Multipart response body: {response_text[:1000]}" + ("..." if len(response_text) > 1000 else ""))
958
+ except Exception as e:
959
+ logger.info(f"[WhatsJet][DEBUG] Multipart response body: Unable to read: {e}")
960
+ response.raise_for_status()
961
+ logger.info(f"[WhatsJet] Media image sent successfully via multipart upload to {phone_number}")
962
+ return True
963
+ except Exception as e:
964
+ import traceback
965
+ logger.warning(f"[WhatsJet][ERROR] Multipart upload failed, trying base64 method: {e}\nTraceback: {traceback.format_exc()}")
966
 
967
  except Exception as e:
968
  logger.warning(f"[WhatsJet] Multipart upload failed, trying base64 method: {e}")
 
977
  "media_filename": filename or os.path.basename(media_path) if not media_path.startswith('http') else filename or 'image.jpg',
978
  "message_body": message # Include the message body with the image
979
  }
980
+ # Enhanced logging
981
+ logger.info(f"[WhatsJet][DEBUG] URL: {url}")
982
+ logger.info(f"[WhatsJet][DEBUG] Base64 payload: {{'phone_number': payload['phone_number'], 'media_type': payload['media_type'], 'media_filename': payload['media_filename'], 'message_body': payload['message_body'][:50] + '...', 'media_content_length': len(payload['media_content'])}}")
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
983
  try:
984
+ response = httpx.post(
985
+ url,
986
+ json=payload,
987
+ timeout=30
988
+ )
989
+ logger.info(f"[WhatsJet][DEBUG] Base64 response status: {response.status_code}")
990
+ logger.info(f"[WhatsJet][DEBUG] Base64 response headers: {dict(response.headers)}")
991
+ try:
992
+ response_text = response.text
993
+ logger.info(f"[WhatsJet][DEBUG] Base64 response body: {response_text[:1000]}" + ("..." if len(response_text) > 1000 else ""))
994
+ except Exception as e:
995
+ logger.info(f"[WhatsJet][DEBUG] Base64 response body: Unable to read: {e}")
996
+ response.raise_for_status()
997
+ logger.info(f"[WhatsJet] Media image sent successfully via base64 to {phone_number}")
998
+ return True
999
+ except Exception as e:
1000
+ import traceback
1001
+ logger.error(f"[WhatsJet][ERROR] Base64 method also failed: {e}\nTraceback: {traceback.format_exc()}")
1002
+ # Fallback: send text only
1003
+ logger.warning(f"[WhatsJet] Both image methods failed, sending text only for {phone_number}")
1004
+ return send_whatsjet_message(phone_number, message)
1005
 
1006
  except Exception as e:
1007
+ import traceback
1008
+ logger.error(f"[WhatsJet][ERROR] Exception preparing media image: {str(e)}\nTraceback: {traceback.format_exc()}")
1009
  # Fallback: send text only
1010
  return send_whatsjet_message(phone_number, message)
1011
 
 
1021
  else:
1022
  with open(media_path, 'rb') as f:
1023
  media_content = f.read()
 
1024
  # Try multipart first, then base64
1025
  try:
1026
  files = {
 
1030
  'phone_number': phone_number,
1031
  'message_body': message
1032
  }
1033
+ # Enhanced logging
1034
+ logger.info(f"[WhatsJet][DEBUG] URL: {url}")
1035
+ logger.info(f"[WhatsJet][DEBUG] Multipart data: {data}")
1036
+ logger.info(f"[WhatsJet][DEBUG] Multipart files: {list(files.keys())}")
1037
+ try:
1038
+ response = httpx.post(
1039
+ url,
1040
+ data=data,
1041
+ files=files,
1042
+ timeout=30
1043
+ )
1044
+ logger.info(f"[WhatsJet][DEBUG] Multipart response status: {response.status_code}")
1045
+ logger.info(f"[WhatsJet][DEBUG] Multipart response headers: {dict(response.headers)}")
1046
+ try:
1047
+ response_text = response.text
1048
+ logger.info(f"[WhatsJet][DEBUG] Multipart response body: {response_text[:1000]}" + ("..." if len(response_text) > 1000 else ""))
1049
+ except Exception as e:
1050
+ logger.info(f"[WhatsJet][DEBUG] Multipart response body: Unable to read: {e}")
1051
+ response.raise_for_status()
1052
+ logger.info(f"[WhatsJet] Media message sent successfully via multipart to {phone_number}")
1053
+ return True
1054
+ except Exception as e:
1055
+ import traceback
1056
+ logger.warning(f"[WhatsJet][ERROR] Multipart upload failed for media, trying base64: {e}\nTraceback: {traceback.format_exc()}")
1057
 
1058
  media_b64 = base64.b64encode(media_content).decode('utf-8')
1059
  payload = {
 
1063
  'media_content': media_b64,
1064
  'media_filename': filename or os.path.basename(media_path) if not media_path.startswith('http') else filename or 'file.bin'
1065
  }
1066
+ # Enhanced logging
1067
+ logger.info(f"[WhatsJet][DEBUG] URL: {url}")
1068
+ logger.info(f"[WhatsJet][DEBUG] Base64 payload: {{'phone_number': payload['phone_number'], 'media_type': payload['media_type'], 'media_filename': payload['media_filename'], 'message_body': payload['message_body'][:50] + '...', 'media_content_length': len(payload['media_content'])}}")
1069
  try:
1070
  response = httpx.post(
1071
  url,
1072
  json=payload,
1073
  timeout=30
1074
  )
1075
+ logger.info(f"[WhatsJet][DEBUG] Base64 response status: {response.status_code}")
1076
+ logger.info(f"[WhatsJet][DEBUG] Base64 response headers: {dict(response.headers)}")
1077
+ try:
1078
+ response_text = response.text
1079
+ logger.info(f"[WhatsJet][DEBUG] Base64 response body: {response_text[:1000]}" + ("..." if len(response_text) > 1000 else ""))
1080
+ except Exception as e:
1081
+ logger.info(f"[WhatsJet][DEBUG] Base64 response body: Unable to read: {e}")
1082
  response.raise_for_status()
1083
  logger.info(f"[WhatsJet] Media message sent successfully via base64 to {phone_number}")
1084
  return True
1085
  except Exception as e:
1086
+ import traceback
1087
+ logger.error(f"[WhatsJet][ERROR] Exception sending media message: {e}\nTraceback: {traceback.format_exc()}")
1088
  return False
1089
  except Exception as e:
1090
+ import traceback
1091
+ logger.error(f"[WhatsJet][ERROR] Exception preparing media message: {str(e)}\nTraceback: {traceback.format_exc()}")
1092
  return False
1093
 
1094
  # Handle text messages (existing logic)
 
1098
  for chunk in split_message_for_whatsapp(message):
1099
  try:
1100
  payload = {"phone_number": phone_number, "message_body": chunk}
1101
+ # Enhanced logging
1102
+ logger.info(f"[WhatsJet][DEBUG] URL: {url}")
1103
+ logger.info(f"[WhatsJet][DEBUG] Payload: {json.dumps(payload)}")
1104
  try:
1105
  response = httpx.post(
1106
  url,
1107
  json=payload,
1108
  timeout=15
1109
  )
1110
+ logger.info(f"[WhatsJet][DEBUG] Response status: {response.status_code}")
1111
+ logger.info(f"[WhatsJet][DEBUG] Response headers: {dict(response.headers)}")
1112
+ logger.info(f"[WhatsJet][DEBUG] Response body: {response.text}")
1113
  response.raise_for_status()
1114
  logger.info(f"[WhatsJet] Text chunk sent successfully to {phone_number}")
1115
  except Exception as e:
1116
+ import traceback
1117
+ logger.error(f"[WhatsJet][ERROR] Exception sending text chunk: {e}\nTraceback: {traceback.format_exc()}")
1118
  return False
1119
  except Exception as e:
1120
+ import traceback
1121
+ logger.error(f"[WhatsJet][ERROR] Exception preparing text chunk: {str(e)}\nTraceback: {traceback.format_exc()}")
1122
  return False
1123
  logger.info(f"[WhatsJet] Successfully sent complete text message to {phone_number}")
1124
  return True
 
4077
  if __name__ == "__main__":
4078
  # Launch FastAPI app
4079
  import uvicorn
4080
+ uvicorn.run(app, host="0.0.0.0", port=7860)