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)
|