post_content, 'twp_browser_phone')) { // Enqueue Twilio Voice SDK from unpkg CDN (same as backend) wp_enqueue_script( 'twilio-voice-sdk', 'https://unpkg.com/@twilio/voice-sdk@2.11.0/dist/twilio.min.js', array(), '2.11.0', false // Load in head to ensure it's available ); // Add backup SDK loading wp_add_inline_script('twilio-voice-sdk', " window.twpLoadTwilioSDK = function() { if (typeof Twilio === 'undefined') { console.warn('Primary Twilio SDK failed, attempting fallback load'); var script = document.createElement('script'); script.src = 'https://unpkg.com/@twilio/voice-sdk@2.11.0/dist/twilio.min.js'; script.onload = function() { console.log('Fallback Twilio SDK loaded'); }; script.onerror = function() { console.error('Fallback Twilio SDK failed'); }; document.head.appendChild(script); } }; // Try loading after a delay if not available setTimeout(window.twpLoadTwilioSDK, 2000); ", 'after'); // Enqueue our browser phone script wp_enqueue_script( 'twp-browser-phone-frontend', TWP_PLUGIN_URL . 'assets/js/browser-phone-frontend.js', array('jquery', 'twilio-voice-sdk'), TWP_VERSION, true ); // Enqueue mobile-friendly styles wp_enqueue_style( 'twp-browser-phone-frontend', TWP_PLUGIN_URL . 'assets/css/browser-phone-frontend.css', array(), TWP_VERSION ); // Localize script with AJAX data wp_localize_script('twp-browser-phone-frontend', 'twp_frontend_ajax', array( 'ajax_url' => admin_url('admin-ajax.php'), 'admin_url' => admin_url(), 'nonce' => wp_create_nonce('twp_frontend_nonce'), 'user_id' => get_current_user_id(), 'is_logged_in' => is_user_logged_in() )); } } /** * Browser phone shortcode handler */ public static function browser_phone_shortcode($atts) { // Check if user is logged in if (!is_user_logged_in()) { return '
You must be logged in to access the browser phone.
'; } // Check if user has permission if (!current_user_can('twp_access_browser_phone') && !current_user_can('manage_options')) { return '
You don\'t have permission to access the browser phone.
'; } // Parse shortcode attributes $atts = shortcode_atts(array( 'title' => 'Browser Phone', 'show_title' => 'true', 'compact' => 'false' ), $atts, 'twp_browser_phone'); $show_title = ($atts['show_title'] === 'true'); $compact_mode = ($atts['compact'] === 'true'); ob_start(); ?>

Connecting...

Your Queues

Loading queues...

Recent Voicemails

Total: 0 | Today: 0