voicemenu1433 / app.py
lokesh341's picture
Update app.py
5ef3837 verified
raw
history blame
4.19 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__)
app.secret_key = os.urandom(24) # For session handling
# βœ… 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)}")
# βœ… List All Routes at Startup
@app.before_first_request
def print_routes():
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, or /routes to check available endpoints."})
# βœ… REGISTER API: Create a new Customer in Salesforce
@app.route("/register", methods=["POST"])
def register():
print("➑ Register API hit")
data = request.json
name = data.get("name")
email = data.get("email")
phone_number = data.get("phone")
if not name or not email or not phone_number:
return jsonify({"error": "Missing required fields"}), 400
try:
new_customer = sf.Customer_Login__c.create({
'Name': name,
'Email__c': email,
'Phone_Number__c': phone_number
})
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
email = data.get("email")
phone_number = data.get("phone")
if not email or not phone_number:
return jsonify({"error": "Missing email or phone"}), 400
try:
query = f"SELECT Id, Name FROM Customer_Login__c WHERE Email__c = '{email}' AND Phone_Number__c = '{phone_number}'"
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)