diff --git a/admin/class-twp-admin.php b/admin/class-twp-admin.php index 173fd2d..df6fc82 100644 --- a/admin/class-twp-admin.php +++ b/admin/class-twp-admin.php @@ -400,13 +400,24 @@ class TWP_Admin {

Call Settings

+ + + + + @@ -3019,6 +3030,7 @@ class TWP_Admin { register_setting('twilio-wp-settings-group', 'twp_elevenlabs_api_key'); register_setting('twilio-wp-settings-group', 'twp_elevenlabs_voice_id'); register_setting('twilio-wp-settings-group', 'twp_elevenlabs_model_id'); + register_setting('twilio-wp-settings-group', 'twp_default_queue_music_url'); register_setting('twilio-wp-settings-group', 'twp_hold_music_url'); register_setting('twilio-wp-settings-group', 'twp_default_queue_timeout'); register_setting('twilio-wp-settings-group', 'twp_default_queue_size'); @@ -6924,7 +6936,12 @@ class TWP_Admin { if ($hold) { // Place call on hold with music - $hold_music_url = get_option('twp_hold_music_url', 'https://api.twilio.com/cowbell.mp3'); + $hold_music_url = get_option('twp_hold_music_url', ''); + if (empty($hold_music_url)) { + // Fall back to default queue music if no hold music is set + $hold_music_url = get_option('twp_default_queue_music_url', 'https://api.twilio.com/cowbell.mp3'); + } + $twiml = new \Twilio\TwiML\VoiceResponse(); $twiml->play($hold_music_url, ['loop' => 0]); diff --git a/includes/class-twp-webhooks.php b/includes/class-twp-webhooks.php index 31e50a0..5dd2bad 100644 --- a/includes/class-twp-webhooks.php +++ b/includes/class-twp-webhooks.php @@ -973,8 +973,14 @@ class TWP_Webhooks { if ($queue && !empty($queue->wait_music_url)) { $play = $twiml->addChild('Play', $queue->wait_music_url); } else { - $pause = $twiml->addChild('Pause'); - $pause->addAttribute('length', '30'); + // Fall back to default queue music if no queue-specific music is set + $default_music_url = get_option('twp_default_queue_music_url', ''); + if (!empty($default_music_url)) { + $play = $twiml->addChild('Play', $default_music_url); + } else { + $pause = $twiml->addChild('Pause'); + $pause->addAttribute('length', '30'); + } } return $this->send_twiml_response($twiml->asXML()); @@ -996,9 +1002,15 @@ class TWP_Webhooks { if ($queue && !empty($queue->wait_music_url)) { $play = $twiml->addChild('Play', $queue->wait_music_url); } else { - // Add a pause to prevent rapid loops - $pause = $twiml->addChild('Pause'); - $pause->addAttribute('length', '15'); // 15 second pause + // Fall back to default queue music if no queue-specific music is set + $default_music_url = get_option('twp_default_queue_music_url', ''); + if (!empty($default_music_url)) { + $play = $twiml->addChild('Play', $default_music_url); + } else { + // Add a pause to prevent rapid loops + $pause = $twiml->addChild('Pause'); + $pause->addAttribute('length', '15'); // 15 second pause + } } // Redirect back to this same endpoint to create continuous loop
Default Queue Music URL + +

Default music for queue wait times and call hold when no specific music is set. Must be publicly accessible MP3 or WAV file.

+
Hold Music URL -

URL to audio file to play when calls are placed on hold. Must be publicly accessible MP3 or WAV file.

+ value="" + class="regular-text" + placeholder="Leave empty to use default queue music" /> +

Specific music for when calls are placed on hold. Leave empty to use the default queue music above.

Suggested sources: Upload to your Media Library or use a service like Freesound.org for royalty-free music.