twilio project revision

This commit is contained in:
2025-08-06 16:04:03 -07:00
parent c6edbbeba7
commit b5e091d845
3 changed files with 289 additions and 69 deletions

View File

@@ -1594,14 +1594,26 @@ class TWP_Admin {
<?php
// Get Twilio phone numbers
$twilio = new TWP_Twilio_API();
$numbers = $twilio->get_phone_numbers();
$numbers_result = $twilio->get_phone_numbers();
if ($numbers['success'] && is_array($numbers['numbers'])) {
foreach ($numbers['numbers'] as $number) {
echo '<option value="' . esc_attr($number['phone_number']) . '">' . esc_html($number['phone_number']) . '</option>';
if ($numbers_result['success'] && isset($numbers_result['data']['incoming_phone_numbers'])) {
$numbers = $numbers_result['data']['incoming_phone_numbers'];
if (is_array($numbers) && !empty($numbers)) {
foreach ($numbers as $number) {
echo '<option value="' . esc_attr($number['phone_number']) . '">' . esc_html($number['phone_number']) . '</option>';
}
} else {
echo '<option value="" disabled>No phone numbers found - purchase a number first</option>';
}
} else {
echo '<option value="" disabled>No phone numbers available - purchase a number first</option>';
echo '<option value="" disabled>Error loading phone numbers - check API credentials</option>';
if (isset($numbers_result['error'])) {
echo '<option value="" disabled>Error: ' . esc_html($numbers_result['error']) . '</option>';
}
// Debug info for troubleshooting
if (current_user_can('manage_options') && WP_DEBUG) {
echo '<option value="" disabled>Debug: ' . esc_html(json_encode($numbers_result)) . '</option>';
}
}
?>
</select>
@@ -2944,25 +2956,30 @@ class TWP_Admin {
private function initiate_outbound_call_with_from($from_number, $to_number, $agent_phone) {
$twilio = new TWP_Twilio_API();
// Build webhook URL with parameters
$webhook_url = home_url('/wp-json/twilio-webhook/v1/outbound-agent-with-from') . '?' . http_build_query(array(
'target_number' => $to_number,
'agent_user_id' => get_current_user_id(),
'from_number' => $from_number
));
// First call the agent
$agent_call_result = $twilio->make_call(
$agent_phone,
home_url('/wp-json/twilio-webhook/v1/outbound-agent-with-from'),
array(
'target_number' => $to_number,
'agent_user_id' => get_current_user_id(),
'from_number' => $from_number
),
$webhook_url,
null, // No status callback needed for this
$from_number // Use specified from number
);
if ($agent_call_result['success']) {
$call_sid = isset($agent_call_result['data']['sid']) ? $agent_call_result['data']['sid'] : null;
// Set agent to busy
TWP_Agent_Manager::set_agent_status(get_current_user_id(), 'busy', $agent_call_result['call_sid']);
TWP_Agent_Manager::set_agent_status(get_current_user_id(), 'busy', $call_sid);
// Log the outbound call
TWP_Call_Logger::log_call(array(
'call_sid' => $agent_call_result['call_sid'],
'call_sid' => $call_sid,
'from_number' => $from_number,
'to_number' => $to_number,
'status' => 'outbound_initiated',
@@ -2975,7 +2992,7 @@ class TWP_Admin {
))
));
return array('success' => true, 'call_sid' => $agent_call_result['call_sid']);
return array('success' => true, 'call_sid' => $call_sid);
}
return array('success' => false, 'error' => $agent_call_result['error']);