diff --git a/rotary_phone_web.py b/rotary_phone_web.py index 9ff2465..0d46679 100644 --- a/rotary_phone_web.py +++ b/rotary_phone_web.py @@ -105,16 +105,19 @@ class RotaryPhone: "active_greeting": SYS_CONFIG['system']['active_greeting'], "extra_button_sound": SYS_CONFIG['system'].get('extra_button_sound', 'button_sound.wav'), "greetings": [], - "volume": SYS_CONFIG['system']['volume'] + "volume": SYS_CONFIG['system']['volume'], + "greeting_delay": SYS_CONFIG['system'].get('greeting_delay_seconds', 0) } if os.path.exists(USER_CONFIG_FILE): try: with open(USER_CONFIG_FILE, 'r') as f: config = json.load(f) - # Ensure volume key exists + # Ensure required keys exist if "volume" not in config: config["volume"] = SYS_CONFIG['system']['volume'] + if "greeting_delay" not in config: + config["greeting_delay"] = SYS_CONFIG['system'].get('greeting_delay_seconds', 0) return config except: pass @@ -156,6 +159,17 @@ class RotaryPhone: def get_volume(self): """Get current volume setting""" return self.config.get("volume", 70) + + def set_greeting_delay(self, delay): + """Set greeting delay in seconds (0-10)""" + delay = max(0, min(10, int(delay))) # Clamp between 0-10 + self.config["greeting_delay"] = delay + self.save_config() + return delay + + def get_greeting_delay(self): + """Get current greeting delay""" + return self.config.get("greeting_delay", 0) def generate_default_dialtone(self): """Generate a classic dial tone (350Hz + 440Hz) and save as default""" @@ -349,7 +363,7 @@ class RotaryPhone: print("\n=== Handset picked up ===") # Apply greeting delay if configured - greeting_delay = SYS_CONFIG['system'].get('greeting_delay_seconds', 0) + greeting_delay = self.get_greeting_delay() if greeting_delay > 0: print(f"Waiting {greeting_delay} seconds before greeting...") time.sleep(greeting_delay) @@ -390,6 +404,7 @@ def index(): active_greeting = phone.config.get("active_greeting", "dialtone.wav") extra_button_sound = phone.config.get("extra_button_sound", "button_sound.wav") volume = phone.get_volume() + greeting_delay = phone.get_greeting_delay() return render_template('index.html', recordings=recordings, @@ -398,7 +413,8 @@ def index(): extra_button_sound=extra_button_sound, extra_button_enabled=EXTRA_BUTTON_ENABLED, status=status, - volume=volume) + volume=volume, + greeting_delay=greeting_delay) @app.route('/api/status') def api_status(): @@ -428,6 +444,19 @@ def api_set_volume(): new_volume = phone.set_volume(volume) return jsonify({"success": True, "volume": new_volume}) +@app.route('/api/greeting_delay', methods=['GET']) +def api_get_greeting_delay(): + """Get current greeting delay setting""" + return jsonify({"delay": phone.get_greeting_delay()}) + +@app.route('/api/greeting_delay', methods=['POST']) +def api_set_greeting_delay(): + """Set greeting delay in seconds""" + data = request.get_json() + delay = data.get('delay', 0) + new_delay = phone.set_greeting_delay(delay) + return jsonify({"success": True, "delay": new_delay}) + @app.route('/upload_greeting', methods=['POST']) def upload_greeting(): """Upload a new greeting message""" @@ -1065,10 +1094,13 @@ if __name__ == "__main__": - +
-

🔊 Volume Control

-
+

🔊 Volume & Delay Control

+ + +
+

Volume

🔇 🔊 {{ volume }}%
-

- Adjust the playback volume for greeting messages +

+ Playback volume for greeting messages +

+
+ + +
+

Greeting Delay

+
+ ⏱️ + + + {{ greeting_delay }}s +
+

+ Delay before greeting plays after pickup (0-10 seconds)

@@ -1244,6 +1291,7 @@ if __name__ == "__main__":