Spaces:
Sleeping
Sleeping
Update app.py
Browse files
app.py
CHANGED
@@ -1465,7 +1465,7 @@ async def process_incoming_message(from_number: str, msg: dict):
|
|
1465 |
return
|
1466 |
else:
|
1467 |
# Only trigger menu mode if not in AI chat mode
|
1468 |
-
welcome_msg = generate_veterinary_welcome_message()
|
1469 |
send_whatsjet_message(from_number, welcome_msg)
|
1470 |
context_manager.update_context(
|
1471 |
from_number,
|
@@ -1481,7 +1481,7 @@ async def process_incoming_message(from_number: str, msg: dict):
|
|
1481 |
mapped_navigation = process_intelligent_voice_command(message_body, current_state, user_context)
|
1482 |
if mapped_navigation == 'main':
|
1483 |
logger.info(f"[Process] Navigation command detected: '{message_body}' -> 'main'")
|
1484 |
-
welcome_msg = generate_veterinary_welcome_message()
|
1485 |
send_whatsjet_message(from_number, welcome_msg)
|
1486 |
context_manager.update_context(
|
1487 |
from_number,
|
@@ -1493,7 +1493,7 @@ async def process_incoming_message(from_number: str, msg: dict):
|
|
1493 |
|
1494 |
# Also check for text-based main commands
|
1495 |
if message_body.lower() in ['main', 'menu', 'start', 'home', 'back']:
|
1496 |
-
welcome_msg = generate_veterinary_welcome_message()
|
1497 |
send_whatsjet_message(from_number, welcome_msg)
|
1498 |
context_manager.update_context(
|
1499 |
from_number,
|
@@ -1513,7 +1513,7 @@ async def process_incoming_message(from_number: str, msg: dict):
|
|
1513 |
# Check for main navigation first
|
1514 |
if mapped_selection == 'main':
|
1515 |
logger.info(f"[Process] Main navigation from product_inquiry: '{message_body}' -> 'main'")
|
1516 |
-
welcome_msg = generate_veterinary_welcome_message()
|
1517 |
send_whatsjet_message(from_number, welcome_msg)
|
1518 |
context_manager.update_context(
|
1519 |
from_number,
|
@@ -1552,7 +1552,7 @@ async def process_incoming_message(from_number: str, msg: dict):
|
|
1552 |
# Check for main navigation first
|
1553 |
if mapped_selection == 'main':
|
1554 |
logger.info(f"[Process] Main navigation from category_products_menu: '{message_body}' -> 'main'")
|
1555 |
-
welcome_msg = generate_veterinary_welcome_message()
|
1556 |
send_whatsjet_message(from_number, welcome_msg)
|
1557 |
context_manager.update_context(
|
1558 |
from_number,
|
@@ -1585,7 +1585,7 @@ async def process_incoming_message(from_number: str, msg: dict):
|
|
1585 |
# Check for main navigation first
|
1586 |
if mapped_selection == 'main':
|
1587 |
logger.info(f"[Process] Main navigation from all_products_menu: '{message_body}' -> 'main'")
|
1588 |
-
welcome_msg = generate_veterinary_welcome_message()
|
1589 |
send_whatsjet_message(from_number, welcome_msg)
|
1590 |
context_manager.update_context(
|
1591 |
from_number,
|
@@ -1616,7 +1616,7 @@ async def process_incoming_message(from_number: str, msg: dict):
|
|
1616 |
# Check for main navigation first
|
1617 |
if mapped_selection == 'main':
|
1618 |
logger.info(f"[Process] Main navigation from category_selection_menu: '{message_body}' -> 'main'")
|
1619 |
-
welcome_msg = generate_veterinary_welcome_message()
|
1620 |
send_whatsjet_message(from_number, welcome_msg)
|
1621 |
context_manager.update_context(
|
1622 |
from_number,
|
@@ -1857,7 +1857,7 @@ async def handle_voice_message_complete(from_number: str, msg: dict):
|
|
1857 |
return
|
1858 |
else:
|
1859 |
# Only trigger menu mode if not in AI chat mode
|
1860 |
-
welcome_msg = generate_veterinary_welcome_message()
|
1861 |
send_whatsjet_message(from_number, welcome_msg)
|
1862 |
context_manager.update_context(from_number, current_state='main_menu', current_menu='main_menu', current_menu_options=list(MENU_CONFIG['main_menu']['option_descriptions'].values()))
|
1863 |
return
|
@@ -1971,13 +1971,13 @@ async def handle_veterinary_menu_selection_complete(selection: str, from_number:
|
|
1971 |
await handle_all_products_selection(from_number, selection, user_context)
|
1972 |
|
1973 |
else:
|
1974 |
-
welcome_msg = generate_veterinary_welcome_message()
|
1975 |
send_whatsjet_message(from_number, welcome_msg)
|
1976 |
context_manager.update_context(from_number, current_state='main_menu', current_menu='main_menu', current_menu_options=list(MENU_CONFIG['main_menu']['option_descriptions'].values()))
|
1977 |
|
1978 |
except Exception as e:
|
1979 |
logger.error(f"[Menu] Error handling menu selection: {e}")
|
1980 |
-
welcome_msg = generate_veterinary_welcome_message()
|
1981 |
send_whatsjet_message(from_number, welcome_msg)
|
1982 |
context_manager.update_context(from_number, current_state='main_menu', current_menu='main_menu', current_menu_options=list(MENU_CONFIG['main_menu']['option_descriptions'].values()))
|
1983 |
|
@@ -2218,7 +2218,7 @@ Format your response professionally with emojis and clear structure. Keep it con
|
|
2218 |
except Exception as e:
|
2219 |
logger.error(f"Error in product inquiry: {e}")
|
2220 |
# Instead of sending a generic error, return to main menu
|
2221 |
-
welcome_msg = generate_veterinary_welcome_message()
|
2222 |
send_whatsjet_message(from_number, welcome_msg)
|
2223 |
context_manager.update_context(from_number, current_state='main_menu', current_menu='main_menu', current_menu_options=list(MENU_CONFIG['main_menu']['option_descriptions'].values()))
|
2224 |
|
@@ -2279,7 +2279,7 @@ Always keep responses professional, concise, and user-friendly.
|
|
2279 |
except Exception as e:
|
2280 |
logger.error(f"[AI] Error handling general query: {e}")
|
2281 |
# Instead of sending a generic error, return to main menu
|
2282 |
-
welcome_msg = generate_veterinary_welcome_message()
|
2283 |
send_whatsjet_message(from_number, welcome_msg)
|
2284 |
context_manager.update_context(
|
2285 |
from_number,
|
@@ -2311,7 +2311,7 @@ async def handle_contact_request(from_number: str):
|
|
2311 |
except Exception as e:
|
2312 |
logger.error(f"[Contact] Error handling contact request: {e}")
|
2313 |
# Instead of sending a generic error, return to main menu
|
2314 |
-
welcome_msg = generate_veterinary_welcome_message()
|
2315 |
send_whatsjet_message(from_number, welcome_msg)
|
2316 |
context_manager.update_context(
|
2317 |
from_number,
|
@@ -2368,7 +2368,7 @@ async def handle_contact_request_response(from_number: str, response: str):
|
|
2368 |
except Exception as e:
|
2369 |
logger.error(f"[Contact] Error handling contact response: {e}")
|
2370 |
# Instead of sending a generic error, return to main menu
|
2371 |
-
welcome_msg = generate_veterinary_welcome_message()
|
2372 |
send_whatsjet_message(from_number, welcome_msg)
|
2373 |
context_manager.update_context(
|
2374 |
from_number,
|
@@ -2407,7 +2407,7 @@ async def handle_availability_inquiry(from_number: str, user_context: dict):
|
|
2407 |
except Exception as e:
|
2408 |
logger.error(f"[Availability] Error handling availability inquiry: {e}")
|
2409 |
# Instead of sending a generic error, return to main menu
|
2410 |
-
welcome_msg = generate_veterinary_welcome_message()
|
2411 |
send_whatsjet_message(from_number, welcome_msg)
|
2412 |
context_manager.update_context(
|
2413 |
from_number,
|
@@ -2472,7 +2472,7 @@ async def handle_availability_request_response(from_number: str, response: str):
|
|
2472 |
except Exception as e:
|
2473 |
logger.error(f"[Availability] Error handling availability response: {e}")
|
2474 |
# Instead of sending a generic error, return to main menu
|
2475 |
-
welcome_msg = generate_veterinary_welcome_message()
|
2476 |
send_whatsjet_message(from_number, welcome_msg)
|
2477 |
context_manager.update_context(
|
2478 |
from_number,
|
@@ -2535,7 +2535,7 @@ def send_helpful_guidance(from_number: str, current_state: str):
|
|
2535 |
)
|
2536 |
except Exception as e:
|
2537 |
logger.error(f"Error sending helpful guidance: {e}")
|
2538 |
-
welcome_msg = generate_veterinary_welcome_message()
|
2539 |
send_whatsjet_message(from_number, welcome_msg)
|
2540 |
context_manager.update_context(
|
2541 |
from_number,
|
@@ -2690,7 +2690,7 @@ async def handle_ai_chat_mode(from_number: str, query: str, reply_language: str
|
|
2690 |
# Check for navigation commands first
|
2691 |
if query.lower().strip() in ['main', 'menu', 'start', 'home', 'back']:
|
2692 |
logger.info(f"[AI Chat] Navigation command detected: '{query}' -> returning to main menu")
|
2693 |
-
welcome_msg = generate_veterinary_welcome_message()
|
2694 |
send_whatsjet_message(from_number, welcome_msg)
|
2695 |
context_manager.update_context(
|
2696 |
from_number,
|
@@ -2703,7 +2703,7 @@ async def handle_ai_chat_mode(from_number: str, query: str, reply_language: str
|
|
2703 |
# Check for greetings - return to main menu
|
2704 |
if is_greeting(query):
|
2705 |
logger.info(f"[AI Chat] Greeting detected: '{query}' -> returning to main menu")
|
2706 |
-
welcome_msg = generate_veterinary_welcome_message()
|
2707 |
send_whatsjet_message(from_number, welcome_msg)
|
2708 |
context_manager.update_context(
|
2709 |
from_number,
|
@@ -2819,7 +2819,18 @@ Response:
|
|
2819 |
error_msg = "❌ AI Assistant encountered an error. Please try again or type 'main' to return to main menu."
|
2820 |
send_whatsjet_message(from_number, error_msg)
|
2821 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
2822 |
if __name__ == "__main__":
|
2823 |
# Launch FastAPI app
|
2824 |
import uvicorn
|
2825 |
-
uvicorn.run(app, host="0.0.0.0", port=7860)
|
|
|
1465 |
return
|
1466 |
else:
|
1467 |
# Only trigger menu mode if not in AI chat mode
|
1468 |
+
welcome_msg = generate_veterinary_welcome_message(from_number, user_context)
|
1469 |
send_whatsjet_message(from_number, welcome_msg)
|
1470 |
context_manager.update_context(
|
1471 |
from_number,
|
|
|
1481 |
mapped_navigation = process_intelligent_voice_command(message_body, current_state, user_context)
|
1482 |
if mapped_navigation == 'main':
|
1483 |
logger.info(f"[Process] Navigation command detected: '{message_body}' -> 'main'")
|
1484 |
+
welcome_msg = generate_veterinary_welcome_message(from_number, user_context)
|
1485 |
send_whatsjet_message(from_number, welcome_msg)
|
1486 |
context_manager.update_context(
|
1487 |
from_number,
|
|
|
1493 |
|
1494 |
# Also check for text-based main commands
|
1495 |
if message_body.lower() in ['main', 'menu', 'start', 'home', 'back']:
|
1496 |
+
welcome_msg = generate_veterinary_welcome_message(from_number, user_context)
|
1497 |
send_whatsjet_message(from_number, welcome_msg)
|
1498 |
context_manager.update_context(
|
1499 |
from_number,
|
|
|
1513 |
# Check for main navigation first
|
1514 |
if mapped_selection == 'main':
|
1515 |
logger.info(f"[Process] Main navigation from product_inquiry: '{message_body}' -> 'main'")
|
1516 |
+
welcome_msg = generate_veterinary_welcome_message(from_number, user_context)
|
1517 |
send_whatsjet_message(from_number, welcome_msg)
|
1518 |
context_manager.update_context(
|
1519 |
from_number,
|
|
|
1552 |
# Check for main navigation first
|
1553 |
if mapped_selection == 'main':
|
1554 |
logger.info(f"[Process] Main navigation from category_products_menu: '{message_body}' -> 'main'")
|
1555 |
+
welcome_msg = generate_veterinary_welcome_message(from_number, user_context)
|
1556 |
send_whatsjet_message(from_number, welcome_msg)
|
1557 |
context_manager.update_context(
|
1558 |
from_number,
|
|
|
1585 |
# Check for main navigation first
|
1586 |
if mapped_selection == 'main':
|
1587 |
logger.info(f"[Process] Main navigation from all_products_menu: '{message_body}' -> 'main'")
|
1588 |
+
welcome_msg = generate_veterinary_welcome_message(from_number, user_context)
|
1589 |
send_whatsjet_message(from_number, welcome_msg)
|
1590 |
context_manager.update_context(
|
1591 |
from_number,
|
|
|
1616 |
# Check for main navigation first
|
1617 |
if mapped_selection == 'main':
|
1618 |
logger.info(f"[Process] Main navigation from category_selection_menu: '{message_body}' -> 'main'")
|
1619 |
+
welcome_msg = generate_veterinary_welcome_message(from_number, user_context)
|
1620 |
send_whatsjet_message(from_number, welcome_msg)
|
1621 |
context_manager.update_context(
|
1622 |
from_number,
|
|
|
1857 |
return
|
1858 |
else:
|
1859 |
# Only trigger menu mode if not in AI chat mode
|
1860 |
+
welcome_msg = generate_veterinary_welcome_message(from_number, user_context)
|
1861 |
send_whatsjet_message(from_number, welcome_msg)
|
1862 |
context_manager.update_context(from_number, current_state='main_menu', current_menu='main_menu', current_menu_options=list(MENU_CONFIG['main_menu']['option_descriptions'].values()))
|
1863 |
return
|
|
|
1971 |
await handle_all_products_selection(from_number, selection, user_context)
|
1972 |
|
1973 |
else:
|
1974 |
+
welcome_msg = generate_veterinary_welcome_message(from_number, user_context)
|
1975 |
send_whatsjet_message(from_number, welcome_msg)
|
1976 |
context_manager.update_context(from_number, current_state='main_menu', current_menu='main_menu', current_menu_options=list(MENU_CONFIG['main_menu']['option_descriptions'].values()))
|
1977 |
|
1978 |
except Exception as e:
|
1979 |
logger.error(f"[Menu] Error handling menu selection: {e}")
|
1980 |
+
welcome_msg = generate_veterinary_welcome_message(from_number, user_context)
|
1981 |
send_whatsjet_message(from_number, welcome_msg)
|
1982 |
context_manager.update_context(from_number, current_state='main_menu', current_menu='main_menu', current_menu_options=list(MENU_CONFIG['main_menu']['option_descriptions'].values()))
|
1983 |
|
|
|
2218 |
except Exception as e:
|
2219 |
logger.error(f"Error in product inquiry: {e}")
|
2220 |
# Instead of sending a generic error, return to main menu
|
2221 |
+
welcome_msg = generate_veterinary_welcome_message(from_number, user_context)
|
2222 |
send_whatsjet_message(from_number, welcome_msg)
|
2223 |
context_manager.update_context(from_number, current_state='main_menu', current_menu='main_menu', current_menu_options=list(MENU_CONFIG['main_menu']['option_descriptions'].values()))
|
2224 |
|
|
|
2279 |
except Exception as e:
|
2280 |
logger.error(f"[AI] Error handling general query: {e}")
|
2281 |
# Instead of sending a generic error, return to main menu
|
2282 |
+
welcome_msg = generate_veterinary_welcome_message(from_number, user_context)
|
2283 |
send_whatsjet_message(from_number, welcome_msg)
|
2284 |
context_manager.update_context(
|
2285 |
from_number,
|
|
|
2311 |
except Exception as e:
|
2312 |
logger.error(f"[Contact] Error handling contact request: {e}")
|
2313 |
# Instead of sending a generic error, return to main menu
|
2314 |
+
welcome_msg = generate_veterinary_welcome_message(from_number, user_context)
|
2315 |
send_whatsjet_message(from_number, welcome_msg)
|
2316 |
context_manager.update_context(
|
2317 |
from_number,
|
|
|
2368 |
except Exception as e:
|
2369 |
logger.error(f"[Contact] Error handling contact response: {e}")
|
2370 |
# Instead of sending a generic error, return to main menu
|
2371 |
+
welcome_msg = generate_veterinary_welcome_message(from_number, user_context)
|
2372 |
send_whatsjet_message(from_number, welcome_msg)
|
2373 |
context_manager.update_context(
|
2374 |
from_number,
|
|
|
2407 |
except Exception as e:
|
2408 |
logger.error(f"[Availability] Error handling availability inquiry: {e}")
|
2409 |
# Instead of sending a generic error, return to main menu
|
2410 |
+
welcome_msg = generate_veterinary_welcome_message(from_number, user_context)
|
2411 |
send_whatsjet_message(from_number, welcome_msg)
|
2412 |
context_manager.update_context(
|
2413 |
from_number,
|
|
|
2472 |
except Exception as e:
|
2473 |
logger.error(f"[Availability] Error handling availability response: {e}")
|
2474 |
# Instead of sending a generic error, return to main menu
|
2475 |
+
welcome_msg = generate_veterinary_welcome_message(from_number, user_context)
|
2476 |
send_whatsjet_message(from_number, welcome_msg)
|
2477 |
context_manager.update_context(
|
2478 |
from_number,
|
|
|
2535 |
)
|
2536 |
except Exception as e:
|
2537 |
logger.error(f"Error sending helpful guidance: {e}")
|
2538 |
+
welcome_msg = generate_veterinary_welcome_message(from_number, user_context)
|
2539 |
send_whatsjet_message(from_number, welcome_msg)
|
2540 |
context_manager.update_context(
|
2541 |
from_number,
|
|
|
2690 |
# Check for navigation commands first
|
2691 |
if query.lower().strip() in ['main', 'menu', 'start', 'home', 'back']:
|
2692 |
logger.info(f"[AI Chat] Navigation command detected: '{query}' -> returning to main menu")
|
2693 |
+
welcome_msg = generate_veterinary_welcome_message(from_number, user_context)
|
2694 |
send_whatsjet_message(from_number, welcome_msg)
|
2695 |
context_manager.update_context(
|
2696 |
from_number,
|
|
|
2703 |
# Check for greetings - return to main menu
|
2704 |
if is_greeting(query):
|
2705 |
logger.info(f"[AI Chat] Greeting detected: '{query}' -> returning to main menu")
|
2706 |
+
welcome_msg = generate_veterinary_welcome_message(from_number, user_context)
|
2707 |
send_whatsjet_message(from_number, welcome_msg)
|
2708 |
context_manager.update_context(
|
2709 |
from_number,
|
|
|
2819 |
error_msg = "❌ AI Assistant encountered an error. Please try again or type 'main' to return to main menu."
|
2820 |
send_whatsjet_message(from_number, error_msg)
|
2821 |
|
2822 |
+
def generate_veterinary_welcome_message(phone_number, user_context):
|
2823 |
+
return (
|
2824 |
+
"👋 Welcome to Apex Biotical Veterinary WhatsApp Bot!\n"
|
2825 |
+
"How can I assist you today?\n"
|
2826 |
+
"1️⃣ Search Products\n"
|
2827 |
+
"2️⃣ Browse Categories\n"
|
2828 |
+
"3️⃣ Download Catalog\n"
|
2829 |
+
"4️⃣ Chat with Veterinary AI Assistant\n"
|
2830 |
+
"Please reply with a number (1-4) or type your question."
|
2831 |
+
)
|
2832 |
+
|
2833 |
if __name__ == "__main__":
|
2834 |
# Launch FastAPI app
|
2835 |
import uvicorn
|
2836 |
+
uvicorn.run(app, host="0.0.0.0", port=7860)
|