DreamStream-1 commited on
Commit
0541736
·
verified ·
1 Parent(s): 6ee0882

Update app.py

Browse files
Files changed (1) hide show
  1. app.py +38 -18
app.py CHANGED
@@ -1064,27 +1064,24 @@ def split_message_for_whatsapp(message: str, max_length: int = 1000) -> list:
1064
  return [message[i:i+max_length] for i in range(0, len(message), max_length)]
1065
 
1066
  def send_whatsjet_message(phone_number: str, message: str, media_type: str = None, media_path: str = None, filename: str = None) -> bool:
1067
- """Send a message using WhatsJet API with optional media attachment"""
1068
  if not all([WHATSJET_API_URL, WHATSJET_VENDOR_UID, WHATSJET_API_TOKEN]):
1069
  logger.error("[WhatsJet] Missing environment variables.")
1070
  return False
1071
 
1072
  url = f"{WHATSJET_API_URL}/{WHATSJET_VENDOR_UID}/contact/send-message?token={WHATSJET_API_TOKEN}"
1073
 
1074
- # Handle media messages
1075
  if media_type and media_path:
1076
- try:
1077
- with open(media_path, 'rb') as f:
1078
- media_content = f.read()
1079
- media_b64 = base64.b64encode(media_content).decode('utf-8')
1080
  payload = {
1081
- "phone_number": phone_number,
1082
  "message_body": message,
1083
- 'media_type': media_type,
1084
- 'media_content': media_b64,
1085
- 'media_filename': filename or os.path.basename(media_path)
1086
  }
1087
- # Send message with increased timeout
1088
  try:
1089
  response = httpx.post(
1090
  url,
@@ -1092,14 +1089,39 @@ def send_whatsjet_message(phone_number: str, message: str, media_type: str = Non
1092
  timeout=15
1093
  )
1094
  response.raise_for_status()
1095
- logger.info(f"[WhatsJet] Media message sent successfully to {phone_number}")
1096
  return True
1097
  except Exception as e:
1098
- logger.error(f"[WhatsJet] Exception sending media message: {e}")
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1099
  return False
1100
- except Exception as e:
1101
- logger.error(f"[WhatsJet] Exception preparing media message: {str(e)}")
1102
- return False
1103
 
1104
  # Handle text messages
1105
  if not message.strip():
@@ -1108,7 +1130,6 @@ def send_whatsjet_message(phone_number: str, message: str, media_type: str = Non
1108
  for chunk in split_message_for_whatsapp(message):
1109
  try:
1110
  payload = {"phone_number": phone_number, "message_body": chunk}
1111
- # Send message with increased timeout
1112
  try:
1113
  response = httpx.post(
1114
  url,
@@ -1123,7 +1144,6 @@ def send_whatsjet_message(phone_number: str, message: str, media_type: str = Non
1123
  except Exception as e:
1124
  logger.error(f"[WhatsJet] Exception preparing text chunk: {str(e)}")
1125
  return False
1126
-
1127
  logger.info(f"[WhatsJet] Successfully sent complete text message to {phone_number}")
1128
  return True
1129
 
 
1064
  return [message[i:i+max_length] for i in range(0, len(message), max_length)]
1065
 
1066
  def send_whatsjet_message(phone_number: str, message: str, media_type: str = None, media_path: str = None, filename: str = None) -> bool:
1067
+ """Send a message using WhatsJet API with optional media attachment or public URL"""
1068
  if not all([WHATSJET_API_URL, WHATSJET_VENDOR_UID, WHATSJET_API_TOKEN]):
1069
  logger.error("[WhatsJet] Missing environment variables.")
1070
  return False
1071
 
1072
  url = f"{WHATSJET_API_URL}/{WHATSJET_VENDOR_UID}/contact/send-message?token={WHATSJET_API_TOKEN}"
1073
 
1074
+ # Handle media messages (local file or public URL)
1075
  if media_type and media_path:
1076
+ # If media_path is a public URL, use media_url and send caption
1077
+ if isinstance(media_path, str) and media_path.startswith("http"):
 
 
1078
  payload = {
1079
+ "phone_number": phone_number,
1080
  "message_body": message,
1081
+ "media_type": media_type,
1082
+ "media_url": media_path,
1083
+ "media_filename": filename or os.path.basename(media_path)
1084
  }
 
1085
  try:
1086
  response = httpx.post(
1087
  url,
 
1089
  timeout=15
1090
  )
1091
  response.raise_for_status()
1092
+ logger.info(f"[WhatsJet] Media URL message sent successfully to {phone_number}")
1093
  return True
1094
  except Exception as e:
1095
+ logger.error(f"[WhatsJet] Exception sending media URL message: {e}")
1096
+ return False
1097
+ else:
1098
+ # Local file logic as before
1099
+ try:
1100
+ with open(media_path, 'rb') as f:
1101
+ media_content = f.read()
1102
+ media_b64 = base64.b64encode(media_content).decode('utf-8')
1103
+ payload = {
1104
+ "phone_number": phone_number,
1105
+ "message_body": message,
1106
+ 'media_type': media_type,
1107
+ 'media_content': media_b64,
1108
+ 'media_filename': filename or os.path.basename(media_path)
1109
+ }
1110
+ try:
1111
+ response = httpx.post(
1112
+ url,
1113
+ json=payload,
1114
+ timeout=15
1115
+ )
1116
+ response.raise_for_status()
1117
+ logger.info(f"[WhatsJet] Media message sent successfully to {phone_number}")
1118
+ return True
1119
+ except Exception as e:
1120
+ logger.error(f"[WhatsJet] Exception sending media message: {e}")
1121
+ return False
1122
+ except Exception as e:
1123
+ logger.error(f"[WhatsJet] Exception preparing media message: {str(e)}")
1124
  return False
 
 
 
1125
 
1126
  # Handle text messages
1127
  if not message.strip():
 
1130
  for chunk in split_message_for_whatsapp(message):
1131
  try:
1132
  payload = {"phone_number": phone_number, "message_body": chunk}
 
1133
  try:
1134
  response = httpx.post(
1135
  url,
 
1144
  except Exception as e:
1145
  logger.error(f"[WhatsJet] Exception preparing text chunk: {str(e)}")
1146
  return False
 
1147
  logger.info(f"[WhatsJet] Successfully sent complete text message to {phone_number}")
1148
  return True
1149