import torch from flask import Flask, render_template, request, jsonify, redirect 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 AutoConfig for the config object import time from waitress import serve from simple_salesforce import Salesforce import requests # Import requests for exception handling app = Flask(__name__) device = "cuda" if torch.cuda.is_available() else "cpu" config = AutoConfig.from_pretrained("openai/whisper-small") config.update({"timeout": 60}) try: sf = Salesforce(username='diggavalli98@gmail.com', password='Sati@1020', security_token='sSSjyhInIsUohKpG8sHzty2q') except Exception as e: print(f"Failed to connect to Salesforce: {str(e)}") def create_salesforce_record(sf, name, email, phone_number): try: customer_login = sf.Customer_Login__c.create({ 'Name': name, 'Email__c': email, 'Phone_Number__c': phone_number }) return customer_login except Exception as e: raise Exception(f"Failed to create record: {str(e)}") def get_menu_items(sf): query = "SELECT Name, Price__c, Ingredients__c, Category__c FROM Menu_Item__c" result = sf.query(query) return result['records'] @app.route("/") def index(): return render_template("index.html") @app.route("/dashboard", methods=["GET"]) def dashboard(): return render_template("dashboard.html") @app.route('/login', methods=['POST']) def login(): data = request.json name = data.get('name') email = data.get('email') phone_number = data.get('phone_number') if not name or not email or not phone_number: return jsonify({'error': 'Missing required fields'}), 400 try: create_salesforce_record(sf, name, email, phone_number) return redirect("/menu") except Exception as e: return jsonify({'error': f'Failed to create record in Salesforce: {str(e)}'}), 500 @app.route("/menu", methods=["GET"]) def menu_page(): menu_items = get_menu_items(sf) menu_data = [{"name": item['Name'], "price": item['Price__c'], "ingredients": item['Ingredients__c'], "category": item['Category__c']} for item in menu_items] return render_template("menu_page.html", menu_items=menu_data) @app.route("/cart", methods=["GET"]) def cart(): return render_template("cart_page.html") @app.route("/order-summary", methods=["GET"]) def order_summary(): return render_template("order_summary.html") @app.route("/final_order", methods=["GET"]) def final_order(): return render_template("final_order.html") if __name__ == "__main__": serve(app, host="0.0.0.0", port=7860)