voicemenuspe / app.py
lokesh341's picture
Update app.py
c1d8f2a verified
raw
history blame
4.51 kB
import torch
from flask import Flask, render_template, request, jsonify, redirect, session, url_for
import json
import os
from transformers import pipeline
from gtts import gTTS
from pydub import AudioSegment
from pydub.silence import detect_nonsilent
from transformers import AutoConfig
import time
from waitress import serve
from simple_salesforce import Salesforce
import requests
# βœ… Initialize Flask App
app = Flask(__name__, template_folder="templates")
app.secret_key = os.urandom(24)
# βœ… Enable Debug Mode
app.config["DEBUG"] = True
# βœ… Salesforce Connection Setup
try:
print("Attempting to connect to Salesforce...")
sf = Salesforce(username='[email protected]',
password='Sati@1020',
security_token='sSSjyhInIsUohKpG8sHzty2q')
print("βœ… Connected to Salesforce successfully!")
except Exception as e:
print(f"❌ Failed to connect to Salesforce: {str(e)}")
# βœ… Print All Available Routes at Startup
@app.before_request
def print_routes():
if not hasattr(app, 'printed_routes'):
app.printed_routes = True
print("\nβœ… Available Routes:")
for rule in app.url_map.iter_rules():
print(f"➑ {rule}")
# βœ… ROUTE: List All Routes for Debugging
@app.route("/routes", methods=["GET"])
def list_routes():
routes = []
for rule in app.url_map.iter_rules():
routes.append({"endpoint": rule.endpoint, "route": str(rule)})
return jsonify({"available_routes": routes})
# βœ… HOME ROUTE
@app.route("/", methods=["GET"])
def home():
return jsonify({"message": "Welcome to Biryani Hub API. Use /register, /login, /menu, /index, /dashboard, or /routes to check available endpoints."})
# βœ… RENDER INDEX.HTML (Register & Login Page)
@app.route("/index", methods=["GET"])
def index_page():
return render_template("index.html")
# βœ… RENDER DASHBOARD
@app.route("/dashboard", methods=["GET"])
def dashboard():
return render_template("dashboard.html")
# βœ… REGISTER API: Create a new Customer in Salesforce
@app.route("/register", methods=["POST"])
def register():
print("➑ Register API hit")
data = request.json
if not data or "name" not in data or "email" not in data or "phone" not in data:
return jsonify({"error": "Missing required fields"}), 400
try:
new_customer = sf.Customer_Login__c.create({
'Name': data["name"],
'Email__c': data["email"],
'Phone_Number__c': data["phone"]
})
return jsonify({"success": True, "message": "Registration successful", "customer_id": new_customer["id"]})
except Exception as e:
return jsonify({"error": f"Failed to register: {str(e)}"}), 500
# βœ… LOGIN API: Validate User Credentials
@app.route("/login", methods=["POST"])
def login():
print("➑ Login API hit")
data = request.json
if not data or "email" not in data or "phone" not in data:
return jsonify({"error": "Missing email or phone"}), 400
try:
query = f"SELECT Id, Name FROM Customer_Login__c WHERE Email__c = '{data['email']}' AND Phone_Number__c = '{data['phone']}'"
result = sf.query(query)
if result["totalSize"] > 0:
user = result["records"][0]
session["customer_id"] = user["Id"] # Store in session
return jsonify({"success": True, "message": "Login successful", "customer_id": user["Id"], "name": user["Name"]})
else:
return jsonify({"error": "Invalid login credentials"}), 401
except Exception as e:
return jsonify({"error": f"Login failed: {str(e)}"}), 500
# βœ… MENU API: Fetch Menu Items from Salesforce
@app.route("/menu", methods=["GET"])
def get_menu():
print("➑ Menu API hit")
try:
query = "SELECT Name, Price__c, Ingredients__c, Category__c FROM Menu_Item__c"
result = sf.query(query)
menu_items = []
for item in result["records"]:
menu_items.append({
"name": item["Name"],
"price": item["Price__c"],
"ingredients": item["Ingredients__c"],
"category": item["Category__c"]
})
return jsonify({"success": True, "menu": menu_items})
except Exception as e:
return jsonify({"error": f"Failed to fetch menu: {str(e)}"}), 500
# βœ… START PRODUCTION SERVER
if __name__ == "__main__":
print("βœ… Starting Flask API Server on port 7860...")
serve(app, host="0.0.0.0", port=7860)